10 Gb is niet echt een enorme hoeveelheid gegevens, dus je kunt de database waarschijnlijk gebruiken om het op te slaan en heb geen grote problemen, maar natuurlijk is het qua prestaties het beste om het bestandssysteem te gebruiken, en qua veiligheidsbeheer is het beter om de DB te gebruiken (back-ups en consistentie).
Gelukkig kun je met Sql Server 2008 je cake hebben en ook opeten, met:
Het FILESTREAM-kenmerk
In SQL Server 2008 kunt u het kenmerk FILESTREAM toepassen op een varbinaire kolom, waarna SQL Server de gegevens voor die kolom op het lokale NTFS-bestandssysteem opslaat. Het opslaan van de gegevens op het bestandssysteem biedt twee belangrijke voordelen:
- Prestaties komen overeen met de streamingprestaties van het bestandssysteem.
- De BLOB-grootte wordt alleen beperkt door de volumegrootte van het bestandssysteem.
De kolom kan echter net als elke andere BLOB-kolom in SQL Server worden beheerd, zodat beheerders de beheer- en beveiligingsmogelijkheden van SQL Server kunnen gebruiken om BLOB-gegevensbeheer te integreren met de rest van de gegevens in de relationele database, zonder dat ze de bestandssysteemgegevens afzonderlijk.
Het definiëren van de gegevens als een FILESTREAM-kolom in SQL Server zorgt ook voor consistentie op gegevensniveau tussen de relationele gegevens in de database en de ongestructureerde gegevens die fysiek in het bestandssysteem zijn opgeslagen. Een FILESTREAM-kolom gedraagt zich precies hetzelfde als een BLOB-kolom, wat betekent volledige integratie van onderhoudsactiviteiten zoals back-up en herstel, volledige integratie met het SQL Server-beveiligingsmodel en volledige transactieondersteuning.
Applicatieontwikkelaars kunnen met FILESTREAM-gegevens werken via een van de twee programmeermodellen; ze kunnen Transact-SQL gebruiken om toegang te krijgen tot de gegevens en deze te manipuleren, net als standaard BLOB-kolommen, of ze kunnen de Win32-streaming-API's gebruiken met Transact-SQL-transactiesemantiek om consistentie te garanderen, wat betekent dat ze standaard Win32-lees-/schrijfaanroepen naar FILESTREAM kunnen gebruiken BLOB's zoals ze zouden doen bij interactie met bestanden op het bestandssysteem.
In SQL Server 2008 kunnen FILESTREAM-kolommen alleen gegevens opslaan op lokale schijfvolumes, en sommige functies, zoals transparante codering en tabelwaardeparameters, worden niet ondersteund voor FILESTREAM-kolommen. Bovendien kunt u geen tabellen gebruiken die FILESTREAM-kolommen bevatten in database-snapshots of database-mirroringsessies, hoewel verzending van logbestanden wordt ondersteund.