最近在做阿里云相关的项目,用到阿里的很多接口服务的API,于是想把这段项目做个总结,顺便梳理下阿里云的云计算的相关知识点。

DRDS:分布式数据库服务。

1.相关术语

DRDS(Distribute Relational Database Service),分布式关系型数据库服务:分布式数据库服务,基于rds,提供分库分表功能。

DrdsInstance(Distribute Relational Database Instance),分布式数据库实例:一个独立占用物理内存的分布式数据库服务进程,可以有不同的规格,规格会决定该实例的性能(包含IOPS、连接数)。

DrdsInstanceId(Distribute Relational Database  Instance ID),分布式数据库实例名:实例名可标识一个实例的名称,全局唯一。

DrdsDB(Distribute Relational Database),分布式数据库:Drds数据库是在一个实例下创建的逻辑单元,一个实例可以创建多个数据库,在实例内数据库命名唯一,所有数据库都会共享该实例的资源。

DrdsDBName(Distribute Relational Database  Name),分布式数据库名:标识每个分布式DB的名称,在一个实例范围内,数据库名惟一。

DrdsDBAccount(Distribute Relational Database  Accoun),分布式数据库帐号/帐号:帐号是标识数据库的访问权限,目前一个数据库对应一个帐号,一个帐号关联一个数据库。

2.DRDS产品简介

2.1 DRDS产品概要:

单机数据库能够方便的满足用户对于关系查询类的需求,是目前业务应用中最常使用的软件。然而,对于很多应用而言,单机数据库最终都会碰到单机性能上的天花板,在TPS(系统吞吐量)/QPS(每秒查询率)/内存容量/磁盘容量等等一系列系统资源上会碰到各类限制。DRDS的主要目标,就是帮您解决这方面的各类问题,他主要提供了两个功能:读写分离和数据库切分。

读写分离,能够允许您实现一台机器写入,多台机器读取,这对于读多写少的应用,能够以极低的成本解决系统的瓶颈。

数据库切分是一个解决系统存储瓶颈的最终极解决方案,数据库切分的核心思想其实很简单,就是分而治之。将数据分散到多台机器,并保证请求能够平均的分发到这些机器上,就可以以极低的成本来解决业务的各类性能瓶颈。

当然,切分也是有代价的,最明显的代价就是,分布式数据库会对一些原有单机数据库的场景进行限制,因为这些操作,在分布式环境下的延迟或效率非常低效,就算是能够实现出来,也会因为性能问题而无法使用。

针对这类问题,阿里的中间件团队曾经成功的协助过近300个业务应用系统实现了数据库的切分,因此,我们在这个领域内积累了大量的实战经验和成熟的产品,希望这类产品也能够为您提供相同的服务,让您的数据库再也不必担心性能问题。

2.2DRDS与MySQL兼容性:

支持点:

DRDS支持90%以上MySQL sql,包括常用的insert/update/replace,select/join/union/subquery/exist等各种语法+条件组合

DRDS抽象出21种数据类型,int/float/double/long/decimal/data/time/datetime/timestamp/bit/bits...

DRDS兼容MySQL 80%的函数实现,主要包括:数学、字符串、时间

DRDS支持map/reduce计算模型

DRDS支持函数的二次计算,如如count(id) + 1 , sum(pv)/count(person)

DRDS支持跨库join的函数计算,比如select count(*)+1 from a join b on a.id = b.id.

DRDS支持特殊类型计算,比如count(distinct id).

DRDS支持跨数据节点join(分布式join)

DRDS支持跨数据节点多重嵌套子查询

DRDS支持多种并行执行模式

目前不支持:

不支持group by/order by 列为函数列且不存在与select列中

不支持join列为函数计算,比如on.id=b.id+1

DRDS server未开放DDL支持,只能在控制台做DDL

不支持复杂update/delete语句(比如update多表,有join等)

不支持强一致分布式事务

2.3 数据水平拆分

DRDS帮助您实现分库分表,能够将原来只能在单节点执行的SQL,转变为多节点执行的SQL,如同单个数据库体验。通过支持系统实现数据存储的动态水平扩展,目前DRDS在公司内已经有超过几百个应用系统使用超过5年,高效安全且稳定。

但是分布式数据库和单机数据库本身必然会存在一定的使用习惯上的不同,例如低效的分布式事务、分布式join等,针对这些问题,DRDS的选择是:优先考虑性能和稳定性,兼顾软件的兼容性。

与市面上的一些开源的数据库切分工具相比,DRDS能够更智能的分析您的SQL,在结果集合并和分布式join优化等关键领域,我们都有成熟解决方案,能够帮您解决在分布式数据库场景中面临的大部分问题。

2.4 平滑扩容

DRDS能够帮助用户实现在线的数据库平滑扩容,让用户能够按需的自由增减数据库,从而实现弹性按需使用数据库集群。

在线数据库扩容的重点在于“在线”两字,也就是用户不需要停止业务系统进行割接操作,直接就可以添加新的RDS节点到集群中,实现无缝的自由扩展。DRDS则将整个扩容的过程分为几个阶段,包括全量迁移,增量同步,切换数据库等几个步骤。数据会提前进行搬迁,并进行增量并行同步一段时间,因此,我们可以在非常短的时间内(秒级别)完成数据库的最终扩容切换工作,对您的业务没有影响。

2.5 小表广播

在一些大的业务表进行了切分后,总会存在一些表的数据量不大,更新量也不大的原始信息表。这些表往往会与我们的切分后大表进行join操作。这种操作物理上就会造成分布式join查询,效率从整体上会比较低下。

