国产数据 OceanBase、PolarDB 介绍

时光怂恿深爱的人放手 提交于 2020-02-23 04:00:52

马云说“阿里的商业平台做得太好 技术实力才会被忽略”   。

我推荐的这两个数据库就是阿里的自研的。那么这两个数据的成绩怎么样,贴图给大家看看权威的测试

 

 

OceanBase是一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务,由淘宝核心系统研发、运维、DBA、广告、应用研发等部门共同完成。在设计和实现OceanBase的时候暂时摒弃了不紧急的DBMS的功能,例如临时表,视图(view),研发团队把有限的资源集中到关键点上,当前 OceanBase主要解决数据更新一致性、高性能的跨表读事务、范围查询、join、数据全量及增量dump、批量数据导入
 

为什么OceanBase是海量数据库?

OceanBase数据库是由阿里巴巴集团和蚂蚁金服集团自主研发的一款产品,其目标就是支持海量的数据的存储和计算。

和传统的数据库相比,OceanBase所具备的可靠性、稳定性和性能对硬件设备的依赖并不大。尤其是高可用性,OceanBase不依赖底层的硬件是无故障的。从设计之初,OceanBase的开发团队就假设底层的硬件是不靠谱的。OceanBase就是要用普通的硬件产品打造出更好的数据库服务。

2015年双11创造了每秒8.59万笔的交易支付,这是由OceanBase数据库支撑达成的,最关键的是,其达到数据0丢失的目标,也就是说完全保证了数据的一致性。OceanBase的完美表现也证明了,在普通的硬件平台之上,也可以打造出高可用的数据库服务。

为什么OceanBase是海量数据库?因为,目前在OceanBase的表单容量最大已经超过3000亿行,而且数据量还在不断增长。另外,OceanBase数据库还具备水平扩展能力,并且可以在线升级。迄今为止,在蚂蚁的核心业务上,OceanBase是零故障,表现比之前的系统好很多。

目前,OceanBase数据库处于不断发展的阶段,系统也在不断升级,不断演进。单个集群的规模已经超过100台服务器,就事务处理能力来看,单节点具备处理能力已经高达25万个TPS。

总结来说,OceanBase是全球第一个不依赖共享存储的金融级数据库。

OceanBase的技术原理及实现

OceanBase从开始就从设计理念上与传统数据库不同。技术团队认为,数据本身是有热度的,因此每天进行修改,但相对整体数据量来说都不多。为了设计更简单,OceanBase从架构上就做了简化。开发人员将数据分为两个部分,第一个部分是静态数据,持续化存储在SSD盘上;另外一个部分则是修改增量,比如新插入的订单数据,更新之后的账户数据等,都存放在内存里面。传统的数据库所有的修改都是发生在本地的,OceanBase把修改增量放到内存,其好处在于,使用很少的内存就可以支撑更大的业务。

世上没有完美的架构,OceanBase的这种方式会增多一些内部操作,产生一些消耗。不过,在技术团队的反复测试验证下,这一架构不仅能够保证系统的性能,而且拥有更强的扩展性。

以上就是OceanBase的整体设计思路。

现在,最新的OceanBase 1.0版实现了每一个节点都可以做查询、更新,处于一个完全对等的状态。这样的设计是为了增强系统的水平扩展能力。而在高可用方面,OceanBase的数据通常是至少拥有3个副本,并处于不同的机房。

OceanBase最大的集群规模数已经达到了上百个节点,支撑的是在线交易型的数据,一套集群可以服务很多个业务。甚至在上了公有云服务之后,可以支撑成百上千个租户。为此,开发人员将租户机制放进了数据库集群里面,这样的好处显而易见,那就是成本得到极大的降低。

在线交易中,每一笔交易都是非常少量数据的更新或者查询操作。但是要查大量数据,比如用户的详单、历史数据状态时,如果资源调度能力不强,那将是非常危险的。OceanBase可以在租户级别将资源的使用控制在安全的水位,从而避免了如双11中出现大查询而导致网络堵塞的情况。

对于OceanBase数据库来说,水平扩展其实是非常简单的。比如要增加一个节点,新购置一台服务器,剩下的数据库自己就能够解决,包括数据重新的分布等。

节点故障,硬件损坏,系统升级等,这些情况非常常见,如何做到持续可用呢?OceanBase提供了一种服务,在中间设置了一层OBProxy,主要是表分区信息、位置信息等。当要做某一个查询的时候,根据查询条件会自动化地将请求分发到OceanBase集群的特定节点上,这样就保证了路由是最短的,因此获得的性能也是最好的。

OceanBase与传统的数据库不一样,从诞生开始就没有准备采用磁盘,而是在SSD上,包括读写分离、批量回刷都基于此。另外,OceanBase还充分利用内存计算的能力来提升性能。当然,数据不可能一直放在内存,为此,技术团队设计了一些特别的机制,比如把内存里的数据回写到SSD,而且都是在系统运行低谷期进行这样的操作。

如果性能不提升,即便是扩展性非常好,也没有价值,因为那只意味成本的不断增加。为此,技术团队针对内存做了大量的性能优化工作。比如通常的应用场景有两种,一种是获取单条的记录,另一种是获取一批记录。OceanBase在内存里面维持两套索引,一个是Hash索引,一个是Btree索引,分别对应处理这两种不同的请求。同时,内存数据结构都是设计成无锁的,所以扩展性非常好。

这里对比一下MySQL。大家都认为MySQL的性能很好,路径很简单,但是测试数据显示,其单核的TPS能够达到1万,但是32核几乎难以做到10万的TPS。OceanBase的单核TPS是8000或16000,而10核的TPS则达到8万或16万,正因为如此,即便是跑在普通的服务器上,OceanBase也不会产生并发瓶颈。

OceanBase的发展

OceanBase现在支撑了支付宝的所有核心业务,如支付、交易、账务、花呗等,还有网商银行以及淘宝的很多交易业务也都基于OceanBase。

在OceanBase研发之初,技术团队在存储方面做了较多的工作,所以SQL能力不是特别强,因此也制约了一些拓展业务的能力。但近年来,技术团队投入很大的精力提升OceanBase的SQL能力,兼容并超越MySQL,甚至逐步具备Oracle的核心能力。这样,未来业务的迁移会变得平滑顺畅,且不需做改动。

OceanBase项目始于2010年。

在2011年开始做第一个业务,OceanBase还是一个KV系统。

2012年,OceanBase开始做SQL支持,也明确了其目的——为了支持更高要求的金融级的业务需求。

2014年,OceanBase发布了非常重要的0.5版本,通过架构的一些改进,已经可以做到持续可用且数据0丢失。在这一年,OceanBase也首次支撑了支付宝的核心业务,2014年双11,支付宝交易有一部分流量是跑在OceanBase上的。

2015年3月,支付宝所有的交易都切换到了OceanBase上,真正意义上彻底和Oracle说再见。

而很快,OceanBase就可以提供云数据库服务。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!