PostgreSQLに画像を保存する 質問する

PostgreSQLに画像を保存する 質問する

さて、私は、PostgreSQL を実行する Linux バックエンドを使用して、C#.NET で書かれたフロントエンドを持つ Windows ボックスに画像を提供するアプリケーションに取り組んでいますが、フロントエンドはほとんど問題ではありません。私の質問は次のとおりです。

  • Postgres に画像を保存する最善の方法は何ですか?

画像はそれぞれ約 4 ~ 6 メガピクセルで、3000 枚以上保存されます。また、これは Web アプリケーションではないため、一度にデータベースにアクセスするフロントエンドは最大で 2 つ程度になる点にも留意してください。

ベストアンサー1

2012 年に更新すると、すべてのアプリケーションで画像のサイズと画像の数が増加し続けていることがわかります...

サムネイルのように、「元の画像」と「処理された画像」を区別する必要があります。

Jcoby の回答にあるように、2 つのオプションがあります。次のオプションをお勧めします。

  • 使用ブロブ(バイナリ ラージ オブジェクト): 元のイメージをテーブルに保存します。Ivan の回答を参照してください (BLOB のバックアップには問題はありません)。PostgreSQL 追加提供モジュールハウツー

  • 別のデータベースを使用するDBリンク: 元の画像を保存する場合は、別の(統合/専門の)データベースに保存します。この場合、私はバイティア、 しかしブロブほぼ同じです。データベースを分離することが、「統合された画像 Web サービス」に最適な方法です。

  • 使用バイティア(バイト配列): サムネイル画像をキャッシュします。小さな画像をキャッシュして、Web ブラウザに高速に送信し (レンダリングの問題を回避するため)、サーバ処理を減らします。幅や高さなどの重要なメタデータもキャッシュします。データベース キャッシュが最も簡単な方法ですが、ニーズとサーバ構成 (Apache モジュールなど) を確認してください。サムネイルをファイルシステムに保存するパフォーマンスを比較すると、より良いかもしれません。これは(統合された)Webサービスであり、別のデータベース(バックアップなし)に保存して、多くのテーブルに提供できることを覚えておいてください。PostgreSQL バイナリ データ型マニュアルbytea列を使用したテストなど

注1: ​​今日では、「デュアルソリューション」(データベース+ファイルシステム)は非推奨です (!)。デュアルではなく「データベースのみ」を使用すると多くの利点があります。PostgreSQL は同等のパフォーマンスと、エクスポート/インポート/入力/出力用の優れたツールを備えています。

注2: PostgreSQLにはバイティアデフォルトのOracleのブロブ: 「SQL 標準では (...) BLOB が定義されています。入力形式は bytea とは異なりますが、提供される関数と演算子はほぼ同じです」マニュアル


編集2014: 私は今日上記の元のテキストを変更していません(私の回答は2012年4月22日で、現在14票です)。あなたの変更に対する回答を公開します(「Wikiモード」を参照してください。編集できます!)校正そしてアップデートについて
質問は安定しています (@Ivans の '08 回答、19 票)。このテキストの改善にご協力ください。

おすすめ記事