MongoDB_应用程序设计

来源:互联网 发布:cpda数据分析师工资 编辑:程序博客网 时间:2024/05/18 22:56
  1. 范式化与反范式化

    范式化是将数据分散到多个不同的集合,不同集合之前可以相互引用数据。如果要修改某一块数据,只需要修改保存这一块数据的那一个文档就行了

    反范式化是将每个文档所需的数据都嵌入在文档内部。如果数据发生变化,所有相关文档都需要进行更新。但是在执行查询时,只需要查询一次就可以得到所有数据

    如果数据更新频繁,那么反范式化更好

  2. 内嵌数据与引用数据的比较:

    更适合内嵌                       更适合引用子文档较小                       子文档较大数据不会定期改表                 数据经常改变最终数据一致即可             中间阶段的数据必须一致文档数据小幅增加                文档数据大幅增加数据通常需要执行二次查询才能获得 数据通常不包含在结果中快速读取                          快速写入
  3. 优化数据操作

    对读取操作的优化通常包括正确使用索引,以及尽可能将所需信息放在单个文档中返回。对写入操作的优化通常包括减少索引数量以及尽可能提高更新效率

    ① 优化文档增长
    更新数据时,需要明确更新是否会导致文件体积增长,以及增长程度。
    如果增加程度是可预知的,可以为文档预留足够的增长空间,这样可以避免文档移动,可以提高写入速度。可以在创建文档时创建一个占空间比较大的字段,文档创建成功后再将这个字段移除。这样就提前为文档分配了足够的空间供后续使用。
    如果文档中有一个字段需要增长,应该尽可能将这个字段放在文档最后的位置,这样可以稍微提高一点性能,因为不需要重写该字段以后的字段。
    ② 删除旧数据
    可用方法:使用固定集合、使用TTL集合、定期删除集合

原创粉丝点击