云数据库MongoDB版支持4.4、4.2、4.0和3.4版本,支持WiredTiger存储引擎,您可以根据业务需求在创建实例时选择。
数据库版本及说明
- Hidden Indexes
隐藏现有的索引,保证该索引在后续的查询中不会被使用,用来观察目标低效率索引的删除是否会导致业务性能抖动,如不造成影响即可放心删除该低效率索引。
- Refinable Shard Keys
增加一个或多个Suffix Field来改善现有的文档在Chunk上的分布问题,避免所有访问集中在某个单一分片上,分散服务器的压力。
- Compound Hashed Shard Keys
支持在复合索引中指定单个哈希字段,在极大程度上简化业务逻辑的复杂性。
- Hedged Reads
在分片集群实例下,支持将一个读请求同时发送给某个分片中的两个副本集成员,并选择响应最快的返回结果来恢复客户端,以实现降低请求延迟的目的。
- Streaming Replication
主库Oplog主动流向备库,相比之前版本的备库轮询方式,节省了近一半的往返时间,提升了主备复制的性能。
- Simultaneous Indexing
主库与备库的索引创建操作同步进行,大幅减少主备库在索引创建过程中产生的延迟,保证备库能及时访问到最新的数据。
- Mirrored Reads
主节点会按一定的比例把读流量复制到备库上执行,保证从节点承载一定的读流量,缓解业务的访问延迟。
- Resumable Initial Sync
在主备库全量同步过程中,提供断点续传功能,避免因网络断连而导致全量同步工作从头进行。
- Time-Based Oplog Retention
支持自定义指定Oplog的保留时长,避免主库Oplog被清理触发全量同步。
- Union
新增$unionWith stage用于实现类似于SQL的
union all
功能,增强了MongoDB的查询能力。 - Custom Aggregation Expressions
新增$accumulator和$function用来实现自定义的Aggregation Expression,完善接口统一性和用户体验。
- 分布式事务
采用二段提交方式,保证分片集群事务的ACID特性,极大拓展了MongoDB的业务场景,实现从NoSQL到NewSQL的飞跃。
- 可重试读
增加可重试读功能,提供弱网环境下自动重试能力,降低业务端的逻辑复杂性,保证用户业务的连续性。
- 通配符索引
对于非确定字段,支持创建通配符索引覆盖一个文档下的多个特征字段,管理方便且使用灵活。
- 字段级加密
驱动层面支持字段级加密,可以针对特定的敏感信息(例如账号、密码、价格、手机号等)单独加密。避免全库加密,提升业务灵活性和安全性。
- 物化视图
通过最新的物化视图可以缓存计算结果,避免重复计算提升运行效率,减少逻辑复杂度。
- 跨文档事务支持
首个支持跨文档事务的NoSQL云数据库,将文档模型的速度,灵活性、功能与ACID保证相结合。
- 迁移速度提升40%
并发的读取和写入,使得新增的Shard节点能更快地完成数据迁移以承载业务压力。
- 读性能大幅扩展
借助事务特性,Secondary节点不再因为同步日志而阻塞读取请求。 阿里云同时在全体系版本支持多节点扩展功能,可大幅提升业务读取能力。
- 更快的主备同步
在同步数据的同时建立所有索引(以前的版本仅建立_id索引)。同时在同步数据的阶段,Secondary节点不断读取新的oplog信息,确保Secondary节点的local数据库具备足够的存储空间来存储临时数据。
- 更高效的负载均衡
3.2及以前版本中,分片集群的负载均衡由Mongos节点负责,多个Mongos节点会抢一个分布式锁,由抢锁成功的Mongos节点执行负载均衡任务,在Shard节点间迁移块;而在3.4版本中,负载均衡由ConfigServer节点中的Primary节点负责,负载均衡的并发度和效率上均有大幅提升。
- 更丰富的aggregation操作
在3.4版本增加了大量的aggregation操作符,可支持更强的数据分析能力。例如,
bucket
能便捷地对数据进行分类;$grahpLookup
相较于3.2版本的$lookup
能支持更复杂的关系运算;$addFields
使得文档操作更丰富(例如将某些字段求和存储为新的字段)。 - 支持Sharding Zones
分片集群里引入了Zone的概念,主要取代现在的tag-aware sharding机制,能将某些数据分配到指定的一个或多个Shard节点中,该特性极大地方便sharding cluster的跨机房部署。
- 支持Collation
在之前的版本里,文档里存储的字符串不论是中英文还是大小写,一律按字节来对比;引入Collation后,支持对字符串的内容进行解读,可以按使用的locale进行对比,也支持在对比时忽略大小写。
- 支持只读视图(Read-only views)
在3.4中增加了对只读视图的支持,可以将集合中满足某个查询条件的数据虚拟成一个特殊的集合,用户可以在特殊的集合上做进一步的查询操作。
存储引擎
存储引擎 | 说明 | 适用场景 |
---|---|---|
WiredTiger | 基于BTree结构组织数据,相比MongoDB早期的MMAPv1存储引擎性能提升明显,且支持数据压缩,存储成本更低。 | 默认存储引擎,适用于大多数业务场景。 |
RocksDB(已下线) | 基于LSM tree结构组织数据,针对性优化数据写入,将随机写入转换成了顺序写入,能保证持续高效的数据写入。 | 适用于大量写且少读的场景。 |
TerarkDB(已下线) | 借助TerarkDB的全局压缩技术,在提高压缩率的同时,能大幅提高随机查询的性能。 | 适用于多读少写或批量写大量读的场景。 |
版本和存储引擎的适配关系
为最大化满足各类业务场景需求,云数据库MongDB提供了WiredTiger、RocksDB和TerarakDB三种存储引擎供您选择。存储引擎与版本间的适配关系如下:
存储引擎 | 4.4版本 | 4.2版本 | 4.0版本 | 3.4版本 |
---|---|---|---|---|
WiredTiger | 副本集实例 |
副本集实例 分片集群实例 Serverless实例 |
单节点实例 副本集实例 分片集群实例 |
单节点实例 副本集实例 分片集群实例 |
RocksDB(已下线) | 无 | 无 | 无 | 单节点实例(按量付费) 副本集实例(按量付费) 分片集群实例 |
TerarkDB(已下线) | 无 | 无 | 无 | 分片集群实例 |