4

シャーディングデータベースはシャードキーを使用してチャンクを分割し、クエリをルーティングするため、シャードキーを増やすと、より多くのクエリを対象にすることができると思います。

このように複数のキーを指定してみました

db.runCommand( { shardcollection : "test.users" , key : {_id:1, email : 1 ,address:1}

しかし、それが機能するかどうか、そしてこれを行うことの欠点は何ですか?

4

2 に答える 2

4

ここで明確にするために、シャードキーは1つしか持つことができません。したがって、複数のシャードキーを持つことはできません。

ただし、シャードキーとして複合インデックスを提案しています。これは可能ですが、いくつかの制限があります。

たとえば、との組み合わせは_id一意emailaddressある必要があります。

シャードキーを選択するためのドキュメント。ここに記載できない考慮事項が他にもいくつかあります。そのドキュメントを参照してください。

于 2011-04-14T19:16:48.770 に答える
3

以下に基づくシャードキーの選択:

{coarseLocality : 1, search : 1}

粗い局所性は、データに必要な局所性です。検索は、データに対する一般的な検索です。

シャーディングするキーにはインデックスが必要です。したがって、クエリを実行しないランダムな値のキーを選択すると、基本的にインデックスが無駄になります。インデックスを追加するたびに書き込みが遅くなるため、インデックスの数をできるだけ少なくすることが重要です。

したがって、シャードキーの組み合わせを増やしてもあまり役に立ちません。

KristinaChodrowの本「ScalingMongoDB」からの抜粋。

于 2012-10-23T19:28:37.603 に答える