我有一个非常简单的查询表,想从Azure函数调用。
模式非常简单: Name | Value 1 | Value 2
名称将是唯一的,但值1和值2将不是唯一的。查找表中没有其他数据。
对于Azure表,您需要一个分区键和一个行键。显然,行键将是Name
字段。
我到底应该为分区密钥使用什么?
现在,我使用常量是因为不会有大量数据(最多可能是几百行),但是使用常量似乎有悖常理。
此答案适用于所有Cosmos DB容器,包括表。
什么时候将Cosmos DB容器存储在单个分区中(使用常量作为分区键)有意义?
如果以上条件之一为假,或者您不确定数据大小或吞吐量要求的未来增长,则可以根据以下准则使用分区键来扩展容器。
分区在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成本并可能会降低性能。如果您经常基于多个字段进行过滤,请参阅本文以获取指导。
概要
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句