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/

  • 相关阅读:
    重定向syste.out.print
    文件与文件夹的拷贝
    List和Set转Long数组
    Struts2验证错误信息的两个经典方法-addFieldError&addActionError
    OA项目---笔记
    三种给<s:a>,<a>标签传值的方式
    [整理]免费电子书网站
    [整理]Visual Studio 的Application Insights
    [转载]CSS Tools: Reset CSS
    [转载]AngularJS之Factory vs Service vs Provider
  • 原文地址:https://www.cnblogs.com/huangzejun/p/8882363.html
Copyright © 2011-2022 走看看