首页 数据库 mysql教程 大规模运行MongoDB应该知道的10件事_MySQL

大规模运行MongoDB应该知道的10件事_MySQL

Jun 01, 2016 pm 01:18 PM
mongodb

MongoDB

MongoDB的首席解决方案架构师Asya Kamsky 最近发表了一篇文章,概括了大规模运行MongoDB需要知道的10件事。

  1. MongoDB也需要DevOps。MongoDB是一个数据库。和任何其他的数据存储一样,它也需要容量计划、调整、监控和维护。不要因为它很容易安装、入门,同时与关系型数据库相比能够更加自然地满足开发人员的范例就认为MongoDB不需要适当的照顾和喂养。开发时它能在小样本数据集上超快地运行并不意味着你就不需要良好的模式、索引策略以及产品环境所需要的正确的硬件资源了。但是如果你准备的很好,并且理解最佳实践,那么运营大型MongoDB集群就会变得很无聊,而不是令人非常头痛。
  2. 成功的MongoDB用户会监控所有的事情,同时会做好增长的准备。在任何数据库系统中跟踪当前的容量以及容量计划都是基本的实践,MongoDB也是如此。你需要知道集群现在能够支撑多少工作,最高使用率时它会处理哪些需求。如果你没有注意到服务器上增长的负载,那么最终会遇到没有足够容量的错误。监控MongoDB可以使用MongoDB管理服务(MMS),通过查看操作计数器(opscounters)图表可视化自己的操作:

  3. 你可能并不希望系统随着使用量的增长出现性能扩展障碍。 根据大量用户的部署经验,性能瓶颈通常是(按顺序):
    • 应用程序访问模式没有使用最优的模式设计
    • 索引不佳或者缺失索引,抑或有太多不必要的索引
    • 磁盘较慢/磁盘IOPS不足
    • 索引没有足够的RAM

    事实证明,在真正的大型部署实践中对性能影响最大的是模式设计与应用程序需求的契合程度。而缺少索引、索引错误或者索引太多则是影响性能的第二大因素。在模式设计非常完美,索引也最优的情况下,磁盘IO吞吐能力就成了下一个限制因素,尤其是写吞吐量。RAM不足会引发很多页错误,同时也会增加磁盘IO的压力。

  4. 很多成功的MongoDB用户使用单复制集。太早分片可能是过早优化,并不是每个MongoDB部署都需要分片。分片处理非常特殊的需求,不能不加思索地认为它就是解决“数据库很慢”的最佳方案。如果你的协调模式非常差劲或者有错误索引,那么分片并不能解决问题,相反的你最终会得到一些差劲的协调和差劲的执行碎片。当单台机器或者复制集上的某种特殊资源成为瓶颈,同时基于成本的考虑无法添加更多这种资源的时候才适合分片。你可能需要更多的磁盘IO吞吐量,或者更多的内存,或者更多的存储,再或者更多的并发,这种情况下分片才是有意义的。
  5. 即使没有将整个数据库放在内存中,MongoDB依然能够取得非常好的性能。对于MongoDB常见的一个误解是:为了获得更好的性能需要将整个数据库放在内存中。这可能是最错误的一件事情,因为这依赖于集群正在处理的负载的类型。有一些标志和指标能够告诉你:相对于你放到数据库上的负载类型你所拥有的内存数量是否充足。正如你所看到的,随着数据库大小的增长,能够放到内存中的相关部分将会受限于可用物理内存的大小。如果内存的数量不能满足性能需求,那么你将会看到页面错误,随着页面错误率的上升,opcounters最终会低于期望值。

  6. 必须将数据写刷新到磁盘。如果磁盘利用率达到了100%,那么处理更多写操作的速度比起现在得不到丝毫的提升。可以通过MMS中的“Background flush average”图表查看将数据文件中的脏页刷新到磁盘花费了多长时间。通过这种趋势你会发现,随着写操作的增长,刷新将花费更多的时间。这种问题可以通过使用更快的磁盘解决,将工作拆分到更多的分片上,或者调整应用程序使之减少写数据的总量。你应该记住:写入的所有内容都会被刷新到磁盘两次——立即刷新到日志同时周期性地刷新到数据文件。将这两种操作分离到不同的物理设备上将会消除它们对可用磁盘IO带宽的竞争。 
  7. 复制 != 备份。所有人都清楚备份的重要性。但是为什么备份这么重要呢? 想必是因为当某些影响所有复制集节点的灾难性事件发生的时候我们可以恢复数据。复制并不是备份的原因是:它并不能让你避免人为错误——例如某些人突然删除了产品数据,或者部署了错误版本的应用程序代码以致于搞乱了部分或者所有数据。必须要有一个能够让我们从这种场景中恢复数据的备份。通过文件系统快照、mongodump或者MMS备份练习数据恢复。第一次从备份恢复产品数据的操作不应该发生在真正的“数据紧急事件”发生的时候。
  8. 复制集的健康不仅仅是复制延迟。“复制延迟”仅仅是复制集健康状况的指标之一。关注复制操作日志(oplog)窗口和监控复制延迟一样重要。它表示的是基于现在的写流量完全“滚动”oplog所要花费的时间。换句话说,它指的是将一个复制节点拿下来以后依然能够重新加入集合而不必对所有数据进行重新同步的时间。随着时间的推移,复制操作日志窗口将会随着写负载的变化而浮动。流量高峰时窗口会缩短。这在容量计划中是非常重要的,你需要为最繁忙的数据吸收时间做好准备。下面是MMS中的一个并行视图,它展示了整个复制集的复制操作日志窗口。

  9. MongoDB并不清楚数据需要什么样的安全级别。和其他数据库一样,你应该遵循最小特权原则。必须自己配置数据库的安全。不要让所有人都能访问你的数据。打开MongoDB自己本身的安全机制是非常重要的,但是这样也锁定了从任何地方对集群的访问,除非你确实认为自己的客户端进程可以在那里运行。只修改MongoDB进程的默认端口并不能保证安全。
  10. 没必要修改引擎里面的东西。 除非文档或者MongoDB支持告诉你做一些非常特殊的事情,否则你没有必要直接修改系统集合、本地、管理或者配置数据库。你可以借助于管理命令和shell执行所需的操作,如果数据库并不能按照期望运行,或者某些地方发生了错误,那么成功的钥匙并不是试图通过直接操作内部的“bits”强制它运行。你需要熟悉的唯一一个“特殊的”、由系统产生的集合是分析器集合,定期地分析你的查询是确保事情按照期望运行的一个非常好的方式。
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

