如何在documentdb中创建复合分区键

时间:2017-05-25 08:19:29

标签: azure azure-cosmosdb

这是我的文档看起来的样子,我想选择分区键为/ department / city;这是两个不同的属性,一个是员工,另一个是来自地址(这是员工的嵌入对象)。我尝试将/ department / address作为分区键,但它没有在data-explorer中列出分区键,我假设它认为city是部门中的属性。

{
  "eid": "",
  "entryType": "",
  "address": 
  {
    "PIN": "",
    "city": "",
    "street": ""
  },
  "name": "",
  "id": "",
  "department": "",
  "age":
}

您能帮我理解我做错了什么,以及如何设计复合分区密钥,并根据部门和城市分发/存储/安排员工数据。

2 个答案:

答案 0 :(得分:2)

  

你能帮我理解我做错了什么,怎么做   设计复合分区键并分发/存储/安排   员工数据基于他们的部门和城市。

如果我没弄错,则不支持当前的复合分区键。在集合中,您必须仅使用一个属性来定义分区键。

但是,如果查看REST API,则将分区键定义为数组(尽管该数组仅包含1个元素)。这告诉我Azure将来可能会支持复合分区键。

因此,现在您选择一个属性(部门或城市)来对数据进行分区,并在另一个属性上定义索引以加快搜索速度。

答案 1 :(得分:0)

在我的CosmosDb多分区集合中,我通常指定partitionKey应该是通用的,并且只使用字面上称为" partitionKey"的属性。这样做的好处是,您可以通过简单地指定对要插入的特定POCO有意义的值,对数据的存储方式进行更精细的控制。

很有可能在某个地方您想要将文档插入到此集合中并且不符合您在此处向我们展示的文档的结构。此时,您必须将文档拆分为多个集合,或者重新设计整个分区键策略。

这里的权衡是,在查询期间,您必须了解如何应用这些值,但这可以通过轻量级ORM层在代码中轻松实施。