3

各ユーザーがプロフィール写真や追加の画像やその他のアーティファクトを保存したい大規模でアクティブなユーザーベースがある場合を考えると、そのようなデータの保存とクエリを簡単に行えるライブラリやフレームワークはありますか?

リファレンス実装は、FacebookのHaystackPhotoInfrastructureです。

次の特性が重要です

  • データストアは適切に拡張できる必要があります。リソースの追加は、ストアを使用するアプリケーションに対して透過的である必要があります(同様の質問には、LinkedInのVoldemortに関する回答がありました)。
  • 保存されているデータと一緒にいくつかのメタデータを追加する機能。
  • メタデータは、優れたパフォーマンスでクエリできます(たとえば、Lucene / Solrなどの構成可能なインデックスに格納されます)。
  • クイックキーベースのアクセスといくつかの中間キャッシュレイヤー

JavaWebアプリケーションに簡単に統合できるライブラリまたはフレームワークに関する推奨事項は大歓迎です。

更新:最初のいくつかの回答に感謝します。どのような種類の回答が期待されるかについて、さらに詳しく説明する必要があります。Tobuの答えは、Java関連ではありませんが、非常に優れています(投票したばかりです)。ファイルシステムアクセスとDBを組み合わせてソリューションを実装し、その間にキャッシュのレイヤーを追加することは可能ですが、私よりも資格のある人がすでに設計、実装、実行している場合は、時間の無駄だと思います。解決。基盤となるDBまたはJCRの実装を備えたソリューションに基づくものは適していますが、他のインフラストラクチャを実装することは私がやりたいことではありません。

4

5 に答える 5

2

MogileFSはLiveJournalが使用するものです。ただし、特にJavaではありません。

于 2010-01-27T17:07:36.540 に答える
1

Fedora Commons(http://www.fedora-commons.org/)のメディアリポジトリで優れたエクスペリエンスを実現しました。これにより、メディアアセットを関連するメタデータと一緒に保存できます。スケーラビリティやカスタマイズに問題はなく、基盤となるストレージレイヤーをトリプルストアと交換することも困難ではありませんでした(これが必要な場合)。Solrを使用してデータにインデックスを付ける必要がある場合は、事前定義されたメタデータフィールド(「RELS-EXT」)を使用してXMLベースのデータを格納できます。

于 2010-02-01T09:31:08.307 に答える
0

あなたの要件は、データベースが提供しているものにかなり近いと思います。テーブルのデザインがニーズに対応していることを確認してください(たとえば、メタデータとは別のテーブルに画像などのビッグデータを含めることができます)。

データベース内のキャッシングレイヤーを含むすべての要件がカバーされます(必要に応じて、アプリケーションに追加のキャッシングレイヤーを含めることができます。これは、アプリケーションの残りの部分にも使用される可能性があります)。

于 2010-01-27T17:22:30.640 に答える
0

Apache Jackrabbitは、Java Technology API(JCR、JSR 170および283で指定)のコンテンツリポジトリの完全準拠の実装です。ただし、パフォーマンスの問題がいくつかあります(少なくとも、私が使用している2年前のバージョンでは)。これらを克服する最善の方法は、静的イメージをWebサーバーに複製することです。(WebDAV、davfs、rsyncを使用)

于 2010-01-27T17:22:35.203 に答える
0

それは「大規模でアクティブなユーザーベース」の定量化に依存します...

Webサイトの80%は、y_serialのようなNoSQLスキーマフリーのアプローチを単純に使用できます。

y_serial.pyモジュール::SQLiteを使用したPythonオブジェクトのウェアハウス

「シリアル化+永続性::数行のコードで、Pythonオブジェクトを圧縮してSQLiteに注釈を付けます。その後、SQLを使用せずにキーワードで時系列に取得します。データベースがスキーマレスデータを格納するための最も便利な「標準」モジュールです。」

http://yserial.sourceforge.net

ユーザーあたりの写真とアーティファクトが2M未満に圧縮されている場合、パフォーマンスは良好です。

残りの20%のケース使用率については、yserialからCassandraにデータを簡単にインポートできます。これは現在Facebook、Digg、Twitterで採用されています。

于 2010-03-03T16:51:49.543 に答える