asp.net Webアプリケーションに画像データベースを使用すると、2つの方法が見つかりました。最初の方法は「Image」データ型を使用する方法で、2番目の方法は画像をbase64文字列に変換して「byte」データ型に格納する方法です。
どの方法がプロセスで優れているのか、そしてその理由を知りたいのですが?
asp.net Webアプリケーションに画像データベースを使用すると、2つの方法が見つかりました。最初の方法は「Image」データ型を使用する方法で、2番目の方法は画像をbase64文字列に変換して「byte」データ型に格納する方法です。
どの方法がプロセスで優れているのか、そしてその理由を知りたいのですが?
Image
typeは非推奨であるため、オプションではありません。byte
SQL Serverには型がなく、型tinyint
と同等の型byte
がありますが、それはあなたが求めているものではないと確信しています。
間違った用語を修正した実際の質問は次のとおりです。
asp.net Webアプリケーションに画像データベースを使用すると、2つの方法が見つかりました。最初の方法は
VARBINARY(max)
データ型を使用する方法で、2番目の方法は画像をbase64文字列に変換してデータ型に保存する方法ですVARCHAR(max)
。
Base64エンコーディングは、バイナリデータにかなりのサイズを追加し、3オクテットを4オクテットに変換するため、33%のオーバーヘッドが追加されます。これは、ストレージ(データベースまたはファイル)で消費される不動産です。
ただし、Webアプリケーションは、base64でエンコードされた応答として圧倒的にメディアファイルを提供します。ファイルがすでにストレージにエンコードされていると、base64エンコードを経由せずに、ストレージコンテンツを直接ストリーミングできるため、WebサーバーのCPUを節約できます。ストリーミングセマンティクスを使用して適切に実行された場合、 base64エンコーディングは高価ではありません(非常に安価で、キャッシュに非常に適しています)。
したがって、毒を選択してください。使用するディスク容量を少なくするためにバイナリコンテンツを保存するか、33%のサイズペナルティを適用して、応答の書き込みを高速化し、Web層のCPUを削減します。
データベースからメディアファイルを適切に保存および提供する例については、aSP.Netからの画像のダウンロードとアップロードを参照してください。
データベースまたはファイルシステムのストレージに関する終わりのない議論については、BLOBへの移行またはBLOBへの移行ではない:データベースまたはファイルシステムのラージオブジェクトストレージについて説明します。そしてその結論:
この調査によると、オブジェクトが平均して1メガバイトを超える場合、NTFSはSQLServerよりも明らかに有利です。オブジェクトが256キロバイト未満の場合、データベースには明らかな利点があります。この範囲内では、ワークロードの書き込み集約度によって異なります。
この調査では、データベースストレージの不足(一貫性のあるバックアップ-復元、フェイルオーバー)の管理上の問題については考慮していませんが、これらの種類の問題については、製品のv2でのみ説明しています。