2017-07-06 7 views
0

私はモバイルデバイスでIoTソリューションを実装しており、Azure Cosmos DBに最適なパーティションキーが何であるか不思議です。デバイスコレクションの主な質問は、特定のエリアにあるデバイスの種類です。 SELECT * FROM MyCollection m WHERE ST_WITHIN(m.Location、{'type': 'Polygon'、 'coordinates':...})ST_WITHIN空間クエリで選択するパーティションキー

現在、私はパーティションキーとしてDeviceIDを使用しています。 6000の異なる値。 Locationプロパティはクエリで使用されるため、より良いパーティションキーになるでしょうか?場所はポイントタイプです。

答えて

0

モバイルデバイスでIoTソリューションを実装しており、Azure Cosmos DBに最適なパーティションキーが何であるか不思議です。

最高のパーティションキーは何ですか?しかし、official documentからパーティションキーを選択する方法についていくつかの提案を得ることができます。 以下はofficial documentのスニペットです。

パーティション・キーを選択するための2つの重要な考慮事項があります:+

境界は、クエリとトランザクション用:パーティション・キーの選択は、配布するための要件に対するトランザクションの使用を有効にする必要がバランスをとる必要がありますエンティティを複数のパーティションキーにまたがってスケーラブルなソリューションを確保します。ある極端な場合、すべてのアイテムに対して同じパーティションキーを設定できますが、これによりソリューションのスケーラビリティが制限される場合があります。他の極端な場合、各アイテムに固有のパーティションキーを割り当てることができます。これはスケーラビリティは高くなりますが、ストアドプロシージャやトリガによるクロスドキュメントトランザクションを使用できなくなります。理想的なパーティションキーは、効率的なクエリを使用できるようにするもので、ソリューションのスケーラビリティを確保するのに十分なカーディナリティを備えています。

ストレージおよびパフォーマンスのボトルネックが発生しない:書き込みをさまざまな異なる値に分散できるプロパティを選択することが重要です。同じパーティションキーへの要求は、単一のパーティションのスループットを超えることはできず、抑制されます。そのため、アプリケーション内で「ホットスポット」にならないパーティションキーを選択することが重要です。単一のパーティションキーのすべてのデータはパーティション内に格納する必要があるため、同じ値のデータ量が多いパーティションキーは避けることも推奨します。