Skip to content

Instantly share code, notes, and snippets.

@baymaxium
Created October 18, 2017 09:40
Show Gist options
  • Save baymaxium/fd4130fd167096538b49ed0cc87f60c7 to your computer and use it in GitHub Desktop.
Save baymaxium/fd4130fd167096538b49ed0cc87f60c7 to your computer and use it in GitHub Desktop.
有人说阿里云这款数据库比AWS Aurora 性能好太多,你服不服?

原文:高效开发运维

 

在这个信息化的时代,我们的一举一动都离不开与数据打交道,特别是云计算和大数据时代的到来,使得传统数据库的性能已无法满足海量数据的实时交易查询需求,在性能和成本的双重压力之下,云计算下的数据库需要寻找突破之路。

云计算时代 关系型数据库如何实现进化?  

谈及数据库,在 08 年以前基本上是以单机型数据库为主,比如大家耳熟能详的 Oracle,MySQL,PostgreSQL 等这样的单机数据库来支撑数据存储业务。但是随着互联网的蓬勃发展,接入到互联网的设备越来越多,数据量越来越大,并发处理需求越来越多,大家渐渐发现这种单机关系型数据库已经没有办法满足在互联网遇到的比如大数据存储、高并发等问题。于是,以 Google 为代表的一些互联网公司开始转向 NoSQL 这种分布式的数据库,这是一个牺牲掉关系的模型去追求可扩展性的方向。在过去的近十年来,是 NoSQL 蓬勃发展的一段时期。但是近几年来,大家发现我们很多的业务并没有办法直接以 NoSQL 的模型来生搬硬套。很多已有的业务 , 特别是对于一些传统行业,还有在座的各位遇到的通信领域的场景来说,历史遗留下来的程序都是以关系型数据库为基础的,所以大家发现很难把这些  Old-SQL 的东西放在一个分布式的场景来使用。那有没有办法把单机型的 SQL 的关系模型跟 NoSQL 所带来的分布式的能力结合在一起呢?其实这就是这两年来整个数据库行业的一个大的革命性方向—— NewSQL。

NewSQL 是指这样一类新式的关系型数据库管理系统,它针对 OLTP 实现读 - 写工作负载,追求提供和 NoSQL 系统相同的扩展性能,且仍然保持传统数据库支持的 ACID 特性。

NewSQL 数据库其典型代表有 Google Spanner ,  VoltDB ,  Clustrix ,  NuoDB 等, NewSQL 是既拥有传统 SQL 数据库血统,又能够适应云计算时代分布式扩展的产品,主要包括两类:拥有关系型数据库产品和服务,并将关系模型的好处带到分布式架构上;或者提高关系数据库的性能,使之达到不用考虑水平扩展问题的程度。前一类 NewSQL 包括 Clustrix 、 GenieDB 、 ScalArc 、 ScaleBase 、 NimbusDB ,也包括带有 NDB 的 MySQL 集群、Drizzle 等。后一类 NewSQL 包括 Tokutek 、 JustOne DB 。还有一些" NewSQL 即服务",包括 Amazon 的关系数据库服务、 Microsoft 的 SQL  Azure、FathomDB 等。

曾经一位业内人士这样分析过:做云计算但没有数据库的厂商,除了使用不成熟的开源数据库产品和养肥了市场等着上面几家收割,或被排挤出这个利润丰厚的市场外,只有研发数据库一条出路。而这正是云计算厂商代表 AWS 做出的选择。

Amazon Aurora 是 MySQL 的五倍性能  

不过,NewSQL 就一定是关系型数据库的发展方向吗?亚马逊 AWS 用自己的产品给出了不一样的答案,那就是 Aurora。

Amazon Aurora 通过将数据库引擎与为数据库工作负载构建的基于 SSD 的虚拟化存储层紧密集成,使性能大幅超过 MySQL,从而减少至存储系统的写入操作,最大程度降低锁竞争并消除数据库进程线程所产生的延迟。根据 SysBench 对 r3.8xlarge 实例进行的测试表明,Amazon Aurora 每秒提供超过 500,000 次选择和 100,000 次更新,是在同一硬件上运行相同基准的 MySQL 的 5 倍。

为何阿里云要研发新一代的关系型数据库?  

