1

次のユースケースを持つ追跡プラットフォームを構築しています。

  1. 50,000 台の車両を追跡する必要がある
  2. 各車両は 60 秒ごとに位置を中継します。
  3. X km の範囲内のすべての車両を返す API を取得します。

したがって、書き込みをスケーリングし、クエリの分離も実現する必要があります。シャード キー (geohash) として地理的リージョンを持つシャード クラスターを作成できます。これにより、書き込みのバランスを取り、クエリの分離も実現できます。しかし、この場合、車両がリージョン間を移動すると、mangodb は自動的にドキュメントを新しいシャードに移動するのでしょうか?

4

1 に答える 1

2

一度書き込まれたレコードのシャード キー フィールドを変更することはできません。リージョンをシャード キーとして使用すると、元のリージョンのレコードを削除し、新しいリージョンを使用して挿入しない限り、リージョン間を移動できなくなります。

シャード キーを選択する際は、最も一般的なクエリ パターンに一致するものを探します。シャード キーに対してクエリを実行すると、シャードから直接レコードを取得できます。シャード キーを使用しないクエリは、すべてのシャードに対してスキャッター ギャザー クエリを実行する必要があります。

Mongodb 2.4 を使用しているか、使用できる場合で、範囲ベースのクエリを実行する必要がない場合は、シャード キーが単調に増加する場合でも、均等な分散を可能にするハッシュ化されたシャード キーの使用を検討することをお勧めします。シャードキーの選択に関するアドバイスについては、このページを参照してください。

于 2013-04-05T13:56:44.640 に答える