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

2018 年 4 月 30 日 大数据和云计算技术 邓开表

邓开表同学实战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_0genre_1),也不需要连接操作。相比关系模型而言,这节省了昂贵的连接开销。


猜你喜欢




#大数据和云计算机技术社区#博客精选(2017)

NoSQL 还是 SQL ?这一篇讲清楚

阿里的OceanBase解密

#大数据和云计算技术#: "四有"社区介绍

大数据和云计算技术周报(第38期)

新数仓系列:Hbase周边生态梳理(1)

《大数据架构详解》第2次修订说明

云观察系列:漫谈运营商公有云发展史

云观察系列:百度云的一波三折

云观察系列:阿里云战略观察

超融合方案分析系列(7)思科超融合方案分析

加入技术讨论群




《大数据和云计算技术》社区群人数已经3000+,欢迎大家加下面助手微信,拉大家进群,自由交流。

喜欢QQ群的,可以扫描下面二维码:

欢迎大家通过二维码打赏支持技术社区(英雄请留名,社区感谢您,打赏次数超过108+):


登录查看更多
1

相关内容

MongoDB 是一种文件导向的 NoSQL 数据库,由 C++ 撰写而成。
【实用书】Python技术手册,第三版767页pdf
专知会员服务
238+阅读 · 2020年5月21日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
122+阅读 · 2020年5月10日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
77+阅读 · 2020年4月24日
NLP基础任务:文本分类近年发展汇总,68页超详细解析
专知会员服务
58+阅读 · 2020年1月3日
【大规模数据系统,552页ppt】Large-scale Data Systems
专知会员服务
61+阅读 · 2019年12月21日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
96+阅读 · 2019年12月4日
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
浅谈 Kubernetes 在生产环境中的架构
DevOps时代
11+阅读 · 2019年5月8日
Python奇淫技巧,5个数据可视化工具
机器学习算法与Python学习
7+阅读 · 2019年4月12日
金融风控面试十二问
七月在线实验室
20+阅读 · 2019年4月9日
推荐系统
炼数成金订阅号
28+阅读 · 2019年1月17日
一张图理清电商后台产品模块,90%的电商类产品后台都适用
人人都是产品经理
8+阅读 · 2018年12月9日
干货 :数据分析师的完整流程与知识结构体系
数据分析
8+阅读 · 2018年7月31日
领域应用 | 图数据库及其在恒昌的应用简介
开放知识图谱
6+阅读 · 2017年10月10日
Arxiv
29+阅读 · 2020年3月16日
Arxiv
12+阅读 · 2019年1月24日
Learning Recommender Systems from Multi-Behavior Data
Physical Primitive Decomposition
Arxiv
4+阅读 · 2018年9月13日
Arxiv
8+阅读 · 2018年1月25日
Arxiv
6+阅读 · 2016年1月15日
VIP会员
相关VIP内容
【实用书】Python技术手册,第三版767页pdf
专知会员服务
238+阅读 · 2020年5月21日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
122+阅读 · 2020年5月10日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
77+阅读 · 2020年4月24日
NLP基础任务:文本分类近年发展汇总,68页超详细解析
专知会员服务
58+阅读 · 2020年1月3日
【大规模数据系统,552页ppt】Large-scale Data Systems
专知会员服务
61+阅读 · 2019年12月21日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
96+阅读 · 2019年12月4日
相关资讯
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
浅谈 Kubernetes 在生产环境中的架构
DevOps时代
11+阅读 · 2019年5月8日
Python奇淫技巧,5个数据可视化工具
机器学习算法与Python学习
7+阅读 · 2019年4月12日
金融风控面试十二问
七月在线实验室
20+阅读 · 2019年4月9日
推荐系统
炼数成金订阅号
28+阅读 · 2019年1月17日
一张图理清电商后台产品模块,90%的电商类产品后台都适用
人人都是产品经理
8+阅读 · 2018年12月9日
干货 :数据分析师的完整流程与知识结构体系
数据分析
8+阅读 · 2018年7月31日
领域应用 | 图数据库及其在恒昌的应用简介
开放知识图谱
6+阅读 · 2017年10月10日
相关论文
Arxiv
29+阅读 · 2020年3月16日
Arxiv
12+阅读 · 2019年1月24日
Learning Recommender Systems from Multi-Behavior Data
Physical Primitive Decomposition
Arxiv
4+阅读 · 2018年9月13日
Arxiv
8+阅读 · 2018年1月25日
Arxiv
6+阅读 · 2016年1月15日
Top
微信扫码咨询专知VIP会员