最近在做阿里云相关的项目,用到阿里的很多接口服务的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. (7)UI(基础对象)

    1.地图控件:   地图控件可支持导入Tiled地图编辑器导出的tmx格式文件,地图是制作游戏关卡地形图的控件,对于即时战略类型游戏的制作,为了使玩家流畅的切换游戏画面,经常会使用超过屏幕尺寸的地图. ...

  2. CocoStudio基础教程(1)创建UI并载入到程序中

    1.概述 CocoStudio的使用无疑是cocos2d-x 3.0的重要组成部分,接下来我们用它来创建一组UI,并将其读入到程序中显示出来.先上效果图: 2.导出 在导出之前,最好先创建一个新的工程 ...

  3. Eleven scrum meeting 2015/11/5

    今日工作情况 小组成员 今日完成的工作 明日待做任务 唐彬 选课和退课模块 测试 赖彦谕 病情较重,请假 病情较重,请假 金哉仁 设计app logo 测试 闫昊 调整课程简介的展示效果 整合各个模块 ...

  4. MySQL数据库服务器的架设

    导读 MySQL数据库是Linux操作系统上用得最多的数据库系统,它可以非常方便的与其它服务器集成在一起,如Apache.Vsftpd.Postfix等.下面介绍RHEL 6平台MySQL数据库服务器 ...

  5. [OpenJudge 3064]坠落的蚂蚁

    [OpenJudge 3064]坠落的蚂蚁 试题描述 一根长度为1米的木棒上有若干只蚂蚁在爬动.它们的速度为每秒一厘米或静止不动,方向只有两种,向左或者向右.如果两只蚂蚁碰头,则它们立即交换速度并继续 ...

  6. HDOJ 1312 DFS&BFS

    Red and Black Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  7. BZOJ 1455

    STL的基本用法 (居然能空间卡过去= =!!!) #include <cstdio> #include <ext/pb_ds/priority_queue.hpp> #inc ...

  8. PHP 冒泡原理

    header('Content-Type: text/html; charset=utf-8'); // 简单冒泡算法 $a = array(5,43,3,2,1); function mp($a){ ...

  9. 在eclipse中进行Struts2项目的配置

    Struts2是一个比较出色的基于MVC设计模式的框架,是由Struts1和WebWork发展而来的,性能也比较稳定,现在是Apache软件基金会的一个项目,下面就来配置Struts2进行初始化的开发 ...

  10. C#模拟百度登录

    目录: 1.fiddler解析百度登录地址 2.处理传入参数 1.fiddler解析百度登录地址 因工作需要,所以研究了下百度的登陆.首先打开https://passport.baidu.com/v2 ...