一、阿里云 MongoDB 介绍
阿里云 MongoDB 云数据库特性:
- 开箱即⽤(免除运维烦恼)
- 弹性伸缩 (快速应对业务变化)
- ⾼可⽤ (业务持续、数据可靠)
- 持续备份 (任意时间点备份恢复)
- 安全加固 (SSL + TDE 加密)
- 审计⽇志 (访问记录、有据可查)
- 秒级监控 (性能数据、⼀⽬了然)
- CloudDBA (⾃动诊断、智能优化)
阿里云 MongoDB 云数据库技术优势:
- ⾼性价⽐:对于短链接鉴权性能提升 10 倍,秒级监控、全链路安全、CloudDBA。
- 运维效率:支持⾼危命令审计、快速定位问题,默认后台建索引、避免影响在线业务, 支持物理热备份+单库恢复、备份恢复时间缩短⼀半。
- ⽣态⼯具:开源 MongoShake 同步⼯具、⽀持异地多活,阿⾥云⽣态打通 Dataworks、XPack Spark 等服务。
- 原⼚战略合作:我们与 MongoDB 原厂进行了战略合作,可以在全球范围内领先使用 MongoDB 最新版本,同时与原厂进行了研发合作。
- 需求定制:可以针对客户的合理需求进行定制开发,满足客户需要。
- 专家服务:由业内顶尖的数据库专家提供服务,结合业务场景,提供行业解决方案,业 务优化建议。
阿里云&MongoDB 公司战略合作
阿里云与 MongoDB 公司在 2019 年下半年达成战略合作,阿里云也了荣膺 MongoDB 公司『2019 全球最佳 ISV 合作伙伴』奖。
基于合作,阿里云可以在全球领先使用最新版本,比如目前的 4.4、4.2、4.0 的最新 版本,并且阿里云第一时间合入官方优化和 Bug Fix。同时不定期与原厂进行产品技术交 流。
在研发合作方面,最近发布的 MongoDB 4.4 上,我们与 MongoDB 公司合作共建 Hidden Indexes 特性。
二、阿里云 MongoDB 产品特性
MongoDB 上云/混合云/多活
使用云服务首先要解决上云的问题,将自建服务搬到云上,另外在混合云里也可能需要 对多个环境的数据进行同步,或者是在不同架构形态之间进行转换。针对这些需求,可以优 先使用阿里云 DTS 服务来支持不同架构形态的转换、数据迁移、数据同步。另外也可以使 用阿里云自研并开源的 MongoShake⼯具来解决这些问题。
MongoDB 4.x 版本新增特性
从 MongoDB 4.0 版本以来,新增了数十项功能特性,比如 4.0 版本,增加了副本集 事务,更快的 shard 间数据迁移、这个提升了 40%以上。
MongoDB 4.2 版本,增加跨 Shard 分布式事务、字段级加密、全局按时间点读、通 配符索引、支持 10 倍的快速降级、存储节点的 watchdog 检测,比如检测 I/O Hang 的 场景、物化视图、可重试的读写等特性。
MongoDB 4.4 版本,我们与官方合作共建了 Hidden Index 特性,可以临时禁用索 引,不需要删除、避免产生过大消耗。支持全局按时间点读、以及对冲读功能(时向多个节 点发送请求,把最快的响应发送给客户端)。4.4 也支持了复合 Hash Shard Key,在 4. 4 以前,Hash Shard Key 只能支持单个字段。另外还支持可恢复的全量同步、并发建索 引等。
阿⾥云 MongoDB 产品形态及选型
阿里云 MongoDB 产品主要有四种形态:On ECS 云盘、本地盘、Serverless、单 节点,生产环境建议采用 On ECS 云盘、本地盘,测试环境也可以采用 Serverless、单 节点。
在阿里云 MongoDB 4.4 版本,存储是基于云盘的,支持云盘快照备份,直接基于快 照时间点进行增量同步,扩容升规格的数据同步时间大大缩减,解决了本地盘升规格的数据 同步时间长的痛点。
MongoDB 全量备份⽅法
作为数据库系统,数据可靠性很重要。阿里云 MongoDB 支持 3 种数据备份方式:
- 逻辑备份:通过遍历所有集合,把文档逐个读出。比如 MongoDump 就是通过逻辑备 份的方式进行备份。
- 物理备份:直接拷贝物理数据文件进行备份。
- 快照备份:依赖于 IAAS 层提供的云盘快照能力进行数据备份。
MongoDB 全量逻辑备份 VS 物理备份 VS 快照备份的区别如下图所示:
逻辑备份 :
相对于物理备份和快照备份,不管是备份效率、成功率、恢复效率都比较低。更重要的 是备份期间还会直接与业务争抢资源,所以阿里云 MongoDB 本地盘形态默认采用的是物 理备份。
物理备份 :
- 社区版 MongoDB 物理备份
- 备份过程需要对 FsyncLock 加全局写锁,不是『热』备份。
- 其他物理热备份方案:Percona MongoDB
- 备份过程磁盘空间增长迅猛。
- 阿里云 MongoDB 物理备份
- 热备份:基于 WiredTiger 原生热备份方法进行改进,备份过程无需加锁,同时解 决磁盘空间增长问题;
单库恢复:保持一份全实例备份基础上支持单库恢复,极大减少恢复所需下载数据量, 从而缩短恢复时间。
分片集群 :
- 分片集群备份难点
- 外部一致性:存在外部写入时各节点如何保持一致。当多个 Shard 上同时有写入 时,如何在每个 Shard 上确定一个全局一致的备份点,使得备份出来的数据满足 逻辑时钟上的先后顺序。
- 内部一致性:存在内部数据迁移时各节点如何保持一致。多个 Shard 之间如果存 在数据迁移(比如 MoveChunk),如何保证备份的正确性,不会出现数据少备份了 的情况
- 阿里云 MongoDB 分片集群备份
- 外部一致性:各节点恢复到同一时间点;
- 内部一致性:通过审计日志分析内部迁移,规避恢复到存在内部数据迁移的时间段。
如下图所示:
阿⾥云 MongoDB 秒级监控
在实例监控上,阿里云 MongoDB 支持将监控采集粒度设置为秒级,能够更加精准的 反映数据库的性能峰值、业务访问的变化情况,以及资源的使用情况,为业务提供参考。
阿⾥云 MongoDB CloudDBA:会话管理
另外阿里云 MongoDB 还有一个 CloudDBA 的附加功能模块。CloudDBA 可以管理 MongoDB 会话,对执行时间长的慢 SQL 语句、全表扫描操作,可以通过会话管理,主动 进行终止,避免慢 SQL 语句长时间执行影响业务。
阿⾥云 MongoDB CloudDBA:索引推荐
CloudDBA 还提供了基于代价评估的索引推荐。代价评估是根据实际执行的操作的统 计信息和代价模型(比如 CPU 与 IO 的代价换算)计算每个执行计划的成本,从中挑选出成 本最小的执行计划。
规则评估是根据经验以及设定好的规则来选择执行计划,通常它是比较简单的,但并不 一定是最优的执行计划。
所以基于代价评估通常比基于规则评估更加准确。CloudDBA 的自动索引推荐,在阿 里巴巴内部经过了三年以上的生产环境验证,推荐成功率达 98%以上。
阿⾥云 MongoDB 全链路安全能力
阿里云 MongoDB 提供了完整的全链路安全能力,从先后顺序上可以分为事前、事中、 事后三个方面:
- 事前 指对数据库进行操作前,主要有:专有网络隔离、白名单控制、账号密码鉴权、 安全环境免密,这些措施来保证。
- 事中 指对数据库进行操作时,通过访问链路加密、数据落盘加密、备份⽂件加密,这 些措施来保证。
- 事后 指对数据库操作完成之后,通过全量操作⽇志审计,来知道是谁在什么时间点执 行了什么操作。
三、MongoDB 行业应用案例
MongoDB ⼴泛应⽤于游戏⾏业
游戏业务的特点是开发速度快,性能要求高,易于部署,数据模型经常发生变更,业务 规模变化快,需要快速扩展。MongoDB 广泛的应用于游戏行业,以网易游戏为例,网易 游戏在 10 个 Region(地域)、超过 45 个项目上,使用的 MongoDB 副本集超过 60 个、 分片集群超过 120 个。
游戏⾏业⼀站式解决⽅案
针对游戏行业 MongoDB 提供了一站式解决方案:
- 多变需求:MongoDB 是*的 Schema Free 和文档模型的完美匹配。
- 游戏回档:支持把数据恢复到任意时间点,同时支持单库恢复,进一步减少数据恢复的 时间。
- 游戏滚服:基于备份集/备份时间点创建新实例。
- 链路安全:VPC + SSL + ⽩名单 + TDE + 审计。
- 运营分析: 采用 MongoDB 的聚合管道 Aggregation Pipeline、Spark Connector 满足业务需求。
MongoDB ⼴泛应⽤于汽⻋⾏业
MongoDB 当前被大量汽车企业作为车联网平台的标准组件。汽车行业主要的特性是 数据量大、数据结构灵活,要求分析能力强和⾼性能。常见的应用场景包括⻋联⽹数据存储、 车辆监控与预测、车辆状态的仿真。
这是某大型车企通过 MongoDB 来解决高并发和大量数据的实时访问的案例。车联网 数据通过终端传回数据中心之后,需要进行实时解析和使用。数据量大约每秒会达到 5 万 行,年累计 2000 亿左右。
该案例的难点在于不仅要实现在亿级记录中灵活的查询和支持毫秒级的返回,还需要实 现每秒 2 万行记录写入、每 5 秒 20 万行记录的随机删除能力,经过验证 MongoDB 充分 胜任。
除此之外,MongoDB 也在物联网、在线教育、金融行业广泛应用,也有对应的解决 方案和案例,在此就不再一一赘述了。
快速掌握MongoDB核心技术干货目录
电子书下载:《玩转MongoDB从入门到实战》 | https://developer.aliyun.com/article/780915 |
走进 MongoDB | https://developer.aliyun.com/article/781079 |
MongoDB聚合框架 | https://developer.aliyun.com/article/781095 |
复制集使用及原理介绍 | https://developer.aliyun.com/article/781137 |
分片集群使用及原理介绍 | https://developer.aliyun.com/article/781104 |
ChangeStreams 使用及原理 | https://developer.aliyun.com/article/781107 |
事务功能使用及原理介绍 | https://developer.aliyun.com/article/781111 |
MongoDB最佳实践一 | https://developer.aliyun.com/article/781139 |
MongoDB最佳实践二 | https://developer.aliyun.com/article/781141 |