代码之家  ›  专栏  ›  技术社区  ›  monstertjie_za

Cosmos数据库数据应该如何结构化

  •  1
  • monstertjie_za  · 技术社区  · 7 年前

    我目前正在与一个开发团队合作,该团队将cosmossdb实现为一个后端存储,我对它的真正用途有一些疑问。

    我知道文件应该是扁平的,但这究竟意味着什么呢?

    当数据真的是相关的,并且相互依赖时,这种设计是正确的,还是SQL数据库更适合?

    零售产品

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

    批发产品

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

    供应商

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

    有更多的文档链接到零售产品或批发商产品,但这只是为了提供一个概述。

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   Jay Gong    7 年前

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

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

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

    然而,关系数据库最大的弱点是其最大优势的镜像。尽管他们擅长处理结构化数据,但他们很难处理非结构化数据。

    非关系数据库,如CosmosDB:

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

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

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

    在我看来,如果您的数据几乎总是结构化的,那么业务逻辑是高度耦合的,那么我建议使用SQL数据库。如果您的数据只是部分结构化的,并且数据格式更灵活,更容易水平缩放,那么我建议您使用cosmos-db。

    希望对你有帮助。