mongoでの単純なシャーディング設定のように見える問題が発生しています。
2つのシャード、1つのmongosインスタンス、および1つの構成サーバーを次のように設定しています。
マシンA-10.0.44.16-構成サーバー、mongos
マシンB-10.0.44.10-シャード1
マシンC-10.0.44.11-シャード2
コレクション内のすべてのドキュメントに存在し、4つの値のいずれかを含むフィールドであるシャードキー「SeedType」を持つ「Seeds」というコレクションがあります(以下のシャーディングステータスを確認してください)。値のうちの2つには、他の2つよりも大幅に多くのエントリがあります(2つにはそれぞれ784,000のレコードがあり、2つには約5,000のレコードがあります)。
私が期待している動作は、InventoryPOSを使用した「Seeds」コレクションのレコードが一方のシャードに配置され、InventoryOnHandを使用したレコードがもう一方のシャードに配置されることです。
ただし、2つの大きなシャードキーの両方のすべてのレコードがプライマリシャードに配置されるようです。
これが私のシャーディングステータステキストです(わかりやすくするために他のコレクションは削除されています):
---シャーディングステータス--- シャーディングバージョン:{"_id":1、 "バージョン":3} 破片: {"_id": "shard0000"、 "host": "10.44.0.11:27019"} {"_id": "shard0001"、 "host": "10.44.0.10:27017"} データベース: {"_id": "admin"、 "partitioned":false、 "primary": "config"} {"_id": "TimMulti"、 "partitioned":true、 "primary": "shard0001"} TimMulti.Seedsチャンク: {"SeedType":{$ minKey:1}}->> {"SeedType": "PBI.AnalyticsServer.KPI"} on:shard0000 {"t":2000、 "i":0} {"SeedType": "PBI.AnalyticsServer.KPI"}->> {"SeedType": "PBI.Retail.InventoryOnHand"} on:shard0001 {"t":2000、 "i":7} {"SeedType": "PBI.Retail.InventoryOnHand"}->> {"SeedType": "PBI.Retail.InventoryPOS"} on:shard0001 {"t":2000、 "i":8} {"SeedType": "PBI.Retail.InventoryPOS"}->> {"SeedType": "PBI.Retail.SKU"} on:shard0001 {"t":2000、 "i":9} {"SeedType": "PBI.Retail.SKU"}->> {"SeedType":{$ maxKey:1}} on:shard0001 {"t":2000、 "i":10}
私は何か間違ったことをしていますか?
半無関係な質問:
mongoサービス全体をブロックせずに、あるコレクションから別のコレクションにオブジェクトをアトミックに転送するための最良の方法は何ですか?
よろしくお願いします、-Tim