【问题标题】:CosmosDB partion keyCosmos DB 分区键
【发布时间】:2019-09-05 15:02:00
【问题描述】:

下面是 cosmos 文档 db 对象,表示职位的候选人档案对象。对象形成仍处于初始阶段,给出的属性最少。基于下面的数据对象,我正在考虑使用名称、位置等多个属性进行分区。感谢您在选择分区键时的指导/输入。该对象有可能随着更多数据而变大,但目前这是我们计划在第 1 阶段实施的目标

{
"Guid": "7ce84d91-7bf3-4b98-a945-108464cc6282",
"Name": {
    "FirstName": "Manu",
    "LastName": "San Martin",
    "PreferredName": "Juan",
    "MiddleNameInitial": "M",
    "MiddleName": "Manuel"
},
"Location": {
    "Country": {
        "Id": 0,
        "Name": "US"
    },
    "Address1": "Bv Chacabuco 421",
    "Address2": "",
    "City": "new york",
    "State": "new york",
    "Zip": "10001"
},
"Contact": {
    "EmailAddress": "qa@wawaqsa.com",
    "EmailOptOut": "qa@wawawaqa.com",
    "PhoneNumber": "1253647851",
    "PhoneType": "Mobile"
},
"Opportunity": {
    "InterestLevel": "string",
    "Elegibility": "string"
},
"Enabled": true,
"AvailableDate": "2019-08-17T00:00:00",
"Skills": null,
"Preferences": null,
"SocialMediaHandles": null,
"id": "0f3277f2-5b73-4dfb-b31b-df65bcb8d20b",
"DeletedAt": null,
"IsLatest": true,

}

【问题讨论】:

  • 问题在于它取决于您的用例。如果您的应用程序的写入量很大,那么优先级可能是分区键,它会导致写入均匀地分布在分区之间。如果应用是读取繁重的应用,那么您要尝试确保大多数常见查询可以查询单个分区,而不是进行跨分区查询。
  • 您是给每个应用程序一个唯一的 GUID 还是要使用另一个数字?为什么 GUID 和 ID 不同?机会应该是一个数组吗?一个人可能正在申请多个职位,因此您希望将职位与该人关联起来。

标签: c# azure azure-cosmosdb


【解决方案1】:

在 cosmos db 中,我们应该考虑选择一个分区键,该分区键具有广泛的值和访问模式,并且均匀分布在逻辑分区中。这有助于将容器中的数据和活动分散到一组逻辑分区中。

您选择的分区键应平衡高效分区查询和事务的需求与跨多个分区分布项目以实现可扩展性的目标。分区键的候选对象可能包括在查询中经常作为过滤器出现的属性。通过在过滤谓词中包含分区键可以有效地路由查询。

对您来说,我认为位置或名称是最常见的查询条件,您可以考虑将它们作为 pk。最重要的是结合自己的业务发展需求。

BTW,PK的选择意义重大。一旦选中,以后cosmos db将不支持修改或删除。

【讨论】:

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