针对这种分布式join的场景,我们开发了OETL 专用工具来帮您进行小表广播,将原信息表的所有数据(包括增量更新)全部自动的广播到大表的机器上,这样,就可以让原来的分布式查询变成单机本地查询了。

2.6  全局唯一ID

在分布式环境下,原有的mysql sequence生成机制无法高效的生成全局唯一的sequence.我们借鉴了oracle的sequence生成样例,实现了一个在mysql基础上的高效sequence生成器,能做到没有单点性能瓶颈,具备大并发获取和低延迟特性。

DRDS sequence功能的目标只是为了保证数据的全局唯一,虽然基本上是按时间序列获取的,但并不全局有序。

阿里云DRDS:分布式数据库服务的更多相关文章

  1. 跨时代的分布式数据库 – 阿里云DRDS详解(转)

    原文章地址:https://www.csdn.net/article/a/2015-08-28/15827676 跨时代的分布式数据库 – 阿里云DRDS详解 发表于2015-08-28 18:39| ...

  2. 避免闲置云资源浪费 | 阿里云轻量级分布式应用服务 SAE 邀您公测

    您是否遇到过: 资源利用率低,多数服务器CPU平均利用率在10%以下,用户需为大量闲置资源买单. 感知 IaaS 购买和集群运维,人员技能要求高,运维效率低. 想拥抱 Kubernetes.微服务架构 ...

  3. 数据库分库分表容量划分建议参考阿里云DRDS原则

    做分库分表的时候 一直想知道分库分表容量的最优规则有什么好的建议,以下是参考阿里云 DRDS 分库分表的规则,还是有一定的参考意义 .

  4. 从阿里云迁移分布式redis实例到华为云解决方案(详细)

    如果要换多数是经济因素啦- 一. 准备工作 先在华为云上买一台redis数据库,配置一定要注意多数要保持一致,至于4.0还是5.0倒问题不大亲测兼容 可用区要找现有ECS云主机中的相同的机器.记下:这 ...

  5. 阿里云-DRDS(转)

    分库分表 DRDS 在后端将数据量较大的数据表水平拆分到后端的每个 RDS 数据库中,这些拆分到RDS中的数据库被称为分库,分库中的表称为分表.DRDS 由每个分库负责每一份数据的读写操作,从而有效的 ...

  6. 转- 阿里云、Amazon、Google云数据库方案架构与技术分析

    「一切都会运行在云端」. 云时代早已来临,本文着眼于顶级云服务商云服务商的云数据库方案背后的架构,以及笔者最近观察到的一些对于云数据库有意义的工业界的相关技术的进展,希望读者能有所收获. 现在越来越多 ...

  7. 阿里云377秒完成100TB数据排序:秒三星百度

    阿里云377秒完成100TB数据排序:秒三星百度 今日,Sort Benchmark 在官方网站公布了 2015 年排序竞赛的最终成绩.其中,阿里云用不到 7 分钟(377 秒)就完成了 100TB ...

  8. 持续优化云原生体验,阿里云在Serverless容器与多云上的探索

    近日,阿里云宣布推出Serverless Kubernetes服务此举意在降低容器技术的使用门槛.简化容器平台运维.并同时发布阿里云服务对Open Service Broker API标准支持,通过一 ...

  9. 云时代的分布式数据库:阿里分布式数据库服务DRDS

    发表于2015-07-15 21:47| 10943次阅读| 来源<程序员>杂志| 27 条评论| 作者王晶昱 <程序员>杂志数据库DRDS分布式沈询 摘要:伴随着系统性能.成 ...

随机推荐

  1. MSSQL复习

    1.用户角色: 登录名就相当于一个用户 角色相当于把你的操作权限分组了 2.数据系统结构(略) 网络连接接口 关系引擎 存储引擎 内存 3.数据库的结构 数据库 架构 对象(在Sql server中将 ...

  2. spring+hibernate常见异常集合

    spring+hibernate出错小结: (1)java.lang.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext ...

  3. 新浪云php与java连接MySQL数据库

    PHP新浪云连接MySQL <?php $con=mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYS ...

  4. 为nginx增加nginx_http_concat模块

    为nginx增加nginx_http_concat模块 时间 2013-06-05 22:14:56  我行我思 原文  http://www.fanjun.me/?p=562 主题 Nginx 缘由 ...

  5. GraphicsMagick为图片添加水印

    GraphicsMagick号称图像处理领域的瑞士军刀.提供了健壮及高效的图像处理工具包和库,支持超过88种主流图片格式包括:BMP,GIF,JPEG,JPEG-2000,PNG,PDF,PNM,TI ...

  6. mysql将int 时间类型格式化

    摘要 DATE_FORMAT(date,format) 根据format字符串安排date值的格式. DATE_FORMAT(date,format)  根据format字符串安排date值的格式. ...

  7. What is the difference between provider network and self-service network in OpenStack?

    "self-service networking" allows users to create their own virtual networks, subnets, rout ...

  8. sublime text多文件夹查找关键字

    Ctrl+shift+F 快捷键在文件夹内查找,与普通编辑器不同的地方是sublime允许添加多个文件夹进行查找 转自:http://www.douban.com/note/362268947/

  9. iOS7中都Bar的透明问题

    /* New behavior on iOS 7. Default is YES. You may force an opaque background by setting the property ...

  10. 用jquery追加的元素不能触发treeview事件

    在追加的元素后面添加: $("#navigation").treeview({ persist: "location", collapsed: true, un ...