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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 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/

相关实践学习
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
目录
相关文章
|
14天前
|
缓存 NoSQL 数据库
运用云数据库 Tair 构建缓存为应用提速,完成任务得苹果音响、充电套装等好礼!
本活动将带大家了解云数据库 Tair(兼容 Redis),通过体验构建缓存以提速应用,完成任务,即可领取罗马仕安卓充电套装,限量1000个,先到先得。邀请好友共同参与活动,还可赢取苹果 HomePod mini、小米蓝牙耳机等精美好礼!
|
25天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
26天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第20天】本文探讨了MongoDB Atlas的核心特性、实践应用及对未来云原生数据库的思考。MongoDB Atlas作为云原生数据库服务,具备全球分布、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了实施MongoDB Atlas的最佳实践和职业心得,展望了云原生数据库的发展趋势。
|
27天前
|
存储 NoSQL MongoDB
MongoDB 数据库引用
10月更文挑战第20天
17 1
|
1月前
|
存储 NoSQL Shell
MongoDB 创建数据库
10月更文挑战第12天
53 4
|
1月前
|
存储 NoSQL MongoDB
基于阿里云数据库MongoDB版,微财数科“又快又稳”服务超7000万客户
选择MongoDB主要基于其灵活的数据模型、高性能、高可用性、可扩展性、安全性和强大的分析能力。
|
1月前
|
NoSQL MongoDB 数据库
使用NimoShake将数据从AWS DynamoDB迁移至阿里云MongoDB
使用NimoShake将数据从AWS DynamoDB迁移至阿里云MongoDB
|
1月前
|
NoSQL MongoDB 数据库
MongoDB是一个NoSQL数据库,有着多种不同的命令和操作。以下是一些常见的MongoDB命令:
一些常用的MongoDB命令,如数据库和集合的管理、数据的插入、查询、更新、删除以及聚合操作等。
25 1
|
1月前
|
存储 NoSQL MongoDB
mongodb的数据库表怎么创建
在此过程中,理解并掌握这些基本操作,是深入探索MongoDB魅力,乃至构建高效数据解决方案的关键所在。通过实践,您将更加深刻地体会到这种随需应变的数据管理模式带来的便利与效率提升。
25 0
|
1月前
|
存储 NoSQL MongoDB
小川科技携手阿里云数据库MongoDB:数据赋能企业构建年轻娱乐生态
基于MongoDB灵活模式的特性,小川实现了功能的快速迭代和上线,而数据库侧无需任何更改
下一篇
无影云桌面