logo资料库

基于MongoDB实现云数据库服务的设计与实现.pdf

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
中国科技论文在线 http://www.paper.edu.cn 基于 MongoDB 实现云数据库服务的设计与 实现 刘长延,徐鹏** 5 10 15 (北京邮电大学 网络与交换技术国家重点实验室,北京 100876) 摘要:随着互联网大规模 Web2.0 应用的兴起,随着云计算的发展以及 SNS 社交网络的崛起, 信息爆炸已经呈现了不可阻挡的趋势,互联网每天都会产生数以亿计的数据,相比以往,数 据量级与数据操作的复杂度都有了大幅度提高,传统的关系型数据库面临挑战,新兴的 NoSQL 数据库得到发展。面对如此海量的数据,如何存储访问并分析处理已经成为研究的热 点,而云数据库提出将数据库放入云中,利用云的高可用性、高可扩展性等优势提供数据库 服务,已经受到业界的普遍关注。本文将介绍如何使用 NoSQL 数据库中的代表 MongoDB 来实 现云数据库服务。 关键词:云计算;NoSQL;MongoDB 中图分类号:TP311 The Design and Implementation of Cloud Database Service based on MongoDB LIU Changyan, XU Peng 20 (State Key Laboratory of Networking and Switching Technology, Beijing University of Posts and Telecommunications, Beijing 100876) Abstract: With the rise of large-scale application of Internet Web 2.0 and the development of cloud computing and social network, the information explosion cannot be stop. Hundreds of millions of data are generated per day in the Internet. Compared to the past, the magnitude and complexity of data has greatly increased. The traditional relational database face some challenges and the rising NoSQL database develop rapidly. Faced with such huge data, how to store and analyze them has become a popular issue. And the cloud database which is based on cloud and can make use of the advantages in cloud such as high availability and scalability are widely studied. This article describes how to use MongoDB which is a typical NoSQL database to design and implement the cloud database service. Key words: cloud computing; NoSQL; MongoDB 25 30 0 引言 随着互联网的发展的,人们对软件的认识和使用模式发生了潜移默化的改变。这种变革 35 必将会带来一系列的挑战:如何获得海量的存储和计算能力,如何在互联网平台上更经济地 运营服务,如何使互联网服务更加敏捷、更加随需应变,如何让企业和个人用户更加方便、 透彻地理解与运用层出不穷的服务。云计算正是顺应这个时代大潮而诞生的信息技术理念。 云计算是一种革新的信息技术与商业服务的消费与交付模式。在这种模式中,用户可以 采用按需的自助模式,通过访问无处不在的网络,获得来自于与地理无关的资源池中被快速 分配的资源,并按实际使用情况付费[1]。 40 云计算中提供三个层次的服务:SaaS(Software as a Service,软件即服务)、PaaS (Plateform as a Service,平台即服务)以及 IaaS(Infrastructure as a Service,基础设施即服务)。按计算分 作者简介:刘长延(1986-),男,学生,主要研究方向:下一代网络、云计算及应用 通信联系人:徐鹏(1977-),男,副教授,主要研究方向:融合网络及业务平台、云计算及应用. E-mail: xupeng0726@gmail.com - 1 -
中国科技论文在线 http://www.paper.edu.cn 配模式的不同,云计算又可分为公有云、私有云以及混合云。 云存储是在云计算概念上延伸和发展出来的一个新的概念,是指通过集群应用、网格技 45 术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来 协同工作,共同对外提供数据存储和业务访问功能的一个系统[2]。 随着互联网业务与应用的不断发展,云存储这种以文件存储为主要存储方式的平台无法 满足更多的应用需求,而用户更希望能使用数据库存储并分析数据,因此云数据库产生了。 云数据库即将数据库部署在云中,以云的方式向用户提供数据库服务,用户对云数据库中的 50 架构与部署完全透明。 随着数据的海量化与操作的复杂化,云数据库这种“云+数据库”的模式,凭借其高效 的数据存储,完善的数据分析处理方法,并依托云计算高可靠性与高可扩展性的优势,越来 越成为业界关注的热点。 1 相关工作 55 随着数据的加速膨胀,如何高效的存储、分析、处理海量数据已经成为当今云计算发展 的重要话题,而云数据库的提出对这种场景的给出了一种较好的解决方案。 云数据库融合了数据库与云计算的优势,目前云数据库的主要代表有 Xeround、Amazon RDS、Salesforce Database.com 以及 Microsoft SQL Azure。 Xeround[3]是提供 MySQL 服务的云数据库,于 2011 年 1 月公测。Xeround 具有自动扩 60 展和自我修复、高可用性、多租户、一键部署等特性。Xeround 本身并不提供基础架构服务, 其使用 Amazon EC2、rackspace 以及 heroku 作为托管平台并在之上部署 MySQL 服务。 Xeround 支持数据库的平滑扩展与迁移,将数据库迁移到 Xeround 不会增加开发和管理成本。 Amazon RDS[4] (Amazon Relational Database Service)是 Amazon AWS 中的组件,提供云 数据库服务,Amazon RDS 最初提供 MySQL 数据库服务,目前已提供对 Oracle 数据库的支 65 持。Amazon RDS 托管在 Amazon EC2 上,可与之前使用 MySQL 或 Oracle 的应用或工具完 全兼容。Amazon RDS 具有计算资源与存储资源的可扩展性,高可用性与高可靠性的特点。 Database.com[5] 是 Salesforce 提出的云数据库,Database.com 提供 Oracle RAC 数据库服 务,Database.com 提供一个开放的平台并提供多种语言的 API 供开发者使用,Database.com 可应用于托管在 Force.com,Vmforce,Amazon EC2,Google App Engine,Heroku 或 Microsoft 70 Azure 等平台上的应用,而所有应用程序还可以原生的在任何设备上运行,如 Android、黑 莓、iPad 或 iPhone,并可以从互联网上任何一个角落安全地调用 database.com API。 SQL Azure[6]是微软云计算平台(Windows Azure Platform)的三大组成部分之一,是一个 部署在云端的关系型数据库引擎,它支持 SQL Server 中绝大多数和开发有关的功能。SQL Azure 由 Database、Data Sync 与 Reporting 三个系统组成,具有高可用性、高可扩展性、容 75 错备份等,同步更新等特性。 上述所有的云数据库都采用传统关系型数据库,而随着互联网大规模的 Web2.0 应用的 兴起,传统关系型数据库面临着更多的挑战,如对高并发读写的支持、对海量数据的高效存 储与访问的支持以及对高可扩展性与高可用性的支持。而 NoSQL 数据库正是为了解决上述 问题而出现的,如将 NoSQL 数据库放入云中实现云数据库将更适用于现今互联网的发展。 80 2 基于 MongoDB 的云数据库服务概述 PaaS 云平台是以应用托管为主要功能的平台,应用开发者可将开发的应用托管在平台 - 2 -
中国科技论文在线 http://www.paper.edu.cn 之上,利用平台提供的基础设施、架构与特性更好的提供应用服务。基于 MongoDB 的云数 据库服务可作为 PaaS 云平台的数据存储系统,向 PaaS 云平台提供数据存储服务。云数据库 与 PaaS 云平台中的消息交互如图 1 所示。 85 图 1 云数据库与 PaaS 云平台中的消息交互 云数据库服务为以下三种用户提供服务:  应用开发者 应用开发者可在云数据库中签约、购买、使用云数据库提供的数据存储服务,支撑自身 90 开发的各种应用。开发者可根据各自应用特点选择数据库的容量、并发连接、容灾备份策略 等。  应用使用者 应用使用者通过使用托管在 PaaS 云平台中应用开发者开发的应用间接使用云数据库。  平台系统管理者 95 云数据库作为 PaaS 云平台的基础,其运行情况直接影响 PaaS 平台的正常运转,平台系 统管理者负责对云数据库的监控工作,主要检测云数据库集群性能、当前使用情况、当前流 量、负载均衡情况以及为各个应用分配的数据库是否按签约时规定的容量、并发连接、容灾 备份策略使用等。 3 基于 MongoDB 的云数据库服务架构 100 本云数据库服务基于 MongoDB 搭建并实现,MongoDB[7]是 NoSQL 数据的典型代表, 它是一个可扩展的、高性能、开源、模式自由、面向文档的数据库,旨在为 web 应用提供 可护展的高性能数据存储解决方案。MongoDB 具有高性能,可扩展,模式自由,面向文件, 易部署,易使用等特点。 基 于 MongoDB 的 云 数 据 库 服 务 由 mongos 、 config server 、 mongod 、 monitor 、 105 authentication、client 等模块组成,如图 2 所示。 - 3 - 数据存储系统数据存储系统PssS管理平台PssS管理平台应用开发者签约购买请求签约购买请求应答应答应用程序使用数据存储服务数据存储服务返回数据托管应用程序平台系统管理者应用使用者实时监控当前系统运行情况应用访问请求应用请求响应托管在PaaS云平台上的应用开发者程序托管在PaaS云平台上的应用开发者程序监控系统监控系统监控信息
中国科技论文在线 http://www.paper.edu.cn 图 2 云数据库系统架构 3.1 mongos mongos 做为系统 proxy,是连接系统与用户的门户,mongos 根据用户请求的不同将请 110 求分发给各个组件。为了保证系统的高可靠性与高可用性,mongos 采用集群方式搭建,可 根据平台业务水平动态扩展集群规模。 3.2 config server config server 用于存储元数据(metadata)信息、数据分片(shard)信息、数据块(chunk)信息, 其并不保存实际存储的数据。config server 同样采用集群方式搭建,集群中每一个 config 115 server 都保存了系统上所有的元信息、分片信息与块信息。 3.3 mongod mongod 是 MongoDB 的核心进程,mongod 用于实际数据的存储与处理,完成数据的持 久化。 chunk 是一个来自某个集合中的一个数据范围,一个 chunk 由集合(Collection)、MinKey 120 与 MaxKey 共同标识。NoSQL 中集合相当于传统关系数据库中表的概念。chunk 有默认的大 小,如存储的数据大于一个 chunk 的大小,则数据会被存放在多个 chunk 中。 mongod 负责 chunk 的存储、查找与实例化。 3.4 shard shard 是种数据备份策略,每一个 shard 包括一个或多个服务和存储数据的 mongod 进程, 125 典型的 shard 通过开启多个 mongod 服务来提高服务的可用性。这些 mongod 进程在 shard 中 组成一个副本集(replica set)。 副本集就是有自动故障恢复功能的主从集群,和典型的主从方式相比,副本集没有固定 的主节点,副本集是数据备份的一种方式。 3.5 monitor 130 monitor 用于监测数据存储系统的运行情况,如系统各节点运行情况、负载均衡情况、 读写频率、读写速度等。 3.6 authentication authentication 用于系统的鉴权认证。authentication 的主要功能:一是根据用户申请的各 - 4 - C2 mongodC3 mongodC1 mongodconfig servermongodmongodmongodshard1mongodmongodmongodshard2mongodmongodmongodshard3mongodmongodmongodshard4mongosmongosclient●●● replica set●●● authenticationmonitor
中国科技论文在线 http://www.paper.edu.cn 项指标(例如数据库名、容量等)为用户分配数据库,将数据库的连接字符串(包括连接数 135 据库的 URL、用户名、密码等)告知用户;二是确保用户在其已签约购买的能力范围内使 用数据库,如签约购买的数据库容量等,实时修改用户数据操作权限。另外,对于占用较多 系统资源的用户给予警告,严重的可停止服务。 4 基于 MongoDB 的云数据库服务特性 基于 MongoDB 的云数据库服务具有多租户、高可用性、高可靠性、可扩展性、透明性、 140 平滑迁移性等功能特性。 4.1 多租户 基于 MongoDB 的云数据库服务使用统一的基础架构与存储资源,多租户的特性使所有 租户的应用程序都共享通用的基础结构和相同的程序代码,同时可降低系统成本,提高资源 利用率,系统升级便利。从用户角度看,多租户的模式共享系统开发维护成本,降低托管成 145 本。 4.2 高可用性 基于 MongoDB 的云数据库服务使用 MongoDB 作为数据持久化工具。MongoDB 是天 然的分布式数据库,不存在单点问题,通过不同的配置策略(主从或副本集),保证数据存 储服务不中断;同时监控系统实时监测云数据库的运行情况,采集相关指标,并根据异常状 150 况列表自动完成处理并上报平台系统管理员,保障系统的高可用性。 4.3 高可靠性 基于 MongoDB 的云数据库服务具有高可靠性,采用分布式架构,通过一系列部署配置, 用户可选择采用多种数据冗余与数据备份、数据恢复策略,保证数据高可靠。 4.4 高可扩展性 155 基于 MongoDB 的云数据库服务具有高可扩展性,可根据用户需求弹性扩展数据存储规 模,并发连接等指标。系统提供不中断服务的扩展,应用可在线升级。 4.5 透明性 应用开发者签约购买云数据库服务后,云数据库服务通过管理平台将连接字符串告知应 用开发者,连接字符串内容为 URL,应用开发者一旦购买,云数据库服务即保证 URL 始终 160 保持不变并且唯一,即使云数据库服务内部服务器发生更改,如 IP 地址变化、服务器变更 等,应用开发者仍可通过 URL 使用云数据库服务,云数据库服务的变化对应用开发者透明。 而应用使用者通过应用间接使用云数据库服务,系统对应用使用者同样透明。 4.6 平滑迁移性 基于 MongoDB 的云数据库服务可满足应用平滑升级,用户只需对原有代码数据库连接 165 部分进行部分修改即可,系统支持 MongoDB 原生的接口,原程序中的数据处理代码均不需 要修改,应用开发者还可将本地数据迁移到云数据库中,系统除了对原生接口的支持还向应 用开发者提供适用于本系统的扩展接口,供应用开发者选择。 - 5 -
中国科技论文在线 http://www.paper.edu.cn 5 基于 MongoDB 的云数据库服务的实现策略 5.1 使用 BSON 数据 170 基于 MongoDB 的云数据库服务使用 BSON[7] (Binary JSON)作为数据存储格式。BSON 是类 JSON 的一种二进制形式的存储格式,与 JSON 一样,BSON 支持内嵌的文档对象和数 组对象,并对 JSON 的数据类型进行了一些扩展。 5.2 使用 BASE 事务机制 基于 MongoDB 的云数据库服务使用 BASE(Basically Available, Soft State, Eventual 175 Consistency)作为事务保障机制,BASE 与 ACID 的事务机制完全不同,其基本思想就是牺牲 强一致性,以便获得可用性或可靠性。 5.3 备份策略 基于 MongoDB 的云数据库服务使用主从备份或副本集两种备份策略,用户可根据应用 场景的不同选择是否采用以及采用哪种备份策略,两种备份策略的部署方式如图 3 所示。 180 主从备份策略即建立一个主节点和一个或多个从节点,从节点实现对主节点的备份。副 本集策略是有自动故障恢复功能的主从集群,其与主从备份的区别是其没有固定的主节点, 集群会自动选举出一个主节点,当其不能工作时则选择其他节点作为主节点。 图 3 主从备份部署与副本集备份部署 185 5.4 分片策略 分片是指将数据拆分,将其本别存储在不同的机器上的过程。相对于传统关系型数据库 采用的手动分片,基于 MongoDB 的云数据库服务支持自动分片,可以自动切分数据并保证 负载均衡,其基本思想就是将集合切分成小块,将这些快分散到若干片里面,每个片只负责 总数据的一部分。用户可根据应用场景配置是否采用分片策略,分片策略的部署方式如图 4 190 所示。 由于分片策略对用户透明,用户甚至不需要知道数据是否被拆分了,因此分片时要使用 mongos 来做请求转发,mongos 实现了路由功能,其知道所有数据存放的位置以及数据与片 的对应关系,所以应用可连接到 mongos 上发送请求,mongos 可将请求转发到相应的 mongod 上,如果请求有了回应,mongos 会将其收集起来回送给应用。 - 6 - 主从从从活跃备份备份活跃活跃备份
中国科技论文在线 http://www.paper.edu.cn 195 5.5 多租户策略 图 4 分片策略部署 基于 MongoDB 的云数据库服务通过对系统的实时监测保证系统的性能隔离,采用分离 数据库策略实现数据隔离,通过性能隔离与数据隔离实现系统的多租户服务。多租户服务保 200 证所有用户共享基础架构,同时提高了系统的资源利用率。 5.6 扩展策略 基于 MongoDB 的云数据库服务的扩展策略主要体现在:系统侧可以动态添加删除集群 节点;用户侧可以动态改变已签约购买的数据库资源。与传统关系型数据库相比,本系统的 扩容不需要停机,故可不停止服务,实现在线扩容,系统端的扩容对用户完全透明。 205 5.7 监测策略 基于 MongoDB 的云数据库服务监控策略主要包括容量监测与性能监测。容量监测保证 用户使用的数据存储容量不超过用户签约购买的容量,性能监控保证用户使用的系统资源不 超过签约购买的系统资源。 5.8 鉴权策略 210 基于 MongoDB 的云数据库服务提供了完善的鉴权策略,当用户创建数据库时,系统将 监测租户申请的数据库名是否存在,数据库名以“租户 ID_申请的数据库名”作为系统中的 数据库名,这样可以避免多个租户间数据库的重名情况。如租户申请的数据库名可用,则系 统按租户申请的数据库容量、最大连接数等指标为用户分配数据库。分配时默认使用租户 ID 作为数据库名,并随机生成密码,完成数据库的鉴权配置,并通过内网 DNS 将用于数据 215 库连接的 IP 地址与端口号映射为 URL。当数据数据库分配成功后,系统将向用户返回连接 字符串,包括连接数据库的 URL(通过内网 DNS 解析)、用户名、密码等消息,用户将通 过连接字符串的内容连接已签约购买的数据库。 6 结论 本文针对当前海量数据处理所面临的问题,结合云计算、云数据库以及 NoSQL 的发展 220 情况提出基于 MongoDB 实现云数据库服务的思想,并给出基于 MongoDB 的云数据库服务 的设计与实现。基于 MongoDB 的云数据库服务结合了云计算与 NoSQL 的优势,具有高可 - 7 - MongodMongosMongodMongod客户端
中国科技论文在线 http://www.paper.edu.cn 靠性、高可用性、高可扩展性、多租户等特点,对海量数据的存储与处理提供了一种解决方 案。 225 [参考文献] (References) 230 [1] 虚拟化与云计算小组. 云计算实践之道:战略蓝图与技术架构[M]. 北京:电子工业出版社,2011 [2] 中国云计算网. 什么是云计算[OL].[2011]. http://www.cloudcomputing-china.cn/ [3] xeround. Cloud Database[OL].[2011-1]. http://xeround.com/ [4] Amazon. Amazon Relational Database Service[OL].[2011] http://aws.amazon.com/rds/ [5] Saleforce. Database.com[OL].[2011]. http://Database.com [6] Microsoft. Windows Azure Platform[OL].[2011] http://www.microsoft.com/windowsazure/ [7] Kristina Chodorow,Michael Dirolf. MongoDB 权威指南[M]. 程显峰. 北京:人民邮电出版社,2011. [8] bsonspec. BSON Binary JSON[OL].[2011] http://bsonspec.org/ - 8 -
分享到:
收藏