10 Gb er ikke ret stor mængde data, så du kan sikkert bruge databasen til at gemme dem og har ingen store problemer, men selvfølgelig er det bedst ydelsesmæssigt at bruge filsystemet, og sikkerhedsstyringsmæssigt er det bedre at bruge DB'en (sikkerhedskopier og konsistens).
Heldigvis giver Sql Server 2008 dig mulighed for at få din kage og også spise den med:
FILESTREAM-attributten
I SQL Server 2008 kan du anvende FILESTREAM-attributten til en varbinær kolonne, og SQL Server gemmer derefter dataene for den kolonne på det lokale NTFS-filsystem. Lagring af data på filsystemet giver to vigtige fordele:
- Ydeevnen matcher filsystemets streamingydelse.
- BLOB-størrelse er kun begrænset af filsystemets volumenstørrelse.
Kolonnen kan dog administreres ligesom enhver anden BLOB-kolonne i SQL Server, så administratorer kan bruge SQL Servers administrations- og sikkerhedsfunktioner til at integrere BLOB-dataadministration med resten af dataene i relationsdatabasen – uden at skulle administrere filsystemdata separat.
Definition af dataene som en FILESTREAM-kolonne i SQL Server sikrer også overensstemmelse på dataniveau mellem de relationelle data i databasen og de ustrukturerede data, der fysisk er lagret på filsystemet. En FILESTREAM-kolonne opfører sig nøjagtigt det samme som en BLOB-kolonne, hvilket betyder fuld integration af vedligeholdelsesoperationer såsom backup og gendannelse, komplet integration med SQL Server-sikkerhedsmodellen og fuld-transaktionsunderstøttelse.
Applikationsudviklere kan arbejde med FILESTREAM-data gennem en af to programmeringsmodeller; de kan bruge Transact-SQL til at få adgang til og manipulere dataene ligesom standard BLOB-kolonner, eller de kan bruge Win32 streaming API'er med Transact-SQL transaktionssemantik for at sikre konsistens, hvilket betyder, at de kan bruge standard Win32 læse/skrive kald til FILESTREAM BLOB'er, som de ville, hvis de interagerer med filer på filsystemet.
I SQL Server 2008 kan FILESTREAM-kolonner kun gemme data på lokale diskenheder, og nogle funktioner såsom transparent kryptering og tabelværdiparametre understøttes ikke for FILESTREAM-kolonner. Derudover kan du ikke bruge tabeller, der indeholder FILESTREAM-kolonner i databasesnapshots eller databasespejlingssessioner, selvom logforsendelse er understøttet.