在cosmosdb中为每种文档类型都有一个容器的缺点/优点是什么



我正在设计一个cosmos DB数据库,我将所有不同的文档类型保存在一个容器中,并添加了type属性来区分文档类型。我知道这种数据库建模方法的一些优点-

  • 低成本
  • 在同一分区文档中对的事务支持

现在,我来自SQL的上级希望我为每种类型的文档提供容器。但我不知道这种方法的优点或缺点是什么?我试着搜索,但在任何地方都没有明确的答案。另外,我想知道我的方法有什么缺点。

这样做没有任何优势,对这种类型的数据库来说是一种反模式。NoSQL数据存储中的数据应该根据访问方式进行组织。50年前,当关系数据库首次出现时,规范化以围绕存储进行优化是有意义的。但如今,与计算相比,存储成本低廉。

简单的经验法则。若不同的实体可以自然地共享相同的分区密钥,则将其存储在同一容器中,尤其是当需要在同一请求中访问数据时。这降低了访问成本,因为您可以在一个请求(查询(中访问所需的所有数据。如果数据存储在多个容器中,则需要向每个容器发出请求。这既慢又贵。

有很多内容可以解释这些概念,以及为什么不将Cosmos DB用作关系数据库。我强烈建议你的上级看看下面的链接。在使用像Cosmos DB这样的数据库之前,理解这些概念是非常重要的。

Azure Cosmos DB 中的数据建模

如何使用真实世界的示例在Azure Cosmos DB上建模和分区数据

Ignite 2019 Azure Cosmos DB中的会话数据建模和分区:每个关系数据库用户都需要了解

最新更新