o co chodzi z filestream?

15
O co chodzi z FILESTREAM? 87. spotkanie PLSSUG Warszawa, 07.05.2015.

Upload: bartosz-ratajczyk

Post on 05-Aug-2015

211 views

Category:

Data & Analytics


1 download

TRANSCRIPT

Page 1: O co chodzi z FILESTREAM?

O co chodzi z FILESTREAM?

87. spotkanie PLSSUG Warszawa, 07.05.2015.

Page 2: O co chodzi z FILESTREAM?

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 .NETGdzie łyżka dziegciu w tej beczce miodu?I czym jest FILETABLE?

Page 3: O co chodzi z FILESTREAM?

O mnieBartosz Ratajczyk

programista baz danych(i aplikacji)

czasem też administrator

T-SQL, ETL, C#, PHP, JS, SAS 4GL

http://bartekr.net | [email protected]

MCTS SQL Server 2008, MCSA SQL Server 2012

Page 4: O co chodzi z FILESTREAM?

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

Page 5: O co chodzi z FILESTREAM?

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)

Page 6: O co chodzi z FILESTREAM?

Włączanie (1) - WINDOWS

Page 7: O co chodzi z FILESTREAM?

Włączanie (2) - INSTANCJA

EXEC sp_configure 'filestream access level', <level>

Page 8: O co chodzi z FILESTREAM?

T-SQL

FILEGROUP:CONTAINS FILESTREAM

TABELA:VARBINARY(MAX) FILESTREAMUNIQUEIDENTIFIER [UNIQUE] NOT

NULL ROWGUIDCOL

Page 9: O co chodzi z FILESTREAM?

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

Page 10: O co chodzi z FILESTREAM?

.NET

SqlConnection(„Integrated Security=true”)PathName()GET_FILESTREAM_TRANSACTION_CONTEXT()Zawsze wymaga transakcji, nawet przy samym

odczycieZamknij strumień przed zatwierdzeniem

transakcji

Page 11: O co chodzi z FILESTREAM?

FILETABLE

Bazuje na FILESTREAMUproszczona interakcja z systemem plikówPredefiniowana struktura tabeliDostęp z poziomu zasobu po włączeniu

NON_TRANSACTED_ACCESS

Page 12: O co chodzi z FILESTREAM?

Kilka zaleceń

Stosuj FILESTREAM dla plików > 1MBNie nadużywaj T-SQL, raczej korzystaj z APIUżyj kolumny wyliczanej do przechowywania

rozmiaru danychPrzechowuj pliki FILESTREAM na oddzielnych

dyskachWyłącz generowanie nazw plików 8.3

Page 13: O co chodzi z FILESTREAM?

No a te wady?

Database SNAPSHOT nie obsługuje grup FILESTREAM

Database Mirroring nie obsługuje FILESTREAMTDE nie obsługuje szyfrowania plików w

grupach FILESTREAMKompresja SQL Server nie dotyczy plików w

grupach FILESTREAM

Page 14: O co chodzi z FILESTREAM?

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

Page 15: O co chodzi z FILESTREAM?

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