3

私はMongoDBを初めて使用し、シャーディングの概念について非常に基本的な知識を持っています。しかし、データの分割を自分で制御できるかどうか疑問に思いました。たとえば、レコードの一部は1つの特定のシャードに保存されますか?これは、Railsアプリと一緒に使用されます。

4

4 に答える 4

5

バランサーをオフにして自動バランシングを停止できます。

sh.setBalancerState(false)

分割するキーの範囲がわかっている場合は、データ範囲を目的のサーバーに事前分割することもできます。 PreSplitting の例 を参照しください。シャードの管理は、Rails アプリケーションではなく、javascript シェルを介して行われます。

シャードに負荷がかからないように注意する必要があります (ホットになる)。これが、デフォルトで自動バランシングがある理由です。無料のMMSサービスのような監視を使用すると、監視に役立ちます。

于 2012-07-11T12:00:19.643 に答える
3

シャードの決定は複雑な決定であり、十分に検討する必要があります。

シャーディングについて学ぶことはたくさんありますが、その多くは自明ではありません。次のリンクで情報を確認することをお勧めします。

シャード クラスターのコンテキストでは、チャンクは、特定のシャードに割り当てられたシャード キー値の連続した範囲です。デフォルトでは、チャンクは 64 メガバイトです (上記のように変更されていない限り)。構成されたチャンク サイズを超えると、mongos はチャンクを 2 つのチャンクに分割します。MongoDB チャンクは論理的であり、その中のデータは物理的に一緒に配置されていません。

前述したように、バランサーはチャンクを移動しますが、これは手動で行うことができます。バランサーは、各シャードのチャンク数に十分な差 (最小 8) がある場合、リバランスを決定し、チャンクの移行を要求します。チャンクの実際の移動は「From」シャードと「To」シャードの間で調整され、これが完了すると、元のチャンクが「From」シャードから削除され、構成サーバーに通知されます。

また、かなり多くの人が事前に分割しているため、移行に役立ちます. 詳しくはこちらをご覧ください。

ドキュメントが 2 つのシャードに分割されていることを確認するには、最初のシャードのいくつかのチャンクを埋めるために十分なドキュメントを挿入する必要があります。デフォルトのチャンク サイズを変更していない場合、データが 2 番目のチャンクに移行されたことを確認するには、最低 512 MB のデータを挿入する必要があります。多くの場合、これをテストすることをお勧めします。これを行うには、チャンク サイズを 1MB に設定し、10MB のデータを挿入します。これをテストする方法の例を次に示します

于 2012-07-11T12:05:21.457 に答える
0

おそらくhttp://www.mongodb.org/display/DOCS/Tag+Aware+Shardingが v2.2 の要件に対応しています
。Kristina Chodorow のブログ投稿も参考にしてください: http://www.kchodorow.com/blog /2012/07/25/収蔵品配布の管理/

于 2012-09-16T13:25:17.867 に答える
-2

mongo DB が自動的にデータを分割するのに、なぜ自分でデータを分割する必要があるのでしょうか。Rails アプリケーション層をアップグレードして mongos インスタンスと通信し、mongos が CRUD 操作の呼び出しをデータが存在する場所にルーティングするようにすることができます。これは config server を使用して実現されます。

于 2012-08-31T18:26:27.790 に答える