基于MongoDB构建阿里云MongoDB云数据库服务

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 6月24日至25日,由中国开源软件推进联盟(COPU)主办的“第十一届开源中国开源世界高峰论坛”在北京成功召开。本届论坛以“深化开源交流,壮大开源平台,服务万众创新,发展共享经济”为主题。 阿里云资深开发数据库工程师郑涔(花名明俨),受邀参与了这次大会,为大家介绍了阿里云与MongoDB的故事

6月24日至25日,由中国开源软件推进联盟(COPU)主办的“第十一届开源中国开源世界高峰论坛”在北京成功召开。本届论坛以“深化开源交流,壮大开源平台,服务万众创新,发展共享经济”为主题。

阿里云资深开发数据库工程师郑涔(花名明俨),受邀参与了这次大会,为大家介绍了阿里云与开源项目MongoDB的故事,他的演讲内容大致可分为三部分:

  • MongoDB简介:主要介绍MongoDB项目
  • 利用MongoDB搭建云数据库服务
  • 云数据库MongoDB社区建设

以下是郑涔发言整理内容。

关于MongoDB

MongoDB是一个文档型的NoSQL数据库。目前是全世界最受欢迎的文档型数据库之一,仅次于Oracle、MySQL等数据库。


24159c9ff4db43d8bfad3c25ac7a3e3128007852



大体认为MongoDB是传统关系型数据库和NoSQL的一个结合。对数据库有所了解的人都知道,传统的关系
型数据库需要一些诸如建表、设置字段等复杂操作。而近几年比较火爆的NoSQL,无需建立schema就可以利用一些简单的K/V存储,来实现数据存储。所以说相对于传统的关系型数据库,NoSQL数据库在扩展性、性能等方面更胜一筹。

MongoDB结合两者优点。一方面,它在某种程度上像是包含了传统关系型数据库的特性,如具备丰富的查询语句及一些索引功能;另一方面,它也继承了NoSQL的优点,省去了设计字段和表的麻烦,并且拥有较好的性能,可以很方便的进行水平扩展。

MongoDB的主要特性可归纳为如下三点:

  1. 灵活动态的文档模型。适用于需要进行快速迭代开发的场景。
  2. 高可用。副本集架构具备自动容灾切换的功能。
  3. 水平扩展。存储的数据相对比较聚集,便于对数据进行水平分割,提高扩展能力。

    1f7cda50f234f11e3c162d73fedf6e2084c88d55



    具体而言,在传统关系型数据库中,我们需要在设计时考虑数据库要有哪些表,哪些字段,有时候需要在不同的表之间通过Join进行一些复杂的查询操作。而MongoDB的文档模型则不需要那些操作,它存储的是JSON格式的文档,以富文档的形式存储所需数据,通过数据冗余来避免Join,并提高性能。

    在高可用方面,它采用了多节点副本集架构,使用户完全不需要关心容灾问题,因为其内部实现了选举算法,如果主节点发生宕机,它能自动地进行新的主节点选举,保证服务可用。这个功能可以用来实现多数据中心支持,以及滚动运维,举个例子,当你需要对系统进行维护的时候,你可以主动把当前的主节点降级为一个备节点,对备节点进行维护,维护好后再提升为主节点。

    在海量数据的支持及可扩展性方面 ,MongoDB同样做得很出色。用户可以对数据进行水平切割,系统可以自动实现负载均衡,对使用者来说则都是透明的。

    在适用场景方面,用户所能想到的场景,MongoDB基本上都能可以胜任,除了一些需要复杂的事务处理的场景。


    a2d59c4548eab05367f1bbc77cb83d033d0b87c4


    利用MongoDB搭建云数据库服务


    5115548da88ecc1e34bceb585b57f7d0993da721


    阿里云的MongoDB云数据库服务是基于最新的MongoDB社区版本3.2构建的,存储引擎采用WiredTiger,性能比较优秀。目前该服务的特性主要体现在数据库的高可用、高可靠、高可扩展等方面。

    此外,MongoDB云数据库服务拥有一支专业的源码团队,团队核心成员全部都是官方认证的DBA,他们可以做到内核的深度优化。目前他们的工作主要关注在MongoDB内核剖析、为用户提供一些增值服务和创新优化、社区建设等方面。

    阿里云数据库团队拥有一个中台团队,开发了一系列的系统工具并摸索出一整套的流程,可以方便地把一个开源的数据库做成一个云服务。目前阿里云的MongoDB云数据库服务在高可用方面上做的主要改进就是通过N+1个节点再加上负载均衡的方式来保证用户同时有N个节点可用。用户可以拿到一组包含N个节点的连接地址,这N个地址是会通过一个负载均衡服务动态解析到后端的服务节点。当有节点宕机时,阿里云会根据情况对节点连接地址的指向情况进行动态切换,保证用户始终有N个节点是可用的。

    具体来说,当N为2时,用户可以拿到两个连接地址,其中一个连接地址是指向当前主节点的服务,另一个指向当前备节点,那么当主节点发生问题宕机时,这个主节点会自动下线,这时备节点会自动提升为主节点,另外原来的一个隐藏节点会提升为备节点,并且系统会根据情况为用户再新建一个隐藏节点,这样就能始终保持两个节点高可用。隐藏的那个节点平时也可以拿来做一些数据备份等操作,由于用户看不到这个节点,这样不会对用户的访问产生影响。

    另外,如果需要为用户提供云服务,系统必须要做一些多租户的安全管理。这里我们是用成熟的cgroup解决方案来做一个多租户的隔离和资源限制,来实现IO、CPU及内存等资源的隔离。同时我们做了一些系统权限的独立,使每个用户的每个实例只能存访自己的一个目录,从而进一步提高安全方面的隔离。另外,我们还将内部使用的管理账号和用户的账号隔离开。因为我们需要让用户的使用更加省心,我们对用户屏蔽了内部的一些细节,包括一些高级的运维命令。此外用户还可以设置白名单来增强安全性。

    目前阿里云MongoDB云数据库实现了一些企业版本才有的特性。众所周知,MongoDB除了有一个开源的社区版外,它还有一个收费的企业版,有一些高级特性是企业版才具备的。

    阿里云团队也针对社区版本实现了一些企业版才有的特性:

    • 一个是数据库的审计,这是一个重要的功能,大型企业一般都需要这个特性来获知或是处理安全方面的问题,以及用来做用户行为的分析,或者是做一些索引的自动优化建议等;
    • 另一个是对中文索引的支持,原本的社区版本不具备这个中文处理的特性,这对广大的中国开发者来说是一个福音;
    • 另外还包括一些创新优化,如动态调整MongoDB主备同步使用的增量日志的空间占用甚至于自适应的进行调整、对短连接做了性能优化,等等。

    这些都是阿里云团队在实际开发运维中遇到的问题,并针对这些问题做的一些改进。

    云数据库MongoDB社区建设


    8a58491b5a8fe1fe78638e302940c24c0724d9f4


    MongoDB的发展离不开社区的支持,目前MongoDB的社区人气火爆,用户活跃。在MongoDB开源社区的一些建设中,可以获得的最大的好处就是我们可以站在巨人的肩膀上。现在MongoDB这个开源数据库已经做得非常好了,程序员可以把它拿过来做一些改造、优化以及配套周边服务,来提供云服务。

    具体而言,我们首先直接利用了一些现成的基础设施,然后,因为开源,我们团队能够更好地吸引人才,开拓视野并提高软件质量等等。另外,我们当然也要遵守开源协议,对开源产品做出的改进会回馈到社区。这包括我们做的针对原来功能上的改进、新的特性,以及一些Bugfix等等。因为MongoDB公司内部使用的特性和Bug追踪系统是对外开放的,任何人都可以提交一些需求或是代码补丁,并可以看到他们最新的一些进展。

    还有,我们还会不定期做一些最佳实践,并分享一些博客、文档,共同促进MongoDB在中国的普及和发展,让大家知道并解决实际使用中会遇到的问题,把MongoDB用得更好 !

    云数据库MongoDB首页:https://www.aliyun.com/product/mongodb/

目录
相关文章
|
2月前
|
SQL 弹性计算 关系型数据库
如何用读写分离构建高效稳定的数据库架构?
在少写多读业务场景中,主实例读请求压力大,影响性能。通过创建只读实例并使用数据库代理实现读写分离,可有效降低主实例负载,提升系统性能与可用性。本文详解配置步骤,助你构建高效稳定的数据库架构。
存储 人工智能 机器人
81 0
|
2月前
|
安全 关系型数据库 数据管理
阿里云数据库:构建高性能与安全的数据管理系统
阿里云数据库提供RDS、PolarDB、Tair等核心产品,具备高可用、弹性扩展、安全合规及智能运维等技术优势,广泛应用于电商、游戏、金融等行业,助力企业高效管理数据,提升业务连续性与竞争力。
|
3月前
|
运维 NoSQL 容灾
告别运维噩梦:手把手教你将自建 MongoDB 平滑迁移至云数据库
程序员为何逃离自建MongoDB?扩容困难、运维复杂、高可用性差成痛点。阿里云MongoDB提供分钟级扩容、自动诊断与高可用保障,助力企业高效运维、降本增效,实现数据库“无感运维”。
|
4月前
|
缓存 NoSQL Linux
在CentOS 7系统中彻底移除MongoDB数据库的步骤
以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
392 79
|
4月前
|
存储 NoSQL MongoDB
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
251 8
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
|
4月前
|
NoSQL MongoDB 数据库
数据库数据恢复—MongoDB数据库数据恢复案例
MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍然开启的情况下将MongoDB数据库文件拷贝到其他分区,数据复制完成后将MongoDB数据库原先所在的分区进行了格式化操作。 结果发现拷贝过去的数据无法使用。管理员又将数据拷贝回原始分区,MongoDB服务仍然无法使用,报错“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”
|
6月前
|
存储 NoSQL MongoDB
阿里云MongoDB 8.0最新发布
MongoDB 8.0 在性能优化、工作负载管理、数据库扩展、安全性增强及向量搜索能力等方面实现了多项突破。新版本大幅提升主从复制效率,降低延迟,并支持灵活的分片迁移与在线重分片。同时,新增 query shape 和持久化索引过滤器功能,帮助用户精细化管理高并发场景。此外,社区版引入全文与向量搜索,助力 AI 应用开发。阿里云作为国内首家支持 MongoDB 8.0 的厂商,提供高可用、弹性扩展和智能运维等云原生特性,满足多样化业务需求。
544 26
|
7月前
|
安全 OLAP 数据库
拒绝等待!阿里云瑶池数据库 x Qwen3,构建增强式RAG
阿里云瑶池 Dify on DMS + AnalyticDB 现已支持通义千问 Qwen3 全系列模型的私域部署,并提供独占模型服务,实现高效安全的 GraphRAG 业务应用及大模型应用开发解决方案。

热门文章

最新文章

推荐镜像

更多