私はDBAではないので、SQL Serverにバイナリデータを格納するさまざまな方法を使用することのメリットとデメリットを知りません。
varbinary(n)
は8000バイトのみを格納しますvarbinary(max)
は2 GBを保存しますBLOB
sは大きなファイルを対象としていますが、「管理上の」オーバーヘッドが発生します(ファイルはDBでのみ参照されますが、実際にはローカルハードディスクにあります)。私は基本的にSQL Server 2008 R2データベースに保存したい(年間で約1000の)ドキュメントを持っています(単純なASPXフォームのアップロードで埋められ、ダウンロードされた単純なGridviewで表示されます)。すべてのドキュメントはおそらく2MB〜8MB(Word、Excelファイル)になります。私のguessは、次のレイアウトでテーブルMyDocuments
を使用する必要があることです。
_MyDocuments
Data varbinary(max)
Title varchar(255)
ModifiedOn datetime()
ModifiedBy varchar(100)
_
私はvarbinary(max)
で順調ですか?または、私は間違った方向に進んでいますか(たとえば、パフォーマンスに関して)?
SQL Server 2008には「FILESTREAM」ストレージがあります。これにより、SQL Server 2008とNTFSファイルシステムの組み合わせを使用して、BLOBデータのストレージと効率的なアクセスが可能になります。
あなたはこれらをチェックすることができます:
SQL Server 2008のFILESTREAMストレージ
FileStream SQL Server 2008を使用したファイルの保存と取得
編集:
256K未満のオブジェクトはデータベースに保存するのが最適ですが、1Mより大きいオブジェクトはファイルシステムに保存するのが最適です。
パフォーマンス:VarbinaryとFILESTREAM
http://www.sqlskills.com/BLOGS/PAUL/post/SQL-Server-2008-FILESTREAM-performance.aspx
BLOBへまたはBLOBへの変換:データベースまたはファイルシステムでのラージオブジェクトストレージ
SQL Server 2008 FILESTREAMパフォーマンス