16

このアプリケーションは、HTTP 経由で多数の小さなサムネイル サイズの画像 (サイズは約 6 ~ 12 KB) を提供します。NoSQL データ ストアを使用することがデータ ストレージの実行可能なソリューションであるかどうかを調査するよう依頼されました。理想的には、データ ストアがフォールト トレラントで分散していることを望みます。

blob を NoSQL ストアに格納することは良い考えですか? また、どちらが適していますか? また、NoSQL は私たちの問題の良い解決策ですか、それともファイル システムに画像を保存して Web サーバーから直接提供するほうがよいのでしょうか (ちなみに、CDN は現在私たちの選択肢ではありません)。

4

5 に答える 5

12

画像を DB またはファイルシステムに保存するかどうかは、「聖戦」タイプの議論の 1 つです。どちらの側も、物事を行う方法が唯一の正しい方法であると感じています。一般に:

DB に格納するには:

  • すべてを 1 か所で一度にバックアップ/複製するのがより簡単になります。
  • データの一貫性と完全性に役立ちます。NULL を許可しないように BLOB フィールドを設定できますが、外部ファイルの削除を防ぐことはできません。(ただし、従来の制約がないため、これは NoSQL には適用されません)。

ファイルシステムに保存するには:

  • ファイルシステムは、ファイルを提供するように設計されています。それはそれの仕事をさせてください。
  • DB は、アプリケーションのボトルネックになることがよくあります。あなたがそれを取り除くことができるどんな負荷でも、より良いです。
  • CDN で提供する方が簡単です (あなたが言及したことは、あなたの状況には当てはまりません)。

ファイルシステムの方がはるかに優れているため、私はファイルシステムの側に落ちる傾向があります。ただし、プロジェクトのサイズによっては、どちらを選択してもうまくいく可能性があります。NoSQL では、違いはさらに目立たなくなります。

于 2010-02-17T04:04:41.447 に答える
11

Mongo DBはうまく機能するはずです。まだブロブには使用していませんが、Mongo DB チームのMichael Dirolf による FLOSS Weekly ポッドキャスト インタビューで、彼はこのユース ケースについて説明しています。

于 2010-02-17T04:02:37.373 に答える
3

まあCDNは当然の選択でしょう。それが終わったので、耐障害性と負荷分散のための最善の策は、F5 のような 2 つ以上のロード バランサーの背後にある独自のプライベート データ センター (それがあなたにとって何を意味するかに関係なく) であると思います。これは最も簡単な管理システムであり、ハードウェアの予算が許す限り多くのフォールト トレランスを得ることができます。XCOPY だけで、新しいソフトウェアの専門知識は必要ありません。

真の耐障害性のためには、地理的な分散が必要になるか、バックホーを持っている人にさらされます.

(グラバター?)

于 2010-02-17T04:16:34.607 に答える
3

個人的なプロジェクトで同様の解決策を探していたところ、Riakに出会いました。これは、この問題に対する驚くべき解決策のように思えます。基本的に、各ファイルの指定された数のコピーをネットワーク内のサーバーに配布します。サーバーの出入りが大した問題にならないように設計されています。離れたサーバー上のすべてのコピーは、他のサーバーに分散されます。

適切な構成があれば、Riak はデータセンター全体のクラッシュに対処できます。

ああ、商用サポートが利用可能です。

于 2011-08-10T02:23:04.890 に答える
2

Python 環境の場合は、y_serial モジュールを検討してください: http://yserial.sourceforge.net/

10 分もかからずに、画像 (実際には、Web ページを含む任意の Python オブジェクト) を圧縮形式で保存してアクセスできるようになります。NoSQL。

于 2010-03-20T19:52:40.480 に答える