Cosmos DB数据应该如何构建

问题描述 投票:1回答:1

我目前正在与一个将CosmosDB作为后端存储实现的开发人员团队合作,我对如何使用它有一些疑问。

我知道这些文件应该是平面结构的,但究竟是什么意思呢。

当数据真的是关系型的,并且非常依赖于彼此时,这种设计是正确的,还是SQL数据库更适合?

RetailProduct

{
    "RetailProductId": "123",
    "FriendlyName": "TestRetailProduct",
    "WholeSaleProductId": "100"
}

WholeSaleProduct

{
    "WholeSaleProductId": "100",
    "ProviderID": "112233445566",
    "PhysicalItemsIds": ["1000", "2000", "3000"]
}

提供商

{
    "ProviderId": "112233445566",
    "Description": "ProviderA"
}

RetailProduct或WholeSaleProduct链接了更多文档,但这只是为了概述。

存储这样的数据,被认为是像CosmosDB这样的数据库的良好实践

database azure azure-cosmosdb
1个回答
1
投票

也许这里不是绝对的答案,仅供您参考。事实上,您的数据格式并不限制您选择的数据库,两个数据库都有其优缺点。

关系数据库,如SQL数据库:

关系数据库擅长处理高度结构化的数据,并为ACID(原子性,一致性,隔离性和持久性)事务提供支持。使用SQL查询可以轻松存储和检索数据。由于在不修改现有数据的情况下添加数据很简单,因此可以快速扩展结构。

然而,关系数据库的最大弱点是它们最大的优势。与处理结构化数据一样好,他们很难处理非结构化数据。

像cosmosdb这样的非关系型数据库:

文档存储非常灵活。他们很好地处理半结构化和非结构化数据。用户在设置期间不需要知道将存储哪些类型的数据,因此如果事先不清楚将传入哪种数据,这是一个很好的选择。

NoSQL数据库能够合并任何类型的数据,而不会失去任何扩展能力,并允许用户实时进行更改。

另外,成本也是需要考虑的因素。你可以查看这个帖子:Did anyone run any comparison between Azure SQL cost vs DocumentDB/CosmosDB cost?

在我看来,如果你的数据几乎总是结构化的,业务逻辑是高度耦合的,那么我建议使用sql数据库。如果您的数据只是部分结构化,并且数据格式更灵活,更容易横向扩展,我建议您使用Cosmos数据库。

希望它能帮到你。

© www.soinside.com 2019 - 2024. All rights reserved.