MongoDB_应用程序设计

  1. 范式化与反范式化

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

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值