我应该在Azure DocumentDB中创建更多文档还是使用数组创建更少的文档?

时间:2017-07-18 12:22:42

标签: azure azure-cosmosdb

我应该为DocumentDB中每个数据库的条目创建一个单独的文档,还是应该创建一个文档并创建一个包含所有元素的数组?

e.g。如果我有大约30k-40k的产品,这些产品在类别的基础上有所区别,那么我应该制作30k文件,每个产品用于产品,还是应该按类别制作文件并将产品添加到该类别文档的数组中?

我想知道性能和成本因素。

1 个答案:

答案 0 :(得分:1)

没有"对"回答文档建模,成本和性能,因为它完全取决于您的应用程序和数据,但从客观的角度来看:

如果有无界数组,最终将超出文档的最大大小限制。然后您的数据模型将被破坏。

此外,阵列越大,操作包含数组的文档的成本就越高(例如,更新以添加更多项目)。

例如,如果您有40,000个产品(根据您的问题'描述):如果您将这些产品存储在一个阵列中,您每次都需要查询该阵列,而不仅仅是拉动产品&#39的文件。另外:产品有多大(ID,描述,图像链接等)?信息越大,它在文档中消耗的存储就越多。

另外:由于最大文档大小为2MB:如果您有40,000个产品,那么每个产品只能容纳大约50个字节。

另一方面,如果每个产品只有一个文档,则可以轻松查询特定产品。您可以拥有非常大的产品描述,而无需担心超出最大文档大小。您可以在另一个文档(相对于一系列产品文档)中拥有产品ID数组(如果需要的话)。

关于成本,效率等方面的问题:只有通过一些基准测试(并检查每次插入/读取/查询的RU成本),您才能确定该部分。

相关问题