2009-06-03 16 views
1

私の製品のイメージをデータベースに挿入し、そのイメージをリクエストしたい場合があります。提案してください。SQL Server 2005でイメージを効率的に保存および管理する方法

+0

どの言語とデータベースベンダーですか? –

+0

これは何度も前に投稿されていますが、使用しているデータベースについて言及していないだけでなく、ソリューションはこれに依存しています。たとえば、MySQlでは、通常、イメージをblobフィールドに格納します。 – miccet

+0

すみません。 私は.Net 3.5とMs Sql 2005 – Nipun

答えて

0

BLOB型のフィールドに簡単に挿入できます。

イメージを元に戻すことは、使用する言語によって異なります。 PHPを使用していますか?

+0

を使用していますので、BLOBのクエリとなるものを教えてください。 – Nipun

2

イメージをSQL Server 2005データベースに格納する最もよい方法は、イメージが実際に存在する場所のパスを保存することです。

詳細はこちらをご覧ください。アーロンと私は同意

https://stackoverflow.com/questions/805519/save-image-in-database

+1

確かに!それは私のウェブアプリケーションがやったことだ。 – jrharshath

4

。ファイルシステムにイメージを格納すると、孤立したファイルやデータベースエントリの潜在的な問題が常に残ります。 「参照整合性」を維持することは困難です。イメージが特に大きいので、ブロブルートに行きたくないシナリオがあるかもしれませんが、ほとんどの標準的なアプリケーションシナリオでは、イメージをデータベースに格納します。

+0

SQL Server Filestreamテクノロジは懸念事項に対処しますが、SQL 2008以降でのみ使用できます。 –

+1

データベースに画像を置くと、複雑ではない別のレイヤーが追加されます。同意すると、いくつかのソリューションは画像をDBに直接入れることで利益を得るかもしれませんが、大きなデータベースでは、画像はスペースとパフォーマンスの両方を削減します。つまり、データベースを構築する前に、あなたの選択肢を知り、評価することは常にプラスです。 – Aaron

+0

データベース階層内のファイル、特に文書管理(顧客管理フォーム、スキャンされたドキュメントなど)を格納すると、パフォーマンスが著しく低下します(テーブルや物理.mdfファイルが肥大化する)ので、Microsoftがファイルシステムに1GBを超えるファイルを格納することを推奨します。 –

0

SQL Server 2005にはイメージデータタイプがあります。これを使って。

それが良いか悪いかについては、要件によって異なります。

+2

IMAGEは使用しないでください。これは過去の時代のホールドオーバーです(SQL 2000)。 VARBINARY(MAX)を使用してください。 –

+0

はい、私はそれを使用しません。しかし、まだIMAGEデータ型はSQL Server 2005にあります。 – NinethSense

+0

FYI:ntext、text、およびimageデータ型は、将来のバージョンのMicrosoft SQL Serverでは削除されます。新しい開発作業でこれらのデータ型を使用しないようにし、現在使用しているアプリケーションを変更することを計画します。代わりに、nvarchar(max)、varchar(max)、およびvarbinary(max)を使用してください。 http://msdn.microsoft.com/en-us/library/ms187993.aspx –

2

これは非常に一般的なSQL Serverの説明です。一般的な経験則では、格納するファイルが1MBを超える場合、ファイルシステムに格納します。

関連する問題の詳細については、次のMicrosoft Researchのドキュメントを参照してください。

http://research.microsoft.com/apps/pubs/default.aspx?id=64525

サイドノートSQL Server 2008でこのシナリオに対応するためのFileStream技術を使用しています。

SQL Server Filestream

0

ベストな方法は、SQL Server 2008でアップグレードして、あなたが解決する必要が議論「DB悪いの画像がある」のFileStream(ファイルシステムに格納されたコンテンツ)全体をスキップ

0

を使用していますここでは問題はほとんどありません。

1)データ保存:画像を置くにはある程度のスペースが必要です。 SQL 2005では、VARBINARY(MAX)列を使用することをお勧めします。

2)アップロード:画像をデータベースにアップロードする必要があります。 FileUploadコマンドをチェックしてください。実際にINSERTINGという言葉で言えば、.NETデータ型はbyte []です。あなたのORMはあなたのためにこれを処理しなければなりません。また、ファイルサイズ、ファイル名、およびMIMEタイプを保存する必要があることを覚えておいてください。

3)ディスプレイ:ここでは、ほとんどの人を動かすものがあります。あなたは、表示のために画像ファイルを要求する方法を作る必要があります。最適な方法は、カスタムIHttpHandlerを実装することです。次に、画像データ、ファイル名、MIMEタイプ、およびファイル長を選択します。ヘッダーでMIMEタイプとファイル名を押し、コンテンツの長さをファイルの長さに設定し、バイナリデータを出力ストリームにストリームします。

0

あなたのイメージだけでバイナリにbase64でから、それを変換し、それを表示するにはvarchar型のフィールド

にBase64文字列に ストア、それを変換する非常に簡単

を作品別のオプションは....

これは任意のDBエンジンで動作し、バイナリからベース64への.net変換ではマイクロ秒を要します...

関連する問題