zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    使用turtle库绘制一个叠加等边三角形
    使用turtle库绘制图形
    tar命令常用参数讲解
    elasticsearch 中geo point地理位置数据类型
    count(*)和count(1)的sql性能分析
    别再if/else走天下了
    正则表达式 匹配0次1次或者无限次
    linux shell 字符串操作(长度,查找,替换)
    linux expect工具使用
    mongodb分片balance
  • 原文地址:https://www.cnblogs.com/huangzejun/p/8882363.html
Copyright © 2011-2022 走看看