如果需要更新文档中的数组,使用 DocumentDB 是个不错的选择?
Good choice to use DocumentDB if needed to update the array in the document?
如果需要更新文档中的数组,使用DocumentDB是一个不错的选择吗?还是不是?
老大决定在这个项目中使用DocumentDB。我开始研究它并开始思考也许 DocumentDB 不是一个好的选择。
我们有一个 webjob,每天运行几次,它使用 API 来获取文档 (json)。这个json,包括一些字段:id,_ts, ... 还有一个数组,就是历史数据(过去30天):
{"date": "2016-08-01", "value": "100", ....},
{"date": "2016-08-02", "value": "100", ....},
{"date": "2016-08-03", "value": "100", ....},
...
本来我们是把每一个文档都保存下来,后来发现要合并这些文档才能得到过去30天以上的数据。所以,过程是:
1) 获取包含所有数据的主文档,解析它以获取 'key' 字段。在这种情况下,它是日期。
2)调用api,获取新数据,解析得到数组。如果 'date' 不存在,则插入#1,如果存在,则在主文档中更新它。
3) 更新主文档。
基本上,这更像是使用 documentDB 作为 SQL 服务器,根据 'key' 更新行。我看到的一个可能的问题是:超时,文档的大小可能非常大,这意味着在#1 和#3 中,我们需要解析和更新一个巨大的 json 文件。这肯定会降低性能。这就是为什么我开始认为在这种情况下我们不应该使用 documentDB。
想听听别人的意见再跟老板提。
谢谢
您可能需要重新考虑将单个文档聚合成一个大文档的设计。首先,文档的最大大小有限制。查看 DocumentDB quotas
,截至今天,DocumentDB 集合中文档的最大大小可以达到 512KB。
我仍然会考虑使用 DocumentDB 来存储 JSON 文档(尽管您需要考虑它的成本方面)。它具有出色的查询支持。也许您可以在文档集合上创建适当的索引。在那种情况下,您不需要聚合数据。
如果需要更新文档中的数组,使用DocumentDB是一个不错的选择吗?还是不是?
老大决定在这个项目中使用DocumentDB。我开始研究它并开始思考也许 DocumentDB 不是一个好的选择。
我们有一个 webjob,每天运行几次,它使用 API 来获取文档 (json)。这个json,包括一些字段:id,_ts, ... 还有一个数组,就是历史数据(过去30天):
{"date": "2016-08-01", "value": "100", ....},
{"date": "2016-08-02", "value": "100", ....},
{"date": "2016-08-03", "value": "100", ....},
...
本来我们是把每一个文档都保存下来,后来发现要合并这些文档才能得到过去30天以上的数据。所以,过程是:
1) 获取包含所有数据的主文档,解析它以获取 'key' 字段。在这种情况下,它是日期。
2)调用api,获取新数据,解析得到数组。如果 'date' 不存在,则插入#1,如果存在,则在主文档中更新它。
3) 更新主文档。
基本上,这更像是使用 documentDB 作为 SQL 服务器,根据 'key' 更新行。我看到的一个可能的问题是:超时,文档的大小可能非常大,这意味着在#1 和#3 中,我们需要解析和更新一个巨大的 json 文件。这肯定会降低性能。这就是为什么我开始认为在这种情况下我们不应该使用 documentDB。
想听听别人的意见再跟老板提。
谢谢
您可能需要重新考虑将单个文档聚合成一个大文档的设计。首先,文档的最大大小有限制。查看 DocumentDB quotas
,截至今天,DocumentDB 集合中文档的最大大小可以达到 512KB。
我仍然会考虑使用 DocumentDB 来存储 JSON 文档(尽管您需要考虑它的成本方面)。它具有出色的查询支持。也许您可以在文档集合上创建适当的索引。在那种情况下,您不需要聚合数据。