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/

  • 相关阅读:
    [PTA练习] 愿天下有情人都是失散多年的兄妹(25分)
    sql server远程连接非1433端口
    java把double转化为long型
    StringUtils工具类
    JfreeChart折线图
    Log4j配置
    Ibatis,Spring整合(注解方式注入)
    Spring中的autowire属性(转)
    MyBatis3入门样例
    struts2 ibatis Spring系统架构图
  • 原文地址:https://www.cnblogs.com/huangzejun/p/8882363.html
Copyright © 2011-2022 走看看