MongoDB Data Model 浅谈

MongoDB 对于数据的 schema 要求很灵活

与 MySQL 相比,collection 并不会强制文档的结构。(MySQL 在定义表时, 需要指定有哪些字段、类型、展示长度等)

因此,插入数据到 MongoDB 非常灵活。

同一个 collection 中可以有结构不同(字段不同)的文档(通常来说,文档结构还是相近的)。

 

MongDB 适合半结构化/非结构化的数据,适用场景为大数据分析,允许数据不那么精确;

MySQL 适合结构化的数据,支持数据引擎插拔;5.6+ 默认引擎为 InnoDB,支持事务。

 

MongoDB 有两种 Data Model:

  1. Embedded
  2. Reference

1. Embedded

反范式(denormalized).

用关系型数据库中的范式来看,违反了第一范式(1NF,属性不能拆分)。

增加了冗余,查询时不用连表。

2. Reference

类似外键(foreign key)。

符合范式(normalized)。

 

MongoDB 在确定 data model 时,需要考虑两点要素:

1、data 本身的特征;

2、MongoDB 本身的特征。

不同的 data model 会给应用带来不同的结果,比如:更高效的查询、更高的插入/更新吞吐量、更好的负载。

如果更新会频繁地造成文档增长,考虑使用 reference 而非 embedded。

读多写少,考虑使用 embedded,提高查询效率。

 

参考资料:

https://docs.mongodb.com/manual/core/data-models/

 

posted @ 2018-01-14 14:19  赫尔修斯  阅读(361)  评论(0编辑  收藏  举报