10 Gbはそれほど大量のデータではないため、データベースを使用してデータを保存でき、大きな問題はありませんが、もちろん、ファイルシステムを使用するのがパフォーマンスの面で最善であり、安全管理の面ではDBを使用する方が適切です。 (バックアップと一貫性)。
幸いなことに、SQL Server 2008では、次の方法でケーキを手に入れて食べることができます。
FILESTREAM属性
SQL Server 2008では、FILESTREAM属性をvarbinary列に適用すると、SQLServerはその列のデータをローカルNTFSファイルシステムに保存します。ファイルシステムにデータを保存すると、2つの重要な利点があります。
- パフォーマンスはファイルシステムのストリーミングパフォーマンスと一致します。
- BLOBサイズは、ファイルシステムのボリュームサイズによってのみ制限されます。
ただし、この列はSQL Serverの他のBLOB列と同じように管理できるため、管理者はSQL Serverの管理機能とセキュリティ機能を使用して、BLOBデータ管理をリレーショナルデータベース内の残りのデータと統合できます。ファイルシステムデータを個別に。
SQL ServerでデータをFILESTREAM列として定義すると、データベース内のリレーショナルデータと、ファイルシステムに物理的に格納されている非構造化データとの間のデータレベルの一貫性も保証されます。 FILESTREAM列はBLOB列とまったく同じように動作します。つまり、バックアップや復元などのメンテナンス操作の完全な統合、SQL Serverセキュリティモデルとの完全な統合、および完全なトランザクションのサポートを意味します。
アプリケーション開発者は、2つのプログラミングモデルのいずれかを使用してFILESTREAMデータを操作できます。 Transact-SQLを使用して、標準のBLOB列と同じようにデータにアクセスして操作したり、Transact-SQLトランザクションセマンティクスでWin32ストリーミングAPIを使用して一貫性を確保したりできます。つまり、FILESTREAMへの標準のWin32読み取り/書き込み呼び出しを使用できます。ファイルシステム上のファイルを操作する場合と同じようにBLOBを実行します。
SQL Server 2008では、FILESTREAM列はローカルディスクボリュームにのみデータを格納でき、透過的な暗号化やテーブル値パラメーターなどの一部の機能はFILESTREAM列ではサポートされていません。さらに、ログ配布はサポートされていますが、データベーススナップショットまたはデータベースミラーリングセッションでFILESTREAM列を含むテーブルを使用することはできません。