簡體   English   中英

如何為 Azure Cosmos DB 確定一個好的分區鍵

[英]How to decide a good partition key for Azure Cosmos DB

我是 Azure Cosmos DB 的新手,但我想對以下內容有一個生動的了解:

  1. 什么是分區鍵?

目前我的理解很膚淺 -> 具有相同分區鍵的項目將轉到相同的分區進行存儲,當系統變大時可以更好地進行負載平衡。

  1. 如何決定一個好的分區鍵? 有人可以提供一個例子嗎?

非常感謝!

1.什么是分區鍵?

在 azure cosmos db 中,有兩個分區: physical partitionlogical partition

答:物理分區是固定數量的保留 SSD 支持的存儲與可變數量的計算資源相結合。

B. 邏輯分區是物理分區內的一個分區,用於存儲與單個分區鍵值相關聯的所有數據。

我認為你提到的分區鍵是邏輯分區鍵。分區鍵充當數據的邏輯分區,並為 Azure Cosmos DB 提供跨物理分區分布數據的自然邊界。更多詳細信息,您可以參考如何分區工作

2.如何確定一個好的分區鍵? 有人可以提供一個例子嗎?

您需要考慮選擇一個具有廣泛值和甚至訪問模式的屬性名稱。理想的分區鍵是在您的查詢中經常作為過濾器出現並且具有足夠基數以確保您的解決方案可擴展的分區鍵。

例如,您的數據具有名為 id 和 color 的字段,並且您更頻繁地將顏色作為過濾器進行查詢。您需要為分區鍵選擇顏色而不是 id,這對您的查詢性能更有效。 因為每個項目都有不同的id,但可能有相同的顏色。它的范圍很廣。 此外,如果您添加顏色,分區鍵是可擴展的。

更多詳細信息,請閱讀Azure Cosmos DB 中分區和縮放

希望對你有幫助。

您必須根據工作負載選擇分區。 它們可以分為兩種。

  • 重讀
  • 寫重

讀取繁重的工作量是讀取的數據多於寫入的數據,例如產品目錄,目錄的插入/更新頻率較低,瀏覽產品的人較多。

寫入繁重的工作負載是寫入數據多於讀取數據的工作負載。 常見場景是 IoT 設備從多個傳感器發送多個數據。 您將向 Cosmos DB 寫入大量數據,因為您可能每秒都會收到數據。

對於讀取繁重的工作負載,請選擇分區鍵,該屬性用於過濾查詢 產品示例將是產品 id,主要用於在用戶想要閱讀信息和瀏覽其評論時獲取數據。

對於寫入繁重的工作負載,請選擇分區鍵,其中屬性更獨特 例如,在IoT場景中,使用deviceid_signaldatetime等分區鍵,將發送信號的device-id串聯起來,信號的DateTime更具唯一性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM