0

これはパフォーマンスの質問です。データを多くのデータテーブルに分割すると、プロパティでインデックス付けされた単一のデータテーブルを使用するだけでパフォーマンスが向上しますか?これに基づいて、データを多くのデータテーブルに分離できますか?

ありがとう。

4

2 に答える 2

0

たとえば、MongoDBには、インデックスサイズなどに依存するコレクション制限があることを認識しておく必要があります。http ://www.mongodb.org/display/DOCS/Using+a+Large+Number+of+Collections

コレクションは同時にクエリできますが、Mongoにはグローバル(2.2のdbレベル)ロックがあるため、書き込みに関するパフォーマンス上の理由から、1つのノードへの1秒あたりの書き込み数が多い場合は、データをDBに分割する方が現実的です。

複数のコレクションを使用する主な利点は、スケーラビリティです。1つの巨大なコレクションよりも多くのコレクションをシャーディングする方が簡単であり、クエリを常に比較的高速にするシャードキーを使用する方も簡単です。範囲の理由からも簡単です。大きなドキュメント=ドキュメントが大きくなるとHDDスペース全体でドキュメントが移動しやすくなります。

1つのコレクションを使用する主な利点は、クエリが簡単なことです。ただし、ドキュメントを3レベル以上深く埋め込むことは適切なオプションではない可能性があり、クライアントフィルタリングなしでonm DB側にクエリを実行すると、実際にアプリの速度が低下する可能性があることを覚えておく必要があります。

しかし、他の人が言うように、それはあなたのユースケースなど次第であり、それはすべてあなたが私たちに与えていない詳細に依存します。

私はいくつかの詳細を省略したかもしれませんが、それが基本です、それが役立つことを願っています

編集:Mongoのスキーマパフォーマンスなどについては、http ://www.mongodb.org/display/DOCS/Schema+Designで読むことができます。

于 2012-06-22T14:32:32.933 に答える
0

パフォーマンスが懸念される場合は、mongodb mongodb による自動シャーディングの使用を検討する必要があります。通常、データが個別にクエリされる場合を除き、データを複数のコレクションに分割すると、アプリケーション ロジックがより複雑になり、mongodb が提供するシャーディング機能の利点がなくなります。

于 2012-06-22T15:26:08.640 に答える