3

大量のドキュメント (PDF、Word ファイルなど) を保存する必要があるシステムに取り組んでいます。Solr/Lucene を使用して、これらのドキュメントから抽出された適切な情報を検索していますが、元のドキュメントを保存する場所も必要です。ファイルをユーザーが開いたりダウンロードしたりできるようにします。

私はいくつかの可能性について考えていました:

  • ファイル システム - 100 万個のドキュメントを保存するのはおそらく良い考えではありません
  • SQLデータベース - しかし、バイナリドキュメントとそのIDのみを保存する必要があるため、リレーショナル機能のほとんどは必要ないため、これが最速のソリューションではない可能性があります
  • no-sql データベース - 経験がないので、どちらが良いかわかりません。また、多くのデータベースがあるため、どれを選択すればよいかわかりません。

私が探しているストレージは次のとおりです。

  • 速い
  • スケーラブル
  • オープンソース (重要ではありませんが、あると便利です)

これらのファイルを保存する最良の方法は何だと思いますか?

4

4 に答える 4

5

ファイルシステムは、その名前が示すように、効率的かつスケーラブルな方法で多数のファイルを格納するように設計および最適化されています。

于 2010-10-19T10:21:26.760 に答える
1

Facebook には大量のファイル (150 億枚の写真) が保存されているため、Facebook をフォローできます。

  • 彼らは当初、商用ストレージ アプライアンスが提供する NFS 共有から始めました。
  • 次に、Haystack と呼ばれる onw 実装の http ファイル サーバーに移動しました。

詳細については、こちらの Facebook ノートをご覧ください http://www.facebook.com/note.php?note_id=76191543919

NFS共有について。NFS 共有は通常、パフォーマンス上の理由から 1 つのフォルダー内のファイルの量を制限することに注意してください。(最近のすべてのファイル システムが b ツリーを使用して構造を格納していると仮定すると、これは少し直感に反する可能性があります。)したがって、(NetApp) のような商用の NFS 共有を使用している場合は、ファイルを複数のフォルダーに保持する必要がある可能性があります。

ファイルに何らかの種類のIDがあれば、それを行うことができます。アスキー表現を数文字のグループに分割し、グループごとにフォルダーを作成するだけです。たとえば、ID に整数を使用するため、ID 1234567891 のファイルは storage/0012/3456/7891 として保存されます。

それが役立つことを願っています。

于 2010-11-25T14:27:29.093 に答える
0

ファイル システム : 全体像を考えながら、DBMS は再びファイル システムを使用します。また、ファイル システムはファイルの保持専用であるため、最適化を確認できます (LukeH が述べたように)。

于 2010-10-19T10:24:57.773 に答える
0

私の意見では...

ファイルを圧縮してディスク (ファイル システム) に保存し、データベースを使用してそれらを追跡します。

これが唯一の仕事である場合は、おそらくSqliteを使用してください。

于 2010-10-19T10:24:43.733 に答える