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

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 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/

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
25天前
|
关系型数据库 MySQL Serverless
阿里云国际站代理商:阿里云云数据库MySQL常用函数汇总
@luotuoemo飞机@TG阿里云国际站代理商:阿里MySQL是一种常用的关系型数据库管理系统,而函数是其核心功能之一。在阿里云云数据库MySQL中,有许多常用的函数可以帮助开发者实现各种数据操作和计算任务。本文将总结并介绍一些常用的阿里云云数据库MySQL函数。
|
25天前
|
SQL 关系型数据库 MySQL
阿里云国际站代理商:如何优化阿里云RDS MySQL云数据库?
阿里云国际站代理商:如何优化阿里云RDS MySQL云数据库?随着互联网的快速发展,越来越多的企业开始关注和使用云计算技术。阿里云作为全球领先的云计算服务提供商,其云数据库产品——RDS MySQL在市场上备受欢迎。那么,如何优化阿里云RDS MySQL云数据库呢?本文将从以下几个方面为大家详细介绍。
|
2月前
|
弹性计算 安全 数据库
阿里云优惠活动大全_云服务器_云数据库_域名优惠汇总
阿里云优惠活动大全_云服务器_云数据库_域名优惠汇总,云服务器108元一年起,多配置优惠活动
|
2月前
|
NoSQL Cloud Native 关系型数据库
阿里云几种云数据库的区别
阿里云几种云数据库的区别,RDS关系型数据库如MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等,NoSQL数据库如Redis、Tair、Lindorm和MongoDB
|
2月前
|
NoSQL Cloud Native 关系型数据库
阿里云RDS云数据库详解(三分钟)
阿里云RDS云数据库详解(三分钟),阿里云RDS关系型数据库如MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等
|
2月前
|
NoSQL Cloud Native 关系型数据库
一文读懂阿里云云数据库RDS(新手必看)
阿里云RDS关系型数据库如MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等
|
2月前
|
NoSQL Cloud Native 关系型数据库
阿里云RDS云数据库有哪些?关系型数据库大全
阿里云RDS云数据库有哪些?关系型数据库大全,RDS关系型数据库如MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等,NoSQL数据库如Redis、Tair、Lindorm和MongoDB,数据仓库如AnalyticDB MySQL版、PostgreSQL、ClickHouse,阿里云还提供数据库管理工具如数据传输DTS、数据库备份DBS、数据库自治服务DAS、数据管理DMS,阿里云百科分享阿里云数据库大全及优惠活动
|
2月前
|
NoSQL Cloud Native 关系型数据库
阿里云数据库详细介绍_云数据库大全
阿里云数据库详细介绍_云数据库大全,阿里云数据库大全:RDS关系型数据库如MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等,NoSQL数据库如Redis、Tair、Lindorm和MongoDB,数据仓库如AnalyticDB MySQL版、PostgreSQL、ClickHouse,阿里云还提供数据库管理工具如数据传输DTS、数据库备份DBS、数据库自治服务DAS、数据管理DMS,阿里云百科分享阿里云数据库大全及优惠活动
|
2月前
|
NoSQL Cloud Native 关系型数据库
阿里云数据库大全_云数据库优惠活动
阿里云数据库大全:RDS关系型数据库如MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等,NoSQL数据库如Redis、Tair、Lindorm和MongoDB,数据仓库如AnalyticDB MySQL版、PostgreSQL、ClickHouse,阿里云还提供数据库管理工具如数据传输DTS、数据库备份DBS、数据库自治服务DAS、数据管理DMS,阿里云百科分享阿里云数据库大全及优惠活动
|
3月前
|
Cloud Native 关系型数据库 分布式数据库
阿里云亮相数据库顶会VLDB 2023特邀主旨演讲:云数据库要像乐高积木一样好用
阿里云数据库再获国际顶会肯定!17篇论文入选VLDB刷新纪录
推荐文章
更多