11

私は現在、自分が取り組んでいるプロジェクトにどのデータベースを使用するかを調査しています。うまくいけば、皆さんは私にいくつかのヒントを与えることができます。

このプロジェクトは、ユーザーの要求に応じてWebサイトをチェックし、特定の状況下でデータを取得し、実行されたことのログファイルを作成する自動化されたWebクローラーです。

要件:

  • 列が少ないテーブルはごくわずかです。列の事前定義は問題ありません
  • モデル間に過度に複雑な関連付けはありません
  • 膨大な量の日時ベースのクエリ
  • ロギングにより、データベースは急速に増大し、多くのスペースを消費します
  • 複数のサーバーに拡張できる必要があります
  • フィールドには、主にID(int)、文字列(最大約200〜500文字)、およびUNIXタイムスタンプが含まれます
  • 2つの異なるタイプのサーバーが同時にデータを直接読み書きします。
    • ユーザー入力を受け取り、リクエストに応じて結果を表示する1つ(/後で)Railsアプリ
    • 実行中のクローラー/スクレーパーとして機能する1つ(/後でそれ以上)のNode.jsサーバー。継続的に実行し、毎秒数十のデータベースクエリを実行するのに十分な負荷があります。

グラフデータベース(複雑な関連付けなし)でも、メモリベースのキー/値ストア(キャッシュに保持するにはデータが多すぎる)でもないと思います。私は、見つけることができる他のすべてのタイプのデータベースの危機に瀕しています。それぞれにメリットがあるようです。

それで、私がどのように決定すべきかプロからのアドバイスはありますか?

ありがとう。

4

3 に答える 3

5

Googleは、クロール、インデックス作成、検索関連のビジネスのために「BigTable」と呼ばれるデータベースを構築しました。彼らはそれについての論文を発表しました(興味があれば「BigTable」のグーグル)。bigtableのようなデザインにはいくつかのオープンソース実装があり、そのうちの1つがHypertableです。sehrch.comのメンバーによって書かれたクローラー/インデクサーの実装( http://hypertable.com/blog/sehrchcom_a_structured_search_engine_powered_by_hypertable/ )について説明しているブログ投稿があります。そして、要件を見てください。それらはすべてサポートされており、一般的なユースケースです。

(免責事項:私はhypertableで働いています。)

于 2012-08-12T20:33:49.723 に答える
5

このシナリオでは、ドキュメントベースのデータベースを検討することをお勧めします。私はMongoDBに最も精通しています。ここで使用する理由は次のとおりです。

  1. 「少数の列を持つ少数のテーブルのみ」という「スキーマ要件」は、MongoDBのNoSQLの性質によく適合します。
  2. 「ノード間に過度に複雑な関連付けがない」については上記と同じです。ネストされたドキュメントを使用するか、dbrefを使用するかを決定する必要があります(前者を使用します)
  3. 膨大な量の時間ベースのデータ(およびその他のスケーリング要件)-MongoDBは、シャーディングまたはパーティショニングを介して適切にスケーリングします
  4. 読み取り/書き込みアクセス-これが、HadoopのようなものよりもMongoDBを推奨している理由です。このタイプのストレージは(インタラクティブクエリではなく)バッチ要件用に設計されているため、インタラクティブクエリ要件はHadoopスタイルのストア以外のもので最もよく満たされます。
于 2012-08-16T03:01:39.207 に答える
0

CouchDBMongoDBのようなドキュメント指向データベースを見てください。

于 2012-08-12T07:48:34.300 に答える