mongodb一般用哪个版本 mongodb一般用哪个版本 Apr 07, 2024 pm 05:48 PM

推荐使用 MongoDB 最新版本(当前为 5.0),因为它提供了最新特性和改进。选择版本时,需考虑功能需求、兼容性、稳定性和社区支持,例如:最新版本具有事务、聚合管道优化等特性。确保版本与应用程序兼容。生产环境选择长期支持版本。最新版本有更活跃的社区支持。

nodejs和vuejs区别 nodejs和vuejs区别 Apr 21, 2024 am 04:17 AM

Node.js 是一种服务器端 JavaScript 运行时,而 Vue.js 是一个客户端 JavaScript 框架,用于创建交互式用户界面。Node.js 用于服务器端开发,如后端服务 API 开发和数据处理,而 Vue.js 用于客户端开发,如单页面应用程序和响应式用户界面。

利用MongoDB实现实时推荐系统的经验分享 利用MongoDB实现实时推荐系统的经验分享 Nov 03, 2023 pm 04:37 PM

随着互联网的发展,人们的生活越来越数字化,个性化需求也越来越强烈。在这个信息爆炸的时代,用户往往面对海量的信息无从选择,所以实时推荐系统的重要性愈发凸显出来。本文将分享利用MongoDB实现实时推荐系统的经验,希望能为开发者们提供一些启发和帮助。一、MongoDB简介MongoDB是一个开源的NoSQL数据库,它以高性能、易扩展和灵活的数据模型而闻名。相比传

mongodb创建的数据库在哪里 mongodb创建的数据库在哪里 Apr 07, 2024 pm 05:39 PM

MongoDB 数据库的数据存储在指定的数据目录中,该目录可以位于本地文件系统、网络文件系统或云存储中,具体位置如下:本地文件系统:默认路径为 Linux/macOS:/data/db,Windows:C:\data\db。网络文件系统:路径取决于文件系统。云存储:路径由云存储提供商决定。

mongodb数据库的优势有哪些 mongodb数据库的优势有哪些 Apr 07, 2024 pm 05:21 PM

MongoDB 数据库以其灵活、可扩展和高性能而闻名。它的优势包括:文档数据模型,允许以灵活和非结构化的方式存储数据。水平可扩展性,可通过分片扩展到多个服务器。查询灵活性,支持复杂的查询和聚合操作。数据复制和容错,确保数据的冗余和高可用性。JSON 支持,便于与前端应用程序集成。高性能,即使处理大量数据也能实现快速响应。开源,可定制且免费使用。

mongodb是什么意思 mongodb是什么意思 Apr 07, 2024 pm 05:57 PM

MongoDB是一款面向文档的、分布式数据库系统,用于存储和管理大量结构化和非结构化数据。其核心概念包括文档存储和分布式,主要特性有动态模式、索引、聚集、映射-归约和复制。它广泛应用于内容管理系统、电子商务平台、社交媒体网站、物联网应用和移动应用开发等领域。

mongodb怎么开启 mongodb怎么开启 Apr 07, 2024 pm 06:15 PM

在 Linux/macOS 上:创建数据目录并启动 "mongod" 服务。在 Windows 上:创建数据目录并从服务管理器中启动 MongoDB 服务。在 Docker 中:运行 "docker run" 命令。在其他平台上:请查阅 MongoDB 文档。验证方式:运行 "mongo" 命令以连接并查看服务器版本。

mongodb数据库文件在哪 mongodb数据库文件在哪 Apr 07, 2024 pm 05:42 PM

MongoDB 数据库文件位于 MongoDB 数据目录中,默认情况下为 /data/db,其中包含 .bson(文档数据)、ns(集合信息)、journal(写入操作记录)、wiredTiger(使用 WiredTiger 存储引擎时的数据)和 config(数据库配置信息)等文件。

See all articles