sql >> データベース >  >> RDS >> Sqlserver

SQLServerをイメージストアとして使用する

    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列を含むテーブルを使用することはできません。



    1. SQLServerのINSERTINTOSELECTクエリでの重複を避けてください

    2. MySQLにあるようなブールデータ型はMicrosoftSQLServerにありますか?

    3. 特別な目的でSQLカーソルを使用する方法

    4. SQLServerの「describetable」に相当するものは何ですか?