0

現在、次のフィールドに基づいてシャードしたいコレクションがあるソリューションを実装しています。

年 (INT)

月 (INT)

このコレクションでは、年間約 2 GB のデータが生成されると予想されます。

4

1 に答える 1

6

差し支えなければ、なぜシャーディングを検討しているのですか? 2GB は 1 台のサーバーに簡単に収まるはずです。

そうは言っても、コレクションを確実に分割する場合は、チャンクを分割できない状況が発生しないように、十分に細かく設定された非増分の分割キーを選択することが重要です。

たとえば、コレクションが Month だけで分割された場合、可能なチャンクは 12 しかありません。1 月が挿入に人気のある月である場合、そのチャンクに 100 万の (任意の大きな数を選択するためだけに) レコードを挿入でき、決して分割できないという状況が発生する可能性があります。

増分 (または減分) するシャード キーを選択しないことも重要です。新しいドキュメントがコレクションに挿入されると、後続の各ドキュメントが同じチャンクに追加されますが、このチャンクがサイズ制限に達して分割する必要があります。次に、下位のチャンクを別のサーバーに移動して、「ウォーターフォール」効果を作成することができます (1 つのシャードがチャンクでいっぱいになり、それが他のシャードに移動されます)。その間、すべての新しいドキュメントは常に同じシャードに書き込まれ、いわゆる「ホット スポット」が作成されます。挿入率が十分である場合、ディスクは、既存のデータを別のシャードに同時に移行しながら、新しいドキュメントを書き込もうとして IO 制限に達する可能性があります。

Mongo の「Sharding Introduction」ドキュメントには、シャードされたコレクションにドキュメントを保存する方法の詳細が記載されています。 http://www.mongodb.org/display/DOCS/Sharding+はじめに

さらに、Mongo のドキュメント「Choosing a Shard Key」には、シャード キーを選択する際に考慮すべき点が詳しく説明されています。 http://www.mongodb.org/display/DOCS/Choosing+a+Shard+Key

可能であれば、Kristina Chodorow による「Scaling MongoDB」を読むことをお勧めします。 http://shop.oreilly.com/product/0636920018308.do これは、シャーディングの優れた紹介と、前述のシャード キーを選択する際のすべきこととすべきでないことについての詳細な説明を提供します。

シャーディングとシャード キーの選択に関して他のユーザーから寄せられた質問へのリンクを次に示します。(いくつかのリンクといくつかの著者を認識しているかもしれません) これらのリソースがシャーディングの仕組みの理解を深め、それでもコレクションをシャードすることに決めた場合は、効率的なシャード キーを選択できるようになることを願っています。

「シャーディングの不均衡」 - http://groups.google.com/group/mongodb-user/browse_thread/thread/1328250382087448

「このデータセットのシャード インデックスを設計する最良の方法は何ですか」 - http://groups.google.com/group/mongodb-user/browse_thread/thread/5bda4a39d9be54f5

「カーディナリティの低いシャード キー」 - http://groups.google.com/group/mongodb-user/browse_thread/thread/3c96d1c254f113b1

「シャードキー分析」 - http://groups.google.com/group/mongodb-user/browse_thread/thread/9cf0b8657d4515e2

于 2012-04-05T16:12:31.267 に答える