2017-07-06 17 views
0

我正在使用移動設備實現IoT解決方案,並想知道Azure Cosmos DB中的最佳分區鍵。我對設備集合的主要查詢是哪些設備位於特定區域,即: SELECT * FROM MyCollection m WHERE ST_WITHIN(m.Location,{'type':'Polygon','coordinates':...})爲ST_WITHIN空間查詢選擇哪個分區鍵

目前,我使用DeviceID作爲分區鍵,它具有約。 6000個不同的值。 Location屬性是一個更好的分區鍵,因爲它在查詢中被使用了嗎?位置類型爲Point。

回答

0

我正在用移動設備實現IoT解決方案,並想知道Azure Cosmos DB中的最佳分區鍵。

很難說什麼是最好的分區密鑰。但是我們可以從official document得到一些關於如何選擇分區鍵的建議。 以下是official document的摘錄。

有選購分區鍵的兩個關鍵因素:+

邊界查詢和交易:你選擇的分區鍵應該平衡需要使對要求事務的使用分配跨越多個分區鍵的實體可確保可擴展的解決方案。在極端情況下,您可以爲所有項目設置相同的分區鍵,但這可能會限制解決方案的可伸縮性。另一方面,您可以爲每個項目分配一個唯一的分區鍵,這將具有高度可擴展性,但會阻止您通過存儲過程和觸發器使用跨文檔事務。一個理想的分區鍵是一個使您能夠使用高效查詢並具有足夠基數以確保您的解決方案具有可擴展性的分區鍵。

沒有存儲和性能瓶頸:選擇允許寫入跨各種不同值分佈的屬性非常重要。對同一分區密鑰的請求不能超過單個分區的吞吐量,並且會受到限制。因此,選擇不會在應用程序中產生「熱點」的分區鍵非常重要。由於單個分區鍵的所有數據都必須存儲在分區中,因此建議避免使用具有相同值的大量數據的分區鍵。