Azure cosmosdb 如何知道分区密钥在Cosmos DB中是否正常工作

Azure cosmosdb 如何知道分区密钥在Cosmos DB中是否正常工作,azure-cosmosdb,Azure Cosmosdb,我试图创建一个测试宇宙,但对分区键有点困惑。我特别担心的是,当我向容器中添加一个项时,我没有看到分区列下填充了任何值 我想做的是设置一个webscraper,它可以获取文本值。从这个文件中,我选择Source和Date作为分区列,这样我就可以有一个比较均匀的分区分布 然后我创建了一个Cosmos DB并加载了一些测试值: 在设置期间,我写了减去引号/Source/Date的内容,并且我假设在上传该项目后,我会看到这些值被填写。然而,看起来这个测试容器正在寻找一个名为/Source/Date的列

我试图创建一个测试宇宙,但对分区键有点困惑。我特别担心的是,当我向容器中添加一个项时,我没有看到分区列下填充了任何值

我想做的是设置一个webscraper,它可以获取文本值。从这个文件中,我选择Source和Date作为分区列,这样我就可以有一个比较均匀的分区分布

然后我创建了一个Cosmos DB并加载了一些测试值:

在设置期间,我写了减去引号/Source/Date的内容,并且我假设在上传该项目后,我会看到这些值被填写。然而,看起来这个测试容器正在寻找一个名为/Source/Date的列

我做了一个测试,其中我只使用Source作为分区键,它会自动填充该值:

我是不是遗漏了什么?我只能有一列作为分区键吗?如果在第一个屏幕截图中我看到/Source/News为空,这是否意味着没有分区键

我还做了另一个测试,使用了一个唯一的键,在我不能输入重复的Source/Date值的情况下,它确实起了作用,但是当我试图在容器请求分区键的字段中输入逗号时,我得到了一个错误

任何帮助都会有帮助

多谢各位

从该文件中,我选择源和日期作为分区 列,这样我可以有一个稍微均匀的分区分布

我相信您对分区密钥有点误解

当前无法在两个属性上指定分区键。分区键只能在JSON文档中的单个属性上创建

当您指定分区键时,实际上是在指定文档中JSON属性的路径

例如,考虑到您将分区键设置为Source/Date,您的文档将如下所示:

{
  "id": "your document id",
  "Source": {
    "Date": "some date value"
  },
  "Url": "blah blah",
  "Text": "more blah blah",
  "Formal_Source": "even more blah blah"
}
从该文件中,我选择源和日期作为分区 列,这样我可以有一个稍微均匀的分区分布

我相信您对分区密钥有点误解

当前无法在两个属性上指定分区键。分区键只能在JSON文档中的单个属性上创建

当您指定分区键时,实际上是在指定文档中JSON属性的路径

例如,考虑到您将分区键设置为Source/Date,您的文档将如下所示:

{
  "id": "your document id",
  "Source": {
    "Date": "some date value"
  },
  "Url": "blah blah",
  "Text": "more blah blah",
  "Formal_Source": "even more blah blah"
}

我懂了。我相信这就是困惑的根源。我认为我可以在那里添加多个列,然后可以根据源以及添加源时将数据分布到各个列。谢谢你的帮助。只是为了补充一点,我不会使用日期作为分区键。这将导致当前日期的热分区。Hi@MarkBrown,这是一个很好的观点。我认为有了这个web抓取源,它将是一个很好的分区,至少比其他一些分区要好。在高层次上,我所做的就是选择源的域是CNN、Reddit等。然后获取文本。从上面的模式来看,我认为源代码是最好的选择。当然,在分区键范围内均匀分布写操作是一个不错的选择。通常,在这些类型的应用程序(如单击跟踪等)中,有一个容器用于大容量写入,另一个容器用于通过Change Feed连接的具有不同分区键的查询。您是否这样做将取决于查询量和总体查询成本。我明白了。我相信这就是困惑的根源。我认为我可以在那里添加多个列,然后可以根据源以及添加源时将数据分布到各个列。谢谢你的帮助。只是为了补充一点,我不会使用日期作为分区键。这将导致当前日期的热分区。Hi@MarkBrown,这是一个很好的观点。我认为有了这个web抓取源,它将是一个很好的分区,至少比其他一些分区要好。在高层次上,我所做的就是选择源的域是CNN、Reddit等。然后获取文本。从上面的模式来看,我认为源代码是最好的选择。当然,在分区键范围内均匀分布写操作是一个不错的选择。通常,在这些类型的应用程序(如单击跟踪等)中,有一个容器用于大容量写入,另一个容器用于通过Change Feed连接的具有不同分区键的查询。是否这样做将取决于查询量和查询的总体成本。