10 Gb to niezbyt duża ilość danych, więc prawdopodobnie możesz użyć bazy danych do jej przechowywania i nie będziesz mieć większych problemów, ale oczywiście najlepiej jest korzystać z systemu plików pod kątem wydajności, a z punktu widzenia zarządzania bezpieczeństwem lepiej jest użyć bazy danych (kopie zapasowe i spójność).
Na szczęście Sql Server 2008 pozwala Ci mieć ciastko i je zjeść dzięki:
Atrybut FILESTREAM
W SQL Server 2008 można zastosować atrybut FILESTREAM do kolumny varbinary, a następnie SQL Server przechowuje dane dla tej kolumny w lokalnym systemie plików NTFS. Przechowywanie danych w systemie plików przynosi dwie kluczowe korzyści:
- Wydajność odpowiada wydajności przesyłania strumieniowego systemu plików.
- Rozmiar BLOB jest ograniczony tylko przez rozmiar woluminu systemu plików.
Kolumną można jednak zarządzać tak jak każdą inną kolumną BLOB w programie SQL Server, dzięki czemu administratorzy mogą korzystać z funkcji zarządzania i zabezpieczeń programu SQL Server, aby zintegrować zarządzanie danymi BLOB z resztą danych w relacyjnej bazie danych — bez konieczności zarządzania dane systemu plików oddzielnie.
Zdefiniowanie danych jako kolumny FILESTREAM w programie SQL Server zapewnia również spójność na poziomie danych między danymi relacyjnymi w bazie danych a danymi bez struktury, które są fizycznie przechowywane w systemie plików. Kolumna FILESTREAM zachowuje się dokładnie tak samo jak kolumna BLOB, co oznacza pełną integrację operacji konserwacyjnych, takich jak tworzenie kopii zapasowych i przywracanie, pełną integrację z modelem bezpieczeństwa SQL Server oraz pełną obsługę transakcji.
Deweloperzy aplikacji mogą pracować z danymi FILESTREAM za pomocą jednego z dwóch modeli programowania; mogą używać Transact-SQL do uzyskiwania dostępu do danych i manipulowania nimi, tak jak w przypadku standardowych kolumn BLOB, lub mogą używać interfejsów API przesyłania strumieniowego Win32 z semantyką transakcyjną Transact-SQL, aby zapewnić spójność, co oznacza, że mogą używać standardowych wywołań odczytu/zapisu Win32 do FILESTREAM BLOBy, tak jak w przypadku interakcji z plikami w systemie plików.
W SQL Server 2008 kolumny FILESTREAM mogą przechowywać dane tylko na woluminach dysków lokalnych, a niektóre funkcje, takie jak przezroczyste szyfrowanie i parametry z wartościami przechowywanymi w tabeli, nie są obsługiwane dla kolumn FILESTREAM. Ponadto nie można używać tabel zawierających kolumny FILESTREAM w migawkach bazy danych lub sesjach dublowania bazy danych, chociaż przesyłanie dzienników jest obsługiwane.