【问题标题】:Defining a Cosmos synthetic partition key in yaml在 yaml 中定义 Cosmos 合成分区键
【发布时间】:2021-05-09 09:37:18
【问题描述】:

我正在使用 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;

【问题讨论】:

  • 你不能把你的分区键属性命名为_partitionKey,当保存值的时候,你创建一个组合tenantIdserialNumber的字符串并保存它?跨度>
  • @GauravMantri,如果这是应该的方式,那么这就是我要做的。好像是缺少c#代码示例,就是很多json。
  • 请查看此链接是否有帮助:docs.microsoft.com/en-us/azure/cosmos-db/….

标签: yaml azure-cosmosdb


【解决方案1】:

根据 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

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

【讨论】:

    猜你喜欢
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    • 2018-11-18
    • 1970-01-01
    相关资源
    最近更新 更多