[英]Partition key for a lookup table in Azure Cosmos DB Tables
我有一個非常簡單的查找表,我想從 Azure 函數調用。
架構非常簡單: Name | Value 1 | Value 2
Name | Value 1 | Value 2
名稱將是唯一的,但值 1 和值 2 將不是。 查找表中沒有其他數據。
對於 Azure 表,您需要一個分區鍵和一個行鍵。 顯然,rowkey 將是Name
字段。
我究竟應該使用什么作為分區鍵?
現在,我正在使用常量,因為不會有大量數據(最多可能有幾百行),但使用常量似乎有悖於這一點。
此答案適用於所有 Cosmos DB 容器,包括表。
什么時候將 Cosmos DB 容器存儲在單個分區中(使用常量作為分區鍵)有意義?
如果上述任一條件不成立,或者您不確定數據大小或吞吐量要求的未來增長,那么根據以下指南使用分區鍵將允許容器擴展。
Cosmos DB 中的分區工作原理
Cosmos 根據分區鍵將容器項分組為一組邏輯分區。 然后將這些邏輯分區映射到物理分區。 物理分區是構成底層數據庫基礎架構的計算/存儲單元。
您可以通過選擇分區鍵來確定如何將數據拆分為邏輯分區。 您無法控制邏輯分區如何映射到物理分區,Cosmos 會自動且透明地處理此問題。
跨大量物理分區分布容器是 Cosmos 允許容器擴展到幾乎無限大小和吞吐量的方式。
每個邏輯分區最多可以包含 10GB 的數據。 未分區容器的最大吞吐量為 10,000 RU/s,這意味着每個邏輯分區的限制為 10,000 RU/s。
分配給容器的 RU/s 平均分配到托管容器數據的所有物理分區。 例如,如果您的容器分配了 4,000 RU/s 並且其邏輯分區分布在 4 個物理分區上,那么每個物理分區將分配給它 1,000 RU/s,這也意味着如果您的一個物理分區處於重負載或“熱”,它將被限制在 1,000 RU/s,而不是 4,000。 這就是為什么選擇一個分區鍵非常重要的原因,它可以跨分區均勻分布數據和訪問數據。
如果您的容器位於單個邏輯分區中,它將始終映射到單個物理分區,並且容器的整個 RU/s 分配將始終可用。
所有 Cosmos DB 事務的范圍都限定在單個邏輯分區內,並且存儲過程或觸發器的執行也限定在單個邏輯分區內。
如何選擇一個好的分區鍵
選擇一個分區鍵,將您的數據均勻分布在邏輯分區之間,這反過來將有助於確保數據在物理分區之間均勻映射。 這將防止“瓶頸”或“熱”分區,這將導致速率限制並可能增加您的成本。
選擇一個分區鍵,作為大部分查詢的過濾條件。 通過為您的查詢提供分區鍵作為過濾器,Cosmos 可以有效地將您的查詢路由到正確的分區。 如果未提供分區鍵,則會導致“扇出”查詢,該查詢將發送到所有分區,這將增加您的 RU 成本並可能影響性能。 如果您經常根據多個字段進行過濾,請參閱本文以獲取指導。
概括
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.