当前位置: 首页 > 知识库问答 >
问题:

Cosmos DB中用户配置文件文档的适当分区密钥是什么

杜河
2023-03-14
{
    "id": <<Id>>,   
    "uniqueBusinessId": <<uniqueBusinessId>>,               
    "userName": <<userName>>,                                   
    "isActive": <<isActive>>,                       
    "email" : <<email>>
    "salutation": <<"salutation>>
    "firstName": <<firstName>>,                 
    "middleName": <<middleName>>,                       
    "lastName": <<lastName>>,                                           
    "companyName": <<companyName>>,         
    "jobTitle": <<jobTitle>>        
    "address": [                
        {                                   
            "countryCode": <<Country Code>>,        
            "stateProvinceCode": <<StateProvinceCode>>,     
            "address1": <<addressLine1>>,   
            "address2": null,               
            "city": <<city>>,               
            "postalCode": <<postalCode>>,           
        }
    ]
    "phone": [              
         {          
            "countryCode":  <<Country Code>>,           
            "areaCode": <<area Code>>,          
            "number": <<number>>,       
            "extension": <<extension>>          
        }
    ]
  }

如果我为上面的集合选择uniqueBusinessid作为分区键,这意味着它将创建100万个逻辑分区(并且没有基数)。UniqueBusinessID是分区密钥的合适候选项吗?我可以选择分区键作为/address/city或文档中的任何其他键,以具有良好的基数;但是它会在查询中产生问题,因为它们将是基于UniqueBusinessID的跨分区扫描来过滤文档。

对于上面文档的适当分区键应该是什么有什么建议吗?

共有1个答案

周和志
2023-03-14

记住基数是很好的,但要把业务逻辑和有意义的东西放在一切之上。您希望通过选择一个始终可用的键来消除必须执行跨分区查询的可能性。

您不希望将任何跨分区查询作为应用程序中日常工作流的一部分。

如果您能够在99%的时间内访问is,选择UniqueBusinessID将是一个不错的选择。它将允许良好的性能和低成本的操作。

 类似资料:
  • null 关于如何管理分区密钥的依赖关系,您有什么建议吗?或者我没有根据cosmosdb最佳实践以最佳方式对数据层建模?

  • 我有一个Azure CosmosDB SQP API帐户,其中包含一个容器“EmployeeContainer”,分区键为“PersonID”。我在这个容器中有三种不同类型的集合。它们的模式如下所示: 部门-雇员 如何将数据存储在逻辑分区中?PersonId是分区键,所有集合中都有PersonId。那么,人员id为“p1241234”的人员集合中的文档和人员id为“p1241234”的人员-部门集

  • 配置文件分为用户级配置和项目级配置。 用户级配置包含用户的环境及 UI 相关的选项,包括: 用户选项 中的所有内容。 扩展工具,包括已配置的扩展列表。 其他工具中的UI相关选项,例如 Target 组件下 站点地图 的选定视图。 项目级配置包含在特定目标应用程序上执行的工作相关的选项,包括: 项目选项中的所有内容。 单个Burp工具中的非UI相关选项,例如 代理 (Proxy) 和 扫描器 (Sc

  • 单一注销(SLO)下的SAML核心(SAML-Core-2.0-os:3.7.1)和SAML配置文件(SAML-Profiles-2.0-os:4.4.3.1)规范中提到了“LogoutRequest”。SLO需要“sessionIndex”才能工作,否则无法映射会话参与者。然而,根据核心规范,sessionIndex是一个可选元素。因此,这意味着即使SLO配置文件未启用/不受支持,也可以发送Lo

  • 我已经配置了一个配置文件来只运行集成测试,但它仍然在运行所有测试。这是配置: 我试过正则表达式,就像在http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html但我发现这不管用。我怎样才能让测试以IT.java结束?

  • 问题内容: 我们正忙于为客户开发Java Web服务。有两种可能的选择: 将加密的用户名/密码存储在Web服务客户端上。从配置读取。客户端上的文件,解密并发送。 将加密的用户名/密码存储在Web服务器上。从配置读取。Web服务器上的文件,解密并在Web服务中使用。 Web服务使用用户名/密码来访问第三方应用程序。 客户端已经具有提供此功能的类,但是此方法涉及以明文方式发送用户名/密码(尽管在内联网