0
  • シャードで2台のmongoサーバーを使用したい
  • データベースにはコレクションが1つだけあります(約1億1,000万レコード)。
  • 活動は主に書き込み、新しいレコードの追加、古いレコードの更新です
  • レコードには2つのフィールドしかありません:_idと配列{:_id => 12345、:pp => [stuff、stuff、...]}
  • _idは実際にはユーザーID、整数です
  • _idはコレクション内の唯一のインデックスです
  • シャーディングキーは次のものに基づいている必要があります:_id%2

つまり、_id = 1はサーバー1に、_id = 2はサーバー2に、_id = 3はサーバー1に、_id=>4はサーバー2に...というように続きます。

(_idsは線形であり、書き込み時に両方のサーバーのバランスを均等にする必要があるため)

このためにmongosをどのように構成しますか?

4

1 に答える 1

0

Mongo の 2.2 リリースで追加されたタグ対応シャーディング機能を利用できます。 http://www.mongodb.org/display/DOCS/Tag+Aware+Sharding

(地理的に分散された)ユースケース機能は、あなたのケースとは大きく異なります。

デフォルト (非タグ対応オプション) では、Mongo はクラスター全体でのデータの分割を効率的に管理します。均一に分散された値を持つシャード キーが提供され、クエリが連続した値を持つドキュメントを参照する必要がある場合は、mongo が使用するデフォルトのアルゴリズムが最適です。また、データが (構成可能なマージン内で) 均等に分散されるように再調整します。意味を理解せずに変更しない方がよいでしょう。

デフォルトのアルゴリズムでは、シャード キー値を範囲のブロック (チャンク) に分割し、そのチャンクをシャードのさまざまなメンバーに配布します。

詳しくは以下のページで。

http://docs.mongodb.org/manual/core/sharding/

http://docs.mongodb.org/manual/core/sharding-internals/#sharding-migration-thresholds

于 2012-09-12T12:15:09.603 に答える