剖析云计算中的“共享型数据库”(转载)

一、摘要

   随着云计算的出现,出现了很多新的名词,像云数据库、云存储、弹性扩容,资源隔离等词汇。下面就大家炒的比较热的“共享型数据库”做一下解释,给大家剖析什么叫“共享型数据库”。 

二、什么是共享型数据库

  谈及“共享型数据库”,最让我们困惑的是“共享型”三个字。 ”共享型“让我们会想到其反义词 — “独享型”。 没错,“共享型数据库”是对比“独享型数据库”的一种针对用户资源所有权的数据库称谓, 它是伴随着云计算出来之后的一种数据库创新,以节约资源为目的,而一般情况下,自己的服务器或PC机上安装的不与人共享的数据称为“独享型数据库”。很多 人不明白共享型数据库的特点,那么我接下来就简单介绍一下。

三、共享型数据库与独享型数据库的特点对比

在介绍共享型数据库之前先来分析一下什么叫“独享型数据库”。 “独享型数据库”,顾名思义,“独享”就是自己的数据库,在云计算出来之前,我们几乎没有独享型数据库的概念,因为没有对比,认为所有的数据库都应该叫做 独享型数据库。 “独享型数据库”就比如我们有一块儿地(这块是有地址和门牌号的,好比数据库IP和端口),自己在这块儿地上修一栋房子当仓库(类似于我们创建了一个数据 库), 我们在这栋房子里任意使用房间来存东西 (类似于我们可以创建Table一样)。

“共享型数据库”是为节省资源、降低开发者成本孕育而生的,很多人一起共同使用这栋楼房,但是这栋楼房不是属于具体某一个人, 是雇主的资产。在云平台的世界里,雇主是提供云数据库的供应商,比如“京东云擎”, 使用服务的人称为“租户”。大家在一起使用一个数据库,你有创建表的权限、修改表的权限,但是没有创建数据库、修改数据库的权限,因为这栋楼是大家的,不 是你一个人的,而你,只是租户之一。当然,你的几个房间会给你一个标签,取个名字,是某某人的(这个名字就是你以后使用数据库的名称); 您的这些房间与其他人的房间也是完全隔离的,彼此是不存在隐私暴露的问题的。

  "共享型数据库”的租户的房租比较便宜,因为按需收费,甚至免费。“按需收费“是云平台的共同特点,因为你的房间是用来存东西的,就类似于你的数据 库表是用来存数据的一样, 在以前你使用独享型数据库,你自己买了一个云数据库,是一次性投入,好比你花费了一辈子的积蓄来买了一栋房子,但是你真的需要那么房间来存你的东西吗?如 存粮食? 也许你自己都不知道你的东西有多少个东西。 共享型数据库的诞生解决了这个问题,一般的情况下,你有多少东西,你就租多大的房间,房东就收你多少的费用。这种就叫按需付费。有这样服务的云平台有很 多,比如百度的BAE、新浪的SAE、京东的JAE (即云擎)。目前BAE的数据库是按空间收费,SAE是既按空间计费,也按流量计费。京东的JAE目前是25G以内免费。

四、京东云擎的云数据库的特点

  下面拿京东云擎 (下面简称“云擎”)的云数据库举例做一下介绍。云擎是一个 应用托管的云平台,属于云计算模型中的PaaS层。京东云数据库分为独享型和共享型数据库两种,在云擎里使用的共享型数据库,因为云擎是一个PaaS平 台,(我这里不介绍PaaS平台,大家去百度、Google一下)。我只插简单说一下其特点,PaaS平台的主要特点就是节约资源,按需分配,所以云擎使 用了共享型数据库。下面就简单介绍一下其特点吧:

  先看看我手绘的一个架构图:

(注:不代表云擎云数据库真实架构,只为说明清楚问题而绘制)

1. 租户隔离。 多个租户共享同一数据库实例必然需要一个有效的隔离方案,防止一个用户的慢查询请求或恶意请求影响其他用户访问。这里的隔离实现方式是通过JProxy层 对用户所有的访问进行了拦截,并根据用户访问的数据表索引信息等,对用户执行该请求所需资源进行预判,并拦截掉恶意的请求及影响其他用户的请求。同时为了 精确控制每个用户的资源使用,整个系统针对用户使用的连接数,内存占用容量,磁盘空间使用情况,带宽流量等都做了有效的记录和监控并根据用户的配额进行控 制。

2. 集群路由信息高一致性保障。整体集群采用经典的弱中心化集群结构,在满足集群高性能的基础上同时具备足够的可控性,JManager管理整个集群路由信 息,并通过多个Slave避免单点故障,当路由变更时,JManager首先同步路由变更信息给自己的Slave,然后才会同步所有的JProxy,避免 路由变更时JManager挂掉导致路由不一致。

3. 高可用保障。整体集群所有节点无单点,用户的数据库会通过zookeeper做主从的高可用,如果用户主库挂掉,会自动切换至从库,并重新绑定 floating ip到从库,不会影响对用户的服务。(floating ip知道什么意思,想做架构师的朋友可以搜一下,这里不做累述)

4. 用户数据库无缝升级扩容。当用户的数据库数据增长超过指定配额时,用户可以选择升级数据库,系统会自动根据资源池使用情况将用户数据库迁移到比较空闲的实 例上,迁移过程中并不会影响用户的服务。通过定时自动为用户数据库做快照的方式,结合数据库binlog同步工具,来帮助用户实现增量备份,迁移的工作也 是依赖于以上这些工具完成的。

