1. O co chodzi z FILESTREAM?
87. spotkanie PLSSUG Warszawa, 07.05.2015.
2. O czym będzie?
Trzymać pliki w bazie, czy w systemie plików?
Czym jest FILESTREAM?
Jak go skonfigurować i używać?
Jak on wygląda w środku?
Jak używać z poziomu .NET
Gdzie łyżka dziegciu w tej beczce miodu?
I czym jest FILETABLE?
3. O mnie
Bartosz Ratajczyk
programista baz danych
(i aplikacji)
czasem też administrator
T-SQL, ETL, C#, PHP, JS, SAS 4GL
http://bartekr.net | b.ratajczyk@gmail.com
MCTS SQL Server 2008, MCSA SQL Server 2012
4. Pliki w bazie czy w systemie?
Dane w bazie Dane w systemie plików
Zalety:
Spójność transakcyjna
Wszystkie dane w jednym miejscu
Jedno środowisko przechowywania i
odpytywania danych
Zalety:
Oszczędność miejsca w bazie
Rozmiar pliku ograniczony tylko przez
system operacyjny i miejsce na dysku
Wydajne pobieranie danych
Wady:
Duże obiekty potrzebują dużo pamięci
Varbinary(max) przechowa najwyżej
2GB danych
Aktualizacja może spowodować dużą
fragmentację bazy danych
Duże pliki bazy danych
Wady:
Separacja logiczna i fizyczna danych
Baza danych nie wie o zmianach w
systemie plików
Operacje ręczne na poziomie systemu
plików wpływają na spójność danych
Wymagana dedykowana obsługa
plików
5. To może FILESTREAM?
ZALETY
Spójność transakcyjna
Wszystkie dane w jednym miejscu
Jedno środowisko przechowywania i odpytywania danych
Oszczędność miejsca w bazie
Rozmiar pliku ograniczony tylko przez system operacyjny i
miejsce na dysku
Wydajne pobieranie danych
Zmniejsza rozmiar logu transakcyjnego
(o wadach będzie później)
9. Czy T-SQL jest wydajny?
Read performance of various BLOB sizes, źródło: FILESTREAM Storage in SQL Server 2008,
https://msdn.microsoft.com/en-us/library/hh461480.aspx
12. Kilka zaleceń
Stosuj FILESTREAM dla plików > 1MB
Nie nadużywaj T-SQL, raczej korzystaj z API
Użyj kolumny wyliczanej do przechowywania
rozmiaru danych
Przechowuj pliki FILESTREAM na oddzielnych
dyskach
Wyłącz generowanie nazw plików 8.3
13. No a te wady?
Database SNAPSHOT nie obsługuje grup
FILESTREAM
Database Mirroring nie obsługuje FILESTREAM
TDE nie obsługuje szyfrowania plików w
grupach FILESTREAM
Kompresja SQL Server nie dotyczy plików w
grupach FILESTREAM
14. Linki i źródła
Kalen Delaney „Microsoft SQL Server 2012
Internals”
Jacob Sebastian & Sven Aelterman „The Art of
SQL Server FILESTREAM”
https://technet.microsoft.com/en-
us/library/hh393573%28v=sql.110%29.aspx -
FILESTREAM (OLTP)---a Technical Reference
Guide for Designing Mission-Critical OLTP
Solutions
15. Co zapamiętać
• FILESTREAM włącza przechowywanie danych
w systemie plików, ale dostępnych z poziomu
bazy
• Ułatwia zarządzanie i obsługę plików z
poziomu T-SQL, ale zaleca korzystanie z API
• FILETABLE upraszcza obsługę plików w bazie
przez udostępnienie zasobu sieciowego