1月8日,2020年MongoDB中文社区年终大会于线上隆重举行,大会以“重新认识MongoDB”为中心探讨了MongoDB的技术能力创新、行业解决方案,以及未来发展方向。华为云DDS数据库架构师受邀参加并发表了《MongoDB内核源码分布式事务》主题演讲,分享了MongoDB社区版的技术能力、存算分离架构下的GaussDB(for Mongo)技术创新,以及DDS在社区源码上的实践,对企业上云和未来发展具有重大意义。
演进中的MongoDB社区版
MongoDB作为全球备受欢迎的非关系型数据库典型代表,拥有庞大的用户量和优秀的技术能力,并在不断演进升级中创造出了一系列产品能力。崔鑫从分片、复制、事务、分布式事务等方面详细介绍了MongoDB社区版的技术能力,如针对物理时钟偏差问题,社区版推出混合逻辑时钟(HLC),通过HLC的统一逻辑、分配、动态推进等方式,解决MongoDB时间一致性问题;针对低吞吐、高时延问题,社区版基于Replication与Raft协议,保障数据一致性,以及基于时间戳保障事务的一致性等。
存算分离架构下的GaussDB(for Mongo)
随着企业数字化转型升级的加速,企业对云数据库的要求水涨船高,更高可靠、高可用、高安全的云数据库成为企业的上云首选。GaussDB(for Mongo) 是一款基于计算存储分离架构,兼容MongoDB生态的云原生NoSQL数据库。在华为云高性能、高可用、高可靠、高安全、可弹性伸缩的基础上,提供了一键部署、快速备份恢复、计算存储独立扩容、监控告警等服务能力。
相比社区版,GaussDB(for Mongo) 优势明显,如添加Secondary节点从小时级缩短为秒级;基于WAL复制,Secondary节点无写IO,从根本上解决社区版Seconary节点Oplog脱节问题;Primary/Seconary无任何IO交互,Secondary节点个数理论无上限, 可支持百万级OPS;LSMTree Compaction 计算/IO卸载到Compaction统一调度池,集中管理,不浪费用户读写IO;基于共享存储,Chunk分裂/迁移动作不引起真实IO,只更新路由元数据,秒级分裂/均衡。
DDS在MongoDB社区源码上的实践
基于云上MongoDB承载更多业务诉求的现状,华为云文档数据库服务DDS在MongoDB社区版开放了7大源码实践能力,如集群模式下支持多文档事务,即通过在Mongos上增加了对Session的支持,Mongos侧的Session对象跟踪事务执行的状态并路由到对应的Shard上执行,而且集群模式下的事务使用方式与副本集完全一致;操作审计功能,即支持用户/库/表/操作级别的审计功能;查询内存限制,避免并发查询下的OOM问题;以及中文全文检索、Mongos路由自动刷新、MongoRocks、数据库层面物理热备等。
崔鑫最后表示,2021年华为云数据库将从MongoDB集群单shard事务、集群分布式事务、物化视图等方面去提升改进,未来将以 rocksdb 存储引擎为主, 在存储架构层面同时发展计算存储分离和计算存储混合的两种产品形态,充分利用华为软硬件优势持续构建业内领先的技术和服务,未来的GaussDB(for Mongo)和DDS会更优秀。