Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure cosmosdb UniqueId或UniqueId的子串作为Cosmos DB中的分区键?_Azure Cosmosdb_Partitioning - Fatal编程技术网

Azure cosmosdb UniqueId或UniqueId的子串作为Cosmos DB中的分区键?

Azure cosmosdb UniqueId或UniqueId的子串作为Cosmos DB中的分区键?,azure-cosmosdb,partitioning,Azure Cosmosdb,Partitioning,我们有一个Cosmos数据库集合,其中包含大约100万个包含用户信息的文档。每天添加或更新的内容不多。然而,我们需要非常高的读吞吐量 大多数查询将基于UserId。UserId属性是由一个运行数字和一个校验数字组成的数值 根据官方文件 有些人可能会认为,完整的UserId和UserId的子字符串(比如最后4位)都可以成为一个好的分区键,即 平均分配请求和存储 查询可以“高效地”路由到相应的分区 提供高基数 将来,我们每个用户ID可能有多个文档,但假设不超过5个 我的理解是,分区数量和

我们有一个Cosmos数据库集合,其中包含大约100万个包含用户信息的文档。每天添加或更新的内容不多。然而,我们需要非常高的读吞吐量

大多数查询将基于UserId。UserId属性是由一个运行数字和一个校验数字组成的数值

根据官方文件

有些人可能会认为,完整的UserId和UserId的子字符串(比如最后4位)都可以成为一个好的分区键,即

  • 平均分配请求和存储
  • 查询可以“高效地”路由到相应的分区
  • 提供高基数
将来,我们每个用户ID可能有多个文档,但假设不超过5个

我的理解是,分区数量和每个分区的文档数量之间的平衡也是可取的。因此,在一百万个分区中,每个分区有一个文档也不理想。然而,在这方面,一位微软工程师建议使用完整的唯一标识符作为分区键。(值得注意的是,我们的情况略有不同,因为这里的UserId是一个运行的数字,而不是一个随机的GUID)。此外,在的注释中还建议使用ID作为分区键

因此,考虑到: a) 此集合主要用于读取操作, b) 我们将拥有100万到200万个用户ID, c) 每个用户ID的文档不会超过5个, d) 我们不需要跨多个用户执行SP或事务。 哪个分区键性能更好

  • 完整用户标识
  • 用户ID的子字符串(例如,最后4位数字)

  • 根据@RafatSarosh的评论和进一步的研究,我了解到拥有数百万个分区和每个分区一个文档并不是一个坏做法,我们可以依靠Cosmos DB查询执行优化

    我们将使用userId作为分区键


    HTH

    据我所知,在大多数情况下,您将使用直接获取用户ID,而无需任何高RU查询。在这种情况下,我最好将userId保留为partitionKey。但是,您将失去使用1个以上的用户changesThanks@OlgaShumeliuk运行存储过程、触发器等的能力。我们正在探索这一选择。我们对跨多个用户标识的事务没有任何要求,所以这不是问题。所以问题是,每个分区只有很少的文档(大部分只有一个)和那么多的分区是否会影响性能?这是推荐的做法吗?我猜您的困惑源于试图将分区键映射到物理分区。您不应该担心物理分区与分区键的映射。您应该努力拥有数百万个分区密钥,CosmosDB将在5个分区或500个分区上智能地分发它们。你不用担心。每个分区1到5个文档是完全可以的,但正如Oolga所说,SP将一次处理一个分区。可能这段视频会清除Hi@Paco de la Cruz,我面临的情况与您完全相同,但我的问题是我将拥有100万到200万用户,我需要确保查询四个字段中的一个字段,而这些字段不是用户ID。因此,当您说“我们可以依赖Cosmos DB查询执行优化”时你指的是这类查询吗?查看我的文章,这在您的场景中可能很有用。