web-dev-qa-db-ja.com

Base64エンコードファイルを保存するSQLデータタイプはどれですか?

nvarchar(max)、varchar(max)、または実際に文字列をデコードして、イメージまたはblobなどに配置する必要がありますか?

長いバージョン:(すべてのジューシーな詳細を含む)

.Net SOAP Webサービスは、SQL 2008 DBにレコードを保存します。サービスは、イメージを受け入れるように拡張される予定です。一時的にDBにアクセスします。

物事を単純にするために、サービスはイメージをBase 64エンコード文字列として取得し、後でbase64エンコード文字列として返す必要があります(同じサービスの別のメソッド)。

私はもともとnvarchar(max)を使用するつもりでしたが、これはうまくいくと確信しています。しかし、その後、base64エンコードは、代わりにvarchar(max)を使用でき、使用するストレージスペースが少ないことを意味すると考えました。これは正しいですか?または、箇条書きを噛んでテキストをバイナリにデコードし、ブロブとして保存してから、再び途中で再エンコードする必要がありますか?

最後に-負荷のストレージとパフォーマンスが問題を引き起こす可能性は低く、これはペットプロジェクトであり、負荷は低くなります。

編集:@howiecampの質問に応えて、画像をURLエンコードする方法をここに書きました: http://www.flowerchild.org.uk/archive/2010/06/13/base-64-encoding -an-image-to-pass-across-a-web.html

40
Andrew M

Base64はASCIIエンコーディングです。本当に-間違いなくNVARCHARは必要ありません-それはテキストなので、VARCHAR(MAX)をお勧めします。

これは純粋なテキストで、最大2 GB(十分である必要があります)であり、文字列型なので、すべての文字列関数を使用できます。 NVARCHARは実際に2倍のストレージ(常に文字ごとに2バイト)を使用しますが、この場合はまったく不要です。

73
marc_s