如何存储大型json数组

时间:2018-04-18 16:56:58

标签: azure-cosmosdb

我目前有一个由我的系统生成的大型数据集。它看起来像这样:

[
 {
 "OrderId": "1",
 "A":, "value1A",
 "B":, "value1B"
 },
 {
 "OrderId": "2",
 "A":, "value2A",
 "B":, "value2B"
 }
]

它真的是一个非常简单的列表,但它非常大,并且远远超过单个文档的2MB大小限制。什么是分割/链接所有这些订单的最佳做法,以便很容易将它们作为一个相关列表进行查询?

有没有内置的东西来处理这个?或者我必须修改架构并为每个订单添加某种跟踪ID并将每个订单存储为自己的文档吗?

1 个答案:

答案 0 :(得分:0)

  

对所有这些订单进行分片/链接的最佳做法是什么   很容易将它们作为一个相关列表查询?

所有关于数据结构。当我们的文档大于文档DB 2MB限制时,我们必须考虑拆分文档。如果您对这些订单有明确的分类规则,那么我强烈建议您拆分这些Orders并将分区键添加到它们。

例如:

{
 "Type" : "AAA", 
"OrderId": "1",
 "A":, "value1A",
 "B":, "value1B"
 },
 {
 "Type" : "AAA",
 "OrderId": "2",
 "A":, "value2A",
 "B":, "value2B"
 },
{
"Type" : "BBB",
 "OrderId": "1",
 "A":, "value1A",
 "B":, "value1B"
 },
 {
"Type" : "BBB",
 "OrderId": "2",
 "A":, "value2A",
 "B":, "value2B"
 }

这样您就可以根据分区键方便地检索它们。

不要担心数据模式的更改,您可以使用Cosmos DB Migration Tool批量导出并导入文档db的数据。

希望它对你有所帮助。