📜  Microsoft Azure – 在 Cosmos DB 中选择分区键

📅  最后修改于: 2022-05-13 01:56:17.875000             🧑  作者: Mango

Microsoft Azure – 在 Cosmos DB 中选择分区键

Azure Cosmos DB 利用分区来扩展数据库中的单个容器,从而提高应用程序的性能需求。在分区中,容器中的项目被划分为不同的子集,称为逻辑分区。逻辑分区是根据与容器内的每个项目链接的分区键的值创建的。逻辑分区中的所有项目都具有相同的分区键值。

在本文中,我们将研究如何在 Azure Cosmos DB 中选择分区键。要优化 Cosmos DB 的可扩展性和性能,您需要为容器选择正确的分区键。

首先,寻找一个容器,例如,它具有属性firstname的分区键。

让我们看看数据中的情况。就是这个属性firstname 。这是一个很好的键,因为它存在于容器中的每个文档中,并且具有多种可能的值。我们不能再更改此容器的分区键。您只能在创建新容器时设置它。

如果确实需要更改分区键,则需要创建一个新容器并将数据迁移到该容器。

分区键由路径组成。这可以是/firstname/name/first之类的东西也可以是嵌套属性,只要它是容器中文档的 JSON 属性即可。

JSON 属性将具有类似 Evelyn 的值。一个好的键在容器中的每个文档中都有其属性的值。例如,它可以是名字或内置属性 ID,它是自动生成的,并且在每个文档中都可用。

以下是在选择正确的分区键之前要研究的一些最佳实践:

  1. 键的值不应该改变。姓氏可能不是一个好名字,因为当人们结婚或离婚时,姓氏可能会改变。
  2. 键应具有大范围的值。对于许多人来说,名字会有所不同,并且当使用唯一值时,像 ID 这样的名称非常有效。这优化了分区的使用并提高了性能。
  3. 分区键可以具有字符串或数字类型的值,一旦为容器创建了键,就不能再更改它。

注意:有一个例外。如果你的容器很大并且读取量很大,这意味着它有 30,000 个或更多的 RU 分配给它,或者它大于 100 GB。

如果是这种情况,那么分区键应该是您的查询经常过滤的东西。如果您的查询对用户 ID 进行了很多过滤,那可能是一个很好的分区键。为 Azure Cosmos DB 容器选择正确的分区键时,可以优化性能。