在 yaml 中定义 Cosmos 合成分区键

Defining a Cosmos synthetic partition key in yaml

我正在使用 yaml 文件设置 Azure Cosmos DB,目前我正在将分区键路径设置为 /serialNumber。我现在想使用 tenantId 和 serialNumber 的合成分区键,但找不到任何有关如何在 yaml 中定义合成键的示例。谁能给我举个例子说明如何做到这一点?

我的 yaml 是:

 az cosmosdb sql container create -g $resourceGroup -a $cosmosAccountName -d $databaseName -n $containerName `
        --partition-key-path "/serialNumber" | Out-Null ; Test-Exit

我正在保存的对象有以下字段:

Guid tenantid;
string serialNumber;
List<Users> users;

根据 Cosmos DB 中的最佳实践,对于分区键,您应该选择一个可能具有许多不同值的属性,以避免创建热分区等情况。

如果该属性在您的数据中不可用,Cosmos DB 团队建议创建一个 synthetic partition key。当他们谈论 synthetic partition key 时,他们真正的意思是将存储在该分区键中的数据。您可以将该分区键属性命名为您喜欢的任何名称。

根据您的情况,您的数据如下所示:

{
    "tenantId": "some guid",
    "serialNumber": "some string",
    "users": [
        //Array of users
    ]
}

现在,如果您认为 tenantIdserialNumber 都不是分区键的好选择,您可以在文档中添加另一个属性(例如 _partitionKey)并将其值设置为tenantId Value + serialNumber value。在这种情况下,_partitionKey 将是合成分区键。

您生成的文档将如下所示:

{
    "tenantId": "some guid",
    "serialNumber": "some string",
    "_partitionKey": "<tenantId value>_<serialNumber value>"
    "users": [
        //Array of users
    ]
}

您的 YAML 看起来像:

az cosmosdb sql container create -g $resourceGroup -a $cosmosAccountName -d $databaseName -n $containerName `
        --partition-key-path "/_partitionKey" | Out-Null ; Test-Exit

有关合成分区键的更多信息,请参阅此link:https://docs.microsoft.com/en-us/azure/cosmos-db/synthetic-partition-keys