2016-09-28 13 views
2

書き込みスケーリングを提供するために、私はスタンドアロンのmongoDBを断片化されたクラスタに変換することに決めました。問題は、クラスターの書き込み操作が均等に分散されていることを保証するために、ランダム性の高いシャードキーを見つけることができず、すべてのコレクションに複合ユニークインデックスがある限り、ハッシュされたシャードキーを使用できません。データを分割する方法は?

私は2つのソリューションを参照してください。シャードキーとして一意のインデックスの接頭辞を使用するには

  1. を。しかし、貧弱な分布を無視しても、何らかの形ですべてのチャンクがプライマリシャードに配置され、その後バランサがシャードを横切ってそれらを分散することは許容できません。ハッシュされたシャードキーを使用すると、第1のシャードに負の数が配置され、第2のシャードには正の数が配置されます。 mongoDBで範囲分散を使って両方の断片にチャンクを配布するように強制するにはどうすればよいですか?

  2. タグ認識シャーディングを使用する。しかし、私は次の月のデータを予測することができないので、将来私のタグは不均等に分散する可能性があります。オートメーションデータタギングのための安価なソリューションはないと思います。

複合ユニークキーを持つコレクションのシャーディングソリューションを知っていますか?

+0

UUID(汎用一意識別子)を使用することができ、あなたに重要な時間的局所ますか?その場合は、安いオプションを使用し、タイムスタンプと一緒に行く。 – wulfgarpro

+0

私はそれを持っているか分かりません。タグとしてタイムスタンプの列を使用することを意味しますか?残念ながら、私たちの "タイムスタンプ"は本当のタイムスタンプの時間トランクです。それは "ホットシャード"につながるかどうか? – versificator

+0

[This](https://www.mongodb.com/blog/post/on-selecting-a-shard-key-for-mongodb)は良い書き方です。 – wulfgarpro

答えて

関連する問題