今年阿里云紧随亚马逊的步伐,自主研发了新一代关系型数据库 PoalrDB。PolarDB 作为国内首个自主研发的通用云数据库,它拥有商业数据库一样的性能,但价格仅为前者的 1/10,进一步降低用户的上云成本。作为云托管的关系型数据库,除了关系型数据库的核心特征之外,PoalrDB 更多的关注于如何提供满足用户业务需求的云服务,并且通过技术革新,不断进化,在提供更好的数据库计算力的同时,满足用户以下业务需求:上云成本、OLTP 性能、业务连续性、在线业务扩展、数据安全。

据悉,9 月 21 日,PolarDB 将推出的公测版本,和 MySQL 完全兼容,即现有 MySQL 应用程序和工具无需修改即可运行,解决了存储扩展和 qps 扩展的问题,性能高,成本很低,同时是高可用三副本,共享存储架构。

   细看 PolarDB

今天不只是阿里云要做这样一款关系型数据库,而是所有的云计算厂商都不可避免的要经历这样一个阶段。那就是云计算时代传统 IT 计算力的重建和进化。PolarDB 并不是重复 Oracle, IBM 等的脚步,而是一种创新和技术的提升。

   PolarDB 与 Aurora 设计理念如出一辙

产品架构上,阿里云 PolarDB 采用了与 Amazon Aurora 相同的设计哲学。都放弃了通用分布式数据库 OLTP 多路并发写的支持,采用一写多读的架构设计,简化了分布式系统难以兼顾的理论模型,又能满足绝大多数 OLTP 的应用场景和性能要求。

PolarDB 采用存储与计算分离的技术架构,同时可以支持更多的只读节点。主节点和只读节点之间是 Active-Active 的 Failover 方式,计算节点资源得到充分利用,由于使用共享存储,共享同一份数据,进一步降低了用户的使用成本,满足公有云计算环境下用户业务弹性扩展的刚性需求。

PolarDB 的设计思想有几个大的革新。一是通过重新设计特定的文件系统来存取 Redo log 这种特定的 WAL I/O 数据,二是通过高速网络和高效协议将数据库文件和 Redo log 文件放在共享存储设备上,避免了多次长路径 I/O 的重复操作,相比较 Binlog 这种方式更加巧妙。另外在 DB Server 设计上,采用 MySQL 完全兼容的思路,完全拥抱开源生态,从 SQL 的编译、性能优化器和执行计划等等都保留了传统关系型数据库的特色。并且针对 Redolog 的 I/O 路径,专门设计了多副本共享存储块设备。

我们知道,分布式数据库一直是数据库领域的热点,具有非常大的实现难度。不管是遵循 CAP 理论,还是 BASE 思想,通用的分布式关系型数据库基本上很难做到技术和商用的完美平衡。与 SQL 标准以及主流数据库兼容, OLTP ACID 事务 100% 支持, 99.99% 的高可用,高性能低延迟并发处理能力,弹性 Scale Up , Scale out 可扩展性,备份容灾和低成本迁移等等,能够完美兼顾所有这些特点的商用关系型数据库还没有出现。

   PolarDB 性能真的比 Aurora 高吗?

当年,记得 Aurora 刚刚出来的时候,业界有质疑的声音:“ Aurora 会不会充其量就是一个翻版的 MySQL ?”今天,当阿里云全新一代 PolarDB 出来,会不会也会有质疑的声音。

据业内人士透露,阿里云这款数据库比 AWS Aurora 性能好太多,这是真的吗?如果是真的,那性能比 MySQL 好太多太多了,你服不服?青出于蓝而胜于蓝,不是不无道理。

我们来看看性能指标吧。业界通常用 SysBench 来测试,包括亚马逊的 Aurora 与 MySQL 的对比,而在阿里云内部是用用户典型场景和数据来对比 PolarDB 和 RDS 的。

Amazon Aurora 优于 MySQL 的一个地方就是具有大量并行工作负载。 那 PolarDB 优于 Aurora 的地方,有哪些具体的呢?(9 月 22 日,期待揭晓。)

更多关于精彩技术专题请关注 QCon 全球软件开发大会,QCon 上海站 9 折优惠报名最后一周,2017 年 09 月 17 日前,立减 680 元,团购报名更多优惠~点击【阅读原文】跟技术大咖零距离。欲购票或咨询问题可联系购票经理 Hanna ,电话:15110019061,微信:qcon-0410。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment