Azure Cosmos DB表中查找表的分区键

杰克·马尔凯蒂(Jack Marchetti)

我有一个非常简单的查询表,想从Azure函数调用。

模式非常简单: Name | Value 1 | Value 2

名称将是唯一的,但值1和值2将不是唯一的。查找表中没有其他数据。

对于Azure表,您需要一个分区键和一个行键。显然,行键将是Name字段。

我到底应该为分区密钥使用什么?

现在,我使用常量是因为不会有大量数据(最多可能是几百行),但是使用常量似乎有悖常理。

保罗

此答案适用于所有Cosmos DB容器,包括表。

什么时候将Cosmos DB容器存储在单个分区中(使用常量作为分区键)有意义?

  • 如果您确定容器的数据大小将始终保持在10GB以下。
  • 如果您确定容器的吞吐量要求始终保持在10,000 RU / s(RU /秒)以下。

如果以上条件之一为假,或者您不确定数据大小或吞吐量要求的未来增长,则可以根据以下准则使用分区键来扩展容器。

分区在Cosmos DB中的工作方式

Cosmos根据分区键将容器项分为一组逻辑分区然后将这些逻辑分区映射到物理分区物理分区是组成基础数据库基础结构的计算/存储单元。

您可以通过选择分区键来确定如何将数据拆分为逻辑分区。您无法控制将逻辑分区映射到物理分区的方式,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成本并可能会降低性能。如果您经常基于多个字段进行过滤,请参阅本文以获取指导。

概要

  • 在Cosmos DB中对容器进行分区的主要目的是允许容器在存储和吞吐量方面进行扩展。
  • 数据大小或吞吐量要求不会显着增长的小型容器可以使用单个分区。
  • 大型容器,或预期在数据大小或吞吐量要求方面增长的容器,应使用精心选择的分区键进行分区。
  • 分区键的选择至关重要,可能会严重影响您的扩展能力,RU成本和查询性能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Azure Cosmos DB 分区

来自分类Dev

在Azure Cosmos Db中没有分区键的批量删除

来自分类Dev

Azure Cosmos DB查询

来自分类Dev

Azure Cosmos DB批量导入

来自分类Dev

批量插入Azure Cosmos DB

来自分类Dev

Azure Cosmos DB 中嵌套字段的索引

来自分类Dev

Azure Cosmos DB-提供分区键以进行查询的方式不同吗?

来自分类Dev

Azure Cosmos DB的重写入分区密钥策略

来自分类Dev

Azure Cosmos DB Mongo-资源令牌

来自分类Dev

不支持Azure Cosmos DB查询

来自分类Dev

Azure 函数 - Cosmos DB 删除文档问题

来自分类Dev

在 azure Cosmos db 上创建集合太慢

来自分类Dev

Azure Cosmos DB sql join 和 udf

来自分类Dev

Azure函数的Azure Cosmos DB输入绑定不起作用

来自分类Dev

使用 JavaScript Azure 函数写入 Azure Cosmos DB

来自分类Dev

从 azure 函数写入 azure cosmos db 不会创建任何实体

来自分类Dev

了解选择操作| Azure Cosmos数据库表API

来自分类Dev

如何在Azure Cosmos DB中深度搜索JSON?

来自分类Dev

Azure Cosmos DB-Where查询中的动态OR子句

来自分类Dev

在 Azure Functions 中参考 Cosmos DB nuget 包

来自分类Dev

Azure Cosmos DB-我可以使用并非所有文档都存在的JSON字段作为分区键吗?

来自分类Dev

在Microsoft.Azure.Cosmos.Client上跨分区启用查询

来自分类Dev

无法使用Microsoft.EntityFrameworkCore.Cosmos连接到Azure Cosmos Db帐户-响应状态代码

来自分类Dev

从Azure表中检索分区中的所有行键

来自分类Dev

Azure存储队列-Cosmos DB输出-错误处理

来自分类Dev

如何使用Cosmos DB触发器构建Azure功能?

来自分类Dev

如何在Azure Cosmos DB中使用SUM聚合功能

来自分类Dev

Azure Cosmos graph db支持的Gremlin和Tinkerpop版本

来自分类Dev

Azure Cosmos DB相关子查询无法按预期工作

Related 相关文章

热门标签

归档