1

Mongoデータベースの分割について読んでいて、シャードを介してエスカレートしますが、可能であれば同じサーバーのmongoデータベースをチャンクで分割し、それを別のファイルに保存することを考えています。シャードキーの範囲は式を使用して計算されます週数と現在の年を考慮して、(年)x54 + 現在の週番号のようなもの

2010x54 + 11 = 108551 としましょう

理想的には、次のようにファイルを月ごとに分割することを念頭に置いています。

chunk01 (shardKeyID 108551 -> 108555) ----> Server1---> physical file 01
chunk02 (shardKeyID 108556 -> 108560) ----> Server1---> physical file 02
chunk03 (shardKeyID 108561 -> 108565) ----> Server1---> physical file 03

私は単一のサーバーでそれをやろうとしましたが、シャード用にセットアップした場合、DB 内のドキュメントのサブセットを取得するだけです。他の部分は別のシャードに格納されるため、これは理にかなっています。サーバ。

何か案は?

4

2 に答える 2

0

mongod異なるポートで別々のインスタンスを実行することにより、単一サーバー上にシャード クラスターを設定できます。手順は、このチュートリアルにあります。

チャンクの分割に関しては、これはデータベースによって自動的に処理されます。デフォルトでは、コレクションはデフォルトのチャンク サイズ 64MB を使用してシャーディングされることに注意してください。詳細はこちらをご覧ください:

チャンク サイズはユーザーが設定できます。ただし、デフォルト値の 64 メガバイトは、ほとんどの展開に最適です。

いつバランスをとるかについて独自のアルゴリズムを説明しているようですが、これは不可能です。これを理解するには、クラスターバランサーに任せる必要があります。

于 2013-02-04T20:33:28.270 に答える
0

MongoDBは、データベースごとにデータ ファイル (エクステントと呼ばれる) を自動的に作成します。あなたが提案しているように、どのドキュメントが特定の物理データファイルに入るかを制御することはできません。

シャーディングは、単一の論理データベースをサーバーのクラスター全体に分散させます。各シャードは、レプリカ セット (推奨) または単一の mongod によってサポートされます。シャードキーの選択によって、シャード間でデータのバランスをとるために使用されるプロパティが決まりますが、物理データ ファイル内でデータが存在する場所を決定するわけではありません。

于 2013-02-04T20:33:43.723 に答える