暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MongoDB开发检查列表

MongoDB中文用户组 2020-09-14
750


MongoDB Manual (Version 4.2)> Administration > Development Checklist


下面的清单以及操作检查列表提供了一些建议,帮助我们在生产环境下,避免MongoDB部署出现中的问题。


  • 数据持久性

  • 架构设计

  • 复制

  • 分片

  • 驱动


数据持久性

  • 确保您的副本集包含至少三个带有w:majority
    写关注的数据承载节点。副本集范围内的数据持久性需要三个数据承载节点。

  • 确保所有实例都使用日志。

架构设计

MongoDB中的数据有一个动态设计。集合强制执行文档结构。这有助于迭代开发和多态性。然而,集合通常保存具有高度同质结构的文档。有关详细信息,请参阅数据建模概念。

  • 确定支持查询所需的集合集和所需的索引。除了_id
    索引之外,您必须显式地创建所有索引:MongoDB不会自动创建除_id
    之外的任何索引。

  • 确保架构设计支持您的部署类型:如果您计划使用分片集群进行水平扩展,请设计您的架构以包含一个强健的片键。片键通过确定MongoDB如何划分数据来影响读写性能。请参见:片键对集群操作的影响以获取有关片键应具有哪些质量的信息。一旦设置了片键,就不能更改它。

  • 请确保您的架构设计不依赖长度不受限制的索引数组。通常,当这种索引数组的元素少于1000个时,可以获得最佳性能。

  • 设计架构时请考虑文档大小限制。BSON文档大小限制为每个文档16MB。如果需要更大的文档,请使用GridFS。

复制

  • 使用奇数个有投票权的成员来确保选举顺利进行。最多可以有7个有投票权的成员。如果您有偶数个投票成员,并且限制条件(如成本)禁止添加另一个辅助成员作为投票成员,则可以添加仲裁节点以确保票数为奇数。有关对3成员副本集(P-S-A)使用仲裁节点时的其他注意事项,请参阅副本集仲裁节点。


注意

对于以下MongoDB版本,对于具有仲裁器的副本集,与pv0
(MongoDB 4.0+中不再支持)相比, pv1
增加了 w:1
回滚的可能性:

  • MongoDB 3.4.1

  • MongoDB 3.4.1

  • MongoDB 3.4.0

  • MongoDB 3.4.0

  • MongoDB 3.2.11 or earlier

  • MongoDB 3.2.11 或者更早的版本

参见副本集协议版本。

  • 通过使用监视工具 和指定适当的写入机制,,确保您的辅助文件保持最新。

  • 不要使用辅助读取来扩展总体读吞吐量。请参阅:是否可以使用更多副本节点进行扩展,以了解读取扩展的概述。有关辅助读取的信息,请参阅:读取偏好 。


分片

  • 确保片键将负载均匀地分配到分片上。请参见:片键以获取更多信息。

  • 对需要根据切片数量进行扩展的工作负载使用目标操作。

  • 对于MongoDB 3.4和更早版本,从主节点读取非目标或广播查询,因为这些查询可能对过时或孤立的数据敏感。

  • 对于MongoDB 3.6和更高版本,辅助设备不再返回孤立数据,除非使用可用的读策略。{这是与因果一致会话不关联时针对辅助设备读取的默认读取策略}。

    从 MongoDB 3.6 开始,分片副本集的所有成员都维护块元数据,允许它们在不使用“可用”时过滤出孤立的数据。因此,不使用“可用”的非目标或广播查询可以安全地在任何成员上运行,并且不会返回孤立的数据。

    "可用"的读取策略可以从辅助成员返回孤立文档,因为它不检查更新的块元数据。但是如果孤立文档的返回对于应用程序来说无关紧要,那么"可用"的读取策略提供了各种读取关注点中可能的最低延迟读取。

  • 在将大数据集插入新的非哈希分片集合时需要预分割并手动平衡块。预分割和手动平衡使插入负载能够在分片之间分布,从而提高初始负载的性能。


驱动

  • 利用连接池。大多数MongoDB驱动程序支持连接池。调整连接池大小以适合您的用例,从典型并发数据库请求数的110-115%开始。

  • 请确保您的应用程序在副本集选择期间处理短暂的写入和读取错误。

  • 请确保应用程序处理失败的请求,并在适用的情况下重试。驱动程序不会自动重试失败的请求。

  • 对数据库请求重试使用指数退避逻辑。

  • 如果需要限制数据库操作的执行时间。使用 cursor.maxTimeMS()
    读取和 wtimeout 写入。


原文链接:

https://docs.mongodb.com/v4.2/administration/production-checklist-development/

译者:孔令升  MongoDB中文社区翻译小组成员


往期翻译:


The mongo Shell

mongo 命令行

配置 mongo shell

查看 mongo shell帮助文档


MongoDB CRUD操作

MongoDB中的CRUD操作

批量写操作

读关注


数据模型

MongoDB数据建模介绍


事务

事务

事务操作


索引

2dsphere索引

哈希索引

索引属性

在集合上创建索引

量索引使用情况


安全

安全检查列表

启用访问控制

身份验证

审计

—— 配置审计

—— 配置审计过滤器

—— 系统事件审计消息

网络和配置强化

安全参考

—— system.roles 集合

—— system.users 集合

—— 资源文档

—— 权限操作


复制

副本集成员

副本集Oplog

副本集数据同步

副本集部署架构


分片

分片键


管理

产品说明

操作检查表

性能

备份方法


存储

—— WiredTiger存储引擎

—— 内存存储引擎

常见问答:MongoDB 存储



喜欢我们,

分享、点赞、在看三连哦~

文章转载自MongoDB中文用户组,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论