2013-06-19 10 views
5

イメージをSQL Serverに保存することが何度もありました。私は、画像を保存するためのいくつかのプラクティスを読んでいる:SQL Serverでイメージを保存するためのベストプラクティス

1)をアップロードし、サーバに画像を保存し、テーブル内

2のパスを保存)バイナリ

3として画像を保存)base64文字列として画像を保存

BLOB(私はそれがどのように動作するか調査していない)

あなたがサーバから画像を要求したときに高速である「道」を知っていますかを使用して

4)? SQLサーバの速度を落とさないように、「方法」が優れているかどうか知っていますか? 上記の方が良い他の「方法」をご存知ですか?

ありがとうございます!

+0

[SQL Serverで画像を保存するのはどうでしょう?]の複製が可能ですか?(http://stackoverflow.com/questions/5613898/what-about-storing-images-in-sql-server) – Lamak

+0

@Lamakブロブではありません。私はポストの前にstackoverflowを検索しました。その投稿で私が探しているのは、deveopersの経験が言っていることです! –

+0

そのリンクは単なる「BlobまたはNot Blob」以上のものです。 _それは彼らの多くの良い点で答えを持っています – Lamak

答えて

4

マイクロソフトでは、some researchを行っており、画像のサイズによって異なると判断しています。画像の大部分が< 256Kbの場合、おそらくVARBINARYを使用するべきです。一方、1Mbを超えている場合は、FILESTREAM(通常はデータベースファイル外のファイルシステムに格納されています)を使用する必要があります。

画像が他のデータにリンクされている場合は、データを含む表が小さくて操作しやすいように、画像と別の表(つまり画像表を作成)にレコード自体を分離すると便利です。

+0

何についてbase64。文字列を取得し、それをクライアントのimageまたはbyte()に変換して使用しますか? –

+2

これはもっと多くのスペース(約37%以上)を占有します。利点は何でしょうか? –

+0

SQLにイメージがあるとします。初めてクライアントにダウンロードして保存します。 CHECKSUMを2回目にチェックして、格納されているファイルを削除して新しいファイルをダウンロードした場合、base64が変更されたかどうかを確認します(文字列で簡単)。 FILESTREAMでその変更を確認できますか? –

3

Plsには、「最も良い」方法はありませんが、あなたの特定のニーズに最も適した方法だけが普遍的に存在することに注意してください。

"イメージをサーバーから要求したときにどのような"方法がより速いのかを知っていますか? "この場合#1は基本的にイメージをファイルシステムに保存し、データベースからのイメージパスのみを取得するためです。

"SQLサーバの速度を落とさないように、より良い方法があるかどうか知っていますか?"もう少しデータを処理しなければならないので#1。 SQL Serverは、イメージが格納されているパスを表すvarcharを、どのような形式でもイメージを取得するよりも簡単に取得できます。

1号は、セットアップに単純で、おそらく最も簡単ですが、plsは欠点があることに注意してください。いくつかのイメージは、ファイルシステムのSQL Serverから削除された場合

  • することは、これは
  • が起こったことを手掛かりを持っていません
  • あなたはまた、ファイルシステムから画像を削除する必要がSQL Serverから行を削除する場合(あなたが明確なものを維持したい場合は、)あなたはまた、ファイルシステムからバックアップデータを必要とするだけでなく、SQL Serverデータベース
関連する問題