前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MongoDB系列12:MongoDB电子商务产品目录模型设计

MongoDB系列12:MongoDB电子商务产品目录模型设计

作者头像
大数据和云计算技术
发布2018-07-26 15:37:13
1.3K0
发布2018-07-26 15:37:13
举报

邓开表同学实战MongoDB系列文章,非常不错,赞!大力推荐!

本文是第12篇,主要讲述MongoDB电子商务产品目录模型设计实战操作,非常值得一看。

MongoDB系列文章:

MongoDB安全实战之Kerberos认证

MongoDB Compass--MongoDB DBA必备的管理工具

MongoDB安全实战之审计

MongoDB安全实战之SSL协议加密

MongoDB安全实战之网络安全加固

MongoDB索引的介绍

MongoDB存储引擎

MongoDB集合的增量更新

MongoDB数据迁移到MySQL

Change Streams构建实时同步数据流

Munin监控MongoDB



电子商务的产品目录必须具有存储不同属性的许多不同类型的对象的能力。这些类型的数据集合与MongoDB的数据模型非常兼容。

对于关系型数据库,有几个解决这个问题的解决方案,每个解决方案都有不同的性能配置文件。以下讲述关系型数据库的几个解决方案以及MongoDB的解决方案。

1、关系型数据模型

1) 具体表继承

在关系模型中,一个解决方案就是为每个产品类别创建一个表。比如:视音产品类别;其中电影产品表product_film是视音产品类别的一个继承。

以下两个原因限制了模型的灵活性:

·必须为每个新类别的产品创建新表;

·必须为产品的类型关联所有查询;

2) 单表模型

这个模型使用所有产品类别的单个表,并在需要存储新产品类型的数据时添加新列。

这个模型比表继承更灵活,它允许单个查询跨越不同的产品类型,但是牺牲了空间。

3) 多重表继承

在关系模型中,可以使用多表继承模型表示通用的产品表中的共性,个别类型产品表中有一些变化。

多表继承比单表模型更具空间效率,比具体表继承更灵活一些。然而,该模型需要昂贵的连接操作来获得与产品相关的所有相关属性。

4) 实体属性值模型

关系建模的最终实体模式是实体属性值模式,可以理解为模型的元数据表,在其中创建产品数据的元模型。在这种方法中,只需要维护一个具有三列表,例如,entity(实体),attribute(属性),value(值)。

这个模式是完全灵活的:

·任何实体都可以有任何属性集合;

·新产品类别不需要对数据库中的数据模型进行任何更改;

缺点:所有非平凡查询都需要大量的连接操作,从而导致较大的性能损失。

2、非关系型数据模型

由于MongoDB是一个非关系型数据库,所以产品目录的数据模型可以从这种额外的灵活性中获益。最好的模型使用单个mongoDB集合来存储所有的产品数据,这类似于单表模型的关系模型。MongoDB的动态模式意味着每个文档不需要遵循相同的模式。因此,每个产品的文档只需要包含与该产品相关的属性。

模式

在文档的开头,架构必须包含一般的产品信息,以便于搜索整个目录。然后,包含在产品类型之间变化的字段的详细子文档。例如,一个视音产品示例如下:

对于一个电影产品有领域,一般的产品信息,航运和定价,但也有不同的细节子文档。如下:

小结:

在非关系模型中,MongoDB可以拥有多个值(即数组)的字段,而不需要对字段或值的数量进行任何限制(比如关系模型中的genre_0和genre_1),也不需要连接操作。相比关系模型而言,这节省了昂贵的连接开销。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据和云计算技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Change Streams构建实时同步数据流
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档