对于您的示例 - 客户、产品和订单实体。您可以通过以下方式进行设计(文档模型):
产品
{
"_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,您可以对架构进行非规范化以存储在一行中,或者记录在关系世界中具有索引的多个表。按键范围对数据进行分组可按行键快速读取和写入。