2012-03-03 3 views
2

MongoDBのバランサを使用しないチャンクのバランスをとるために、シャーディング用のカスタムバランサを作成しましたか?ユースケースについて説明してください。MongoDBのカスタムバランサ

答えて

2

カスタムバランシングスクリプトが一時的に有用な場合があります。たとえば、特定のシャードに関するデータが地域ごとに必要な場合、または特定のコレクションのバランスを取らない場合などです。速度の点では実質的なメリットはありません。これは、ディスクとメモリのデータ配信によって制限されます。実際、カスタムバランシングを行う理由の1つは、速度を遅くすることです。

私の経験では、それは価値がありません。時間ベースのバランスをとるために使用できるバランサーウィンドウがあります。チャンクタグ付けとコレクションのマーク付け機能は、他のほとんどのタスクでカスタムスクリプトを不要にします。 1の価格のための

https://jira.mongodb.org/browse/SERVER-2545 https://jira.mongodb.org/browse/SERVER-4621

0

2つの答え:

  1. 目標:遅いバランシング - カスタムバランサー可能性よりゆっくりと書かれ、各バランスラウンドの間に時間の遅れが加えられます。これは、他の(おそらくより重要な)アプリケーションとスループットを共有している場合に、IOPS /ディスクスループットを下げるために使用できます。あなたのデーモンでunixの「nice」を使う方法や、スケジュールを使うようにバランシングを設定する方法をお勧めします(Mongoのドキュメントを参照)。

注:MongoDBのバージョン2.4では、デフォルトでは、データがチャンクの移行を進めて行く前にセカンダリに書かれていることを確認するためにsecondaryThrottleに変更しました。セカンダリを無効にするだけであれば、チャンクの移行が大幅に遅くなる可能性があります。この問題を解決するには、次のように入力します

use config 
db.settings.update({"_id":"balancer"},{$set:{"_secondaryThrottle":false}}) 
  1. 目標:より高速な分散 - 我々は、すべてのバランサーを知っているが乱暴に異種のチャンクが日のために、カウントバランスをとるために永久に取ることができます。私はこの種のバランサーを書いたことはありませんが、それがどのように1つになるかを簡単に見ることができます。一度に1つのチャンクしか移動できないという前提があります。私たちがたくさんの断片(例えば48本)を持っていて、それぞれが独自のディスク/デバイスを持っていると仮定すると、この移行の概念はマイグレーションされる断片/チャンクをペアにすることによって、平行。

わからないことは、これが設定サーバーに与える影響です。設定サーバーが動作している状態で、2つ以上の同時動作があった場合に壊れてしまうという前提がありますか?設定サーバーのコードを見る時のように聞こえます。

私たちがこのような動物を書いた場合、それが役に立ったり、痛みや死をもたらしたり、さらに悪いことにミシシッピに住むことが強制されるのかどうか、10Genに尋ねることができます。