【问题标题】:Data model in NoSQLNoSQL 中的数据模型
【发布时间】:2018-06-28 09:21:56
【问题描述】:

实际上,我是一名 SQL 开发人员。现在世界正在转向 NoSQL,所以我尝试像 cosmos DB 一样学习 NoSQL。在我的脑海中,一个基本的问题出现了,我一直在思考这个问题。 NoSQL 如何支持面向业务的应用程序。例如,我在 RDBMS 中有 3 个表,它们是客户、产品和订单。在这里,客户和产品是主表,订单是事务表。订单表有两个硕士的参考。在 RDBMS 中为相同创建了三个单独的表,因为在我的表单中我必须在下拉列表或列表视图中显示产品列表,所以我创建为单独的主表。如何在 NoSQL 中设计数据模型,是否产品分表?我很期待。

【问题讨论】:

    标签: database nosql


    【解决方案1】:

    对于您的示例 - 客户、产品和订单实体。您可以通过以下方式进行设计(文档模型):

    产品

    {
        "_id" : "p1",
        "name": "camera"
    },
    {
        "_id" : "p2",
        "name": "mobile"
    }
    

    客户

    {
        "_id" : "c1",
        "name": "sunil",
        "orders": [
            {
                "_id" : "999",
                "date": "05/05/2018",
                "product_id": "p1"
            },
            {
                "_id" : "888",
                "date": "02/09/2018",
                "product_id": "p2"
            }
        ]
    }
    

    从上面你可以看出:

    与 RDBMS 中的三个相比,文档模型中有两个表。 产品详细信息存储在产品表中。订单嵌入 客户表(因此没有连接)以及客户详细信息。

    在关系设计中,将描述实体及其与其他实体的关系,稍后设计查询和索引。在 RDBMS 中,规范化用于消除冗余数据以提高存储效率。连接查询可用于将数据聚集在一起。但是,联接是影响性能和规模的罪魁祸首。

    在 NoSQL 方面,您可以获得诸如支持表分区的 DB 之类的功能,并且您还需要确定如何使用数据(查询)以提供有意义的主索引以供查询。行文档或列应设计为将一起读取的数据组合在一起。使用 NoSQL,您可以对架构进行非规范化以存储在一行中,或者记录在关系世界中具有索引的多个表。按键范围对数据进行分组可按行键快速读取和写入。

    【讨论】:

      猜你喜欢
      • 2015-09-19
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      • 2015-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      相关资源
      最近更新 更多