繁体   English   中英

Azure cosmos DB分区键设计选择

[英]Azure cosmos DB partition key design selection

选择分区键是 Azure Cosmos DB 中一个简单但重要的设计选择。 在提高性能和成本 (RU) 方面。 Azure cosmos DB 不允许我们更改分区键。 所以select右分区键非常重要。

我浏览了 Microsoft 文档链接

但是我仍然对选择分区键感到困惑

下面是项目结构,我打算创建

{
   "id": "unique id like UUID", # just to keep some unique ID for item
   "file_location": "/videos/news/finance/category/sharemarket/it-sectors/semiconductors/nvidia.mp4", # This value some times contains special symbols like spaces, dollars, caps and many more 
   "createatedby": "andrew",
   "ts": "2022-01-10 16:07:25.773000",
   "directory_location": "/videos/news/finance/category/sharemarket/it-sectors/semiconductors/", 
   "metadata": [
      {
        "codec": "apple",
        "date_created": "2020-07-23 05:42:37",
        "date_modified": "2020-07-23 05:42:37",
        "format": "mp4",
        "internet_media_type": "video/mp4",
        "size": "1286011"
      }
    ],
   "version_id": "48ad8200-7231-11ec-abda-34519746721"
}

我正在使用 Azure 宇宙 SQL API。 默认情况下,Azure cosmos 负责索引所有数据。 在上述情况下,所有属性都被索引。

对于阅读项目,我使用 file_location 属性。 我可以将 file_location 作为主键吗? 或任何其他需要考虑的事情。

几点注意事项:

file_location 值包含特殊字符,如空格、逗号、美元等等。

很少有容器包含 1.5 亿个条目,很少有容器只包含 2000 万个条目。

我的操作是

随着新视频的添加,更多的读取,频繁的写入,更少的更新,以防视频发生变化。

选择分区键时要记住的几件事:

  • 在读取数据时观察查询参数,它们可以很好地提示您候选分区键是什么。
  • 您提到很少有容器包含 1.5 亿个文档,很少有容器包含 2000 万个文档。 重要的是哪些容器收到了更多的请求,而不是存储在容器中的文档数量。 如果少数容器收到太多请求,则表明分区键设计不佳。
  • 尝试在容器之间尽可能均匀地分配请求负载,以便在物理分区之间均匀分布。 否则,您将遇到热分区问题,并且将通过增加吞吐量来解决问题,这将花费您更多的美元。
  • 尽量限制跨分区查询

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM