0

ユーザーごとの求人情報の関連性係数をテーブルに挿入するスクリプトがあります。このテーブルには現在 9,300 万行があり、将来的には指数関数的に増加するでしょう。このテーブルには、job_id、user_id、relevance の 3 つのフィールドしかありません。現在、約 6500 人のユーザーと約 45,000 のジョブがあります。データ モデリングを再考する必要がありますか?

この種のセットアップに最適な DBMS は何でしょうか?

関連性で並べ替えて、次のようなことを簡単に実行できるようにする必要があります SELECT relevance FROM jobpostrelevance WHERE job_id = 1 AND user_id = 2

4

1 に答える 1

1

私の経験に基づいて、最高のパフォーマンスの書き込みを探している場合は、MongoDB または Cassandra を試すことができます。どちらも非常に優れています。あなたの問題はキー値DB(Cassandraなど)に収まるようですが。

しかし、「あなたのハードウェアに応じて」あなたの質問に答えます:

データベース全体がメモリに収まる場合は、より良い結果が得られるので、MongoDBを選択します。モデル: ドキュメント (MongoDB はドキュメント指向) と属性としての各「列」。

データベース全体がメモリに収まらない場合でも、疑いの余地はありません。Cassandraが最良の選択です。MongoDB がメモリ内にデータ全体を保持できない場合、パフォーマンスが低下します ( http://www.cubrid.org/blog/dev-platform/nosql-benchmarking/で読むことができます)。モデル: 属性ごとに 1 つの列を持つ ColumnFamily。

Cassandra を使用すると、Hadoop (Pig / Hive を使用) を使用してデータを並べ替えることができます (試してみました) が、MongoDB を Hadoop に「接続」できるかどうかはわかりません。私のアドバイス: MongoDB には (10gen による) 非常に優れたドキュメントがあり、Cassandra は MongoDB ほど十分にドキュメント化されていません。ただし、Cassandra のドキュメントが必要な場合は、datastax のドキュメントにアクセスしてください: http://www.datastax.com/docs/1.1/index

于 2012-10-05T15:37:42.870 に答える