MongoDB线上实践指南-基础篇(一)

  1. 库名全部小写,禁止使用任何`_`以外的特殊字符,禁止使用数字打头的库名,如:`123_abc`

    库以文件夹的形式存在,使用特殊字符或其它不规范的命名方式会导致命名混乱

  2. 数据库名最多为64字符

  3. 在创建新的库前应尽量评估该库的体积、QPS等,提前与DBA讨论是应该新建一个库还是专门为该库创建一个新的集群

    【案例一】某开发在拿到DBA提供的MongoDB后由于MongoDB的权限控制比较宽松,导致该业务的开发在创建集合的时候懒得与DBA讨论,而是随意的将所有集合都创建在一个库中,最初并没有什么问题,因为业务的请求量并不大。半年后,该业务增长到了一个比较大的量级,而此时开发人员上线了一个新的项目,该项目的写入量很大,大部分都为批量更新,由于所有集合都存放在一个库中,这个新项目的批量更新带来了频繁的库级锁,由于库级锁是排他的(在有锁的同时不可读写)开发发现:这个实例上的所有业务的数据库请求都变得极其缓慢。最后开发配合DBA一起将该库拆散到了多个新的库中,将一库N集合转换为单库单集合,性能问题迎刃而解。

集合
    1. 集合名全部小写,禁止使用任何`_`以外的特殊字符,禁止使用数字打头的集合名,如:`123_abc`,禁止system打头

      system是系统集合前缀

    2. 集合名称最多为64字符

    3. 为了避免库级锁带来的问题,应尽量对写入较大的集合使用“单库单集合”的结构,所以对于新增业务应尽量创建新库,而不是在现有库中创建新集合

      一个库中写入较大的集合会影响其它集合的读写性能

    4. 如果评估单集合数据量较大,可以将一个大表拆分为多个小表,然后将每一个小表存放在独立的库中,由于MongoDB是库级锁,因此这样做可以大幅减少并发写入带来的锁争用问题

      【案例2】某业务上线前进行压力测试(该业务为大量更新场景),在压测时发现更新量在1000/s以内的时候更新性能优秀(2ms左右),而在更新量达到2500/s之后更新性能严重下降(10ms左右),经过查看原因是由于并发过大导致锁争用严重,于是采取对应优化措施:开发针对这个大表做HASH分表处理,将一个集合拆分为16个集合并,将每个集合安置在独立的库中。这个方案理论上将此前的的锁争用消耗降低到了此前的1/16, 再次进行压测,结论是更新性能达到了5000/s(达到IO瓶颈),远超业务3000/s的要求。

    5. MongoDB的集合拥有“自动清理过期数据”的功能,只需在该集合中文档的时间字段增加一个TTL索引即可实现该功能,但需要注意的是该字段的类型则必须是mongoDate()

    本篇介绍了库、集合在命名和前期规划、拆分上的一些注意事项,下篇将介绍“文档”数据类型在实际使用过程中的注意事项和一些线上案例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值