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
Base64はASCIIエンコーディングです。本当に-間違いなくNVARCHARは必要ありません-それはテキストなので、VARCHAR(MAX)
をお勧めします。
これは純粋なテキストで、最大2 GB(十分である必要があります)であり、文字列型なので、すべての文字列関数を使用できます。 NVARCHARは実際に2倍のストレージ(常に文字ごとに2バイト)を使用しますが、この場合はまったく不要です。