5. 共享型数据库基于安全方面考虑,通过jproxy对有潜在安全风险的数据库操作语法进行了限制,不如不能使用Create database,刚才提到了这栋房子除了您在用,别人也在用,你只有这几个或者几十个房间而已,你只能在这几个或者几十个房间里瞎搞,不能去别人的房间 胡来!

云擎的云数据库网址是:http://jae.jd.com  ,对这方面感兴趣的童鞋可以看看,目前是免费使用的。

五、总结

  云计算出现以后,为企业、创业团队、个人带来了便利, 那个自建机房、购买或者租用服务器搭建环境、中间件、部署应用,搞定域名而浪费大量人力物力的时代,我相信在不久的未来可能会渐行渐远; 按需付费、方便快捷的互联网服务让云平台成为未来软件服务市场的宠儿, 而共享型数据库也会逐步体现其价值,迎接崭新的明天,相关的人才需求也会紧随其后。 预祝中国的云计算有广大的发展空间,越来越多的人才为其服务!

  本文转载自:http://www.cnblogs.com/cloud_china/p/3799907.html

时间: 2024-10-10 22:21:47

剖析云计算中的“共享型数据库”(转载)的相关文章

剖析云平台中的“共享型数据库”

摘要: 随着云计算的出现,出现了很多新的名词,像弹性扩容,平缓迁移,资源隔离等.目前我就“共享型数据库”做一下解释,下面就以京东云擎的云数据库为例,给大家剖析什么叫“共享性数据库”.  这个是我第一篇帖子,我首先自我介绍一下,我从事IT行业10年,在多年以前是一名架构师,现在在一家互联网企业做产品经理,下面的仅仅是因为个人与行业一些从业人员交流得到的心得以及总结,有不妥之处请见谅. “共享型数据库”是对比“独享性数据库”的一种针对用户资源所有权的数据库称谓,它是伴随着云计算出来之后的一种数据库创

Python中从SQL型数据库读写dataframe型数据

Python的pandas包对表格化的数据处理能力很强,而SQL数据库的数据就是以表格的形式储存,因此经常将sql数据库里的数据直接读取为dataframe,分析操作以后再将dataframe存到sql数据库中.而pandas中的read_sql和to_sql函数就可以很方便得从sql数据库中读写数据. read_sql 参见pandas.read_sql的文档,read_sql主要有如下几个参数: sql:SQL命令字符串 con:连接sql数据库的engine,一般可以用SQLalchemy

提高云计算中的软件质量

? Gavlin Pather在俄罗斯的KZN长大,在那里他学习信息技术并开始了作为一名开发者的职业生涯,后来他又成了测试领域的一名黑盒测试员,接着又转向白盒测试,最终是自动化测试.在测试专业领域近6年并在测试实验室中进行测试,自然而然地,他逐渐开始对云产生兴趣. ? 计算机和软件在我们的日常生活中越来越常见.现代社会中随着我们对技术越来越依赖,不可避免地就需求它们变得更快,更好.更快,更好的需求提高了,就需要更高质量的软件.要做到这一点,就不能只依靠手工测试,我们需要进入一个自动化的测试时代.

使用OpenFiler来模拟存储配置RAC中ASM共享盘及多路径(multipath)的测试

第一章 本篇总览 之前发布了一篇<Oracle_lhr_RAC 12cR1安装>,但是其中的存储并没有使用多路径,而是使用了VMware自身提供的存储.所以,年前最后一件事就是把多路径学习一下,本文介绍了OpenFiler.iSCSI和多路径的配置. 本文内容:   第二章 安装OpenFiler OpenFile是在rPath Linux基础上开发的,它能够作为一个独立的Linux操作系统发行.Openfiler是一款非常好的存储管理操作系统,开源免费,通过web界面对存储磁盘的管理,支持现

十步优化SQL Server中的数据访问(转载)

原文地址:http://tech.it168.com/a2009/1125/814/000000814758.shtml 故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户,你开始着手调查访问变慢的原因. 经过紧张的调查,你发现问题出在数据库上,当应用程序尝试访问/更新数据时,数据库执行得相当慢,再次深入调查数据库后,你发现数据库表增长得很大,有些表

深入剖析Java中的自动装箱和拆箱过程

深入剖析Java中的装箱和拆箱 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱.拆箱相关的问题. 以下是本文的目录大纲: 一.什么是装箱?什么是拆箱? 二.装箱和拆箱是如何实现的 三.面试中相关的问题 若有不正之处,请谅解和批评指正,不胜感激. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin0520/p/3780005.

从别人那淘的知识 深入剖析Java中的装箱和拆箱

(转载的海子的博文   海子:http://www.cnblogs.com/dolphin0520/) 深入剖析Java中的装箱和拆箱 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱.拆箱相关的问题. 以下是本文的目录大纲: 一.什么是装箱?什么是拆箱? 二.装箱和拆箱是如何实现的 三.面试中相关的问题 原文浏览地址 http://www.cnblogs.com/dolphi

电子商务(电销)平台中用户模块(User)数据库设计明细

以下是自己在电子商务系统设计中的订单模块的数据库设计经验总结,而今发表出来一起分享,如有不当,欢迎跟帖讨论~ 用户基础表(user_base)|-- 自动编号 (user_id)|-- 用户名 (user_name)|-- 手机号码|-- 电子邮件|-- 登录密码 (password)|-- 用户状态 (status) 用户开放登录帐号表|-- 自动编号|-- 用户编号|-- 腾讯QQ号码 (qq)|-- 微信号码 (wechat)|-- 淘宝帐号 (taobao)|-- Skype (skyp

c中volatile的用法【转载】

volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化.). 例如: volatile int i=10; int j = i; ... int k = i; volatile 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i