我有许多(大约 100 条)数据要与 CosmosDB 中的文档相关联。每条数据都很小(大约 100 个字节)。
我的第一个解决方案是将数据作为数组存储在文档中。这工作正常,但为了将新项目附加到数组中,我需要从 CosmosDB 读取文档,添加元素,然后将文档替换回 CosmosDB。
我不想这样做,而是希望将每条数据作为自己的文档存储在同一分区中。与一个聚合文档相比,拥有许多小文档的缺点是什么?
与单个聚合文档相比,拥有许多小文档有哪些缺点?
我想说的是,我建议您存储每一条数据,而不是一个聚合文档。
原因1:正如您在问题中提到的,如果您想将元素添加到文档中,您需要从CosmosDB中读取文档,然后替换该文档,因为目前cosmos db不支持部分更新。(请参阅此反馈并按照需要进行操作: https: //feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/6693091-be-able-to-do-partial-updates-on-document)这是一项庞大而乏味的工作。
原因2:如果你存储了多条数据,你可以平坦地查询它们。(从c中选择*)
对于单个数组文档,需要使用 join 来访问嵌套属性。(select a.array from c join array in c.array)
原因3:如果您存储多条数据,您可以将它们管理到不同的分区中。即使您现在不需要它,为什么不保留该功能以供将来使用。
原因4:至于成本,这完全取决于RU和存储,对cosmos db的请求将消耗RU。如果您存储数据片段,您只需要根据需要访问特定文档,我认为这更经济。
| 归档时间: |
|
| 查看次数: |
426 次 |
| 最近记录: |