1

ワーカーが数十万のドキュメントを mongodb に並行して一括挿入するジョブ処理システムがあります。各ワーカーはデータ バッチを挿入し、各バッチは同じ group_id に属します。データベース用に 3 つのシャードをセットアップしました。これらの group_id をラウンド ロビン方式で事前に分割したいと考えています。例えば:

group_id: 1 --> シャード1

group_id: 2 --> shard2

group_id: 3 --> shard3

group_id: 4 --> シャード1

group_id: 5 --> shard2

...など

アイデアは書き込みスループットを向上させることであり、ワーカーはグループを段階的に処理するため、この事前分割により、理論的には 3 つのワーカーが互いに待機することなく並列に一括挿入できるはずです (各ワーカーにローカル mongos サーバーがあります)。 )。

タグ付きシャーディング sh.addTagRange() コマンドを使用して上記のアイデアを実装しました。しかし、チャンクが正しく分割されていませんか? すべてが最終的にプライマリ シャードになります。これは、データを事前に分割するという目的全体を無効にします。タグ認識シャーディングがこのキー値のラウンドロビン分散を実装するための適切な方法ではない場合、誰かがその方法でデータを事前に分割するにはどうすればよいでしょうか? どんな助けにも感謝します!

4

0 に答える 0