新发布的自研数据库 OceanBase 有哪些看点?

2020 年 3 月 27 日 阿里技术

阿里妹导读:2020 年 3 月,自研分布式关系数据库  OceanBase 在公有云上正式对外开放。本文将通过相关技术解读带你全面 了解 OceanBase 的架构及优势。

一、公共云 OceanBase 服务端部署

自研分布式关系数据库 OceanBase 是一款纯原生的分布式关系数据库,在代码层面完全可控。公共云 OceanBase 产品(图 1-1)是基于三份副本 3AZ 部署,通过 paxos 协议保证了多节点间的数据一致性,单点故障甚至单 AZ 故障,也可以保障业务连续性,RPO = 0,RTO < 30s,做到机房级高可用,未来还将推出三地五中心的产品形态,具备城市级高可用切换能力。同时,OceanBase 的资源管理具有非常高的灵活性。它支持多租户部署,在 OceanBase 集群里面,我们可以按需分配实例,并且可以进行在线资源扩容或者缩容。

从安全性和可用性来讲,OceanBase 是非常适合金融业务场景的。因为监管需求,金融业务场景(像银行业务等)不能上公有云。但是这并不影响类金融业务,像保险、基金等。

图 1-1

二、OceanBase 架构原理

与大多数分布式系统不同的地方在于,OceanBase 这个系统没有单独的总控服务器或者总控进程。分布式系统一般包含一个单独的总控进程,用来做全局管理、负载均衡,等等。OceanBase 没有单独的总控进程,它的总控是一个服务,叫做 RootService,集成在 ObServer 里面。OceanBase 会从所有的工作机中动态地选出一台 ObServer 执行总控服务,另外,当总控服务所在的 ObServer 出现故障时,系统会自动选举一台新的 ObServer 提供总控服务。这种方式的好处在于简化部署,虽然实现很复杂,但是大大降低了使用成本。

OceanBase 通过分区能力做到无限水平扩展(图 1-2)。OceanBase 跟传统数据库分区不一样的地方,在于传统数据库所有的分区只能在一台服务器,而 OceanBase 每个分区可以分布到不同的服务器,每个分区都有三副本。从数据模型的角度看,OceanBase 可以被认为是传统的数据库分区表在多机的实现。它可以把不同的用户生成的数据全部融合到统一的表里面。无论这些分区在多台服务器上是如何分布的,整个系统对用户呈现的都是一张表,后台实现对用户完全透明。OceanBase 在用户入口使用了 OBProxy,它是一个访问代理,它会根据用户请求的数据将请求转发到合适的服务器。OBProxy 的最大的亮点在于性能突出,它可以在非常一般的普通服务器上达到每秒百万级的处理能力。

图 1-2

如图 1-2,多个分区分布在多台服务器上。由于多个分区跨 ObServer,内部通过两阶段提交实现分布式事务。当然,两阶段提交协议性能较差,OceanBase 内部做了很多优化。它提出了分区组的概念,会把多个经常一起访问,或者说访问模式比较类似的不同表的分区放到一个分区组里面。OB 后台会将同一个分区组尽可能调度到一台服务器上,避免分布式事务。同时优化了两阶段提交协议的内部实现。两阶段提交协议涉及多台服务器,协议中包含协调者、参与者这两种角色,参与者维护了每台服务器的局部状态,协调者维护了分布式事务的全局状态。常见的做法是对协调者记日志来持久化分布式事务的全局状态,而 OceanBase 的做法是,如果出现故障,通过查询所有参与者的状态来恢复分布式事务。这种方式节省了协调者日志,而且只要所有的参与者都预提交成功,整个事务就成功了,不需要等协调者写日志就可以应答客户端。

三、OceanBase 存储架构

OceanBase 是一个 shared noting 的架构,每一个 OBServer 都有独立的存储引擎,将数据保存在本地,这样可以满足容灾场景下的数据连续服务。OceanBase 采用 LSM-Tree 的架构来设计 Cache 和数据存储,数据首先被写入内存中的 MemTable 当中,这样最高频和最活跃的数据都在内存访问,极大的提升了热数据的访问效率。当MemTable 的写入到达一个阈值的时候,MemTable 中的数据会做一次合并,将数据转到磁盘的 SSTable 中。在很多基于 LSM Tree 的存储系统中,为了解决写入的性能问题,通常会将 SSTable 分为多层,当一层的 SSTable 个数或者大小达到某个阈值时,合并入下一层 SSTable。

图 1-3

在 OceanBase 内部,也会有很多种不同类型的 Cache,有类似于 Oracle 和 MySQL 的 buffer。Cache 用于缓存 sstable 数据的块缓存,还有用于缓存数据行的行缓存、日志缓存、位置缓存等等。基线数据缓存到内存中提升查询性能。对于不同租户,每个租户都有自己独立的缓存,可以配置对应租户内存使用的上下限,做到租户隔离或者抢占超卖,适用于不同需求的场景。

在存储成本上,OceanBase 采用了多种数据压缩算法,例如 lz4、zstd 等。OceanBase 会对数据集做两层瘦身,第一层是 encoding,会使用字典、RLE等算法对数据做瘦身,第二层是通用压缩,使用 lz4 等压缩算法对 encoding 之后的数据再做一次瘦身。在 zstd 算法下,相较传统 MySQL Innodb 的压缩,可以做到相同数据集只是用 MySQL 的 1/3 的存储,帮助用户极大的节省存储成本。更重要的是,传统数据库定长页的设计压缩不可避免的会造成存储的空洞,压缩效率会受影响,而 OB 这样的 LSM-tree 架构的存储系统,压缩对数据写入性能是 0 影响的。

四、OceanBase SQL 引擎

OceanBase 的租户支持 Oracle 和 MySQL 两种 SQL 兼容性,首先相较于传统 MySQL,OB 除了硬解析以外,与 Oracle 一样支持软解析,同时解析器还支持 SQL 参数化以及绑定变量,如图 1-4 所示,解析器将解析后的 SQL 模板以及执行计划放在 plan cache 中,已经存在 plan cache 中的 SQL 就可以省去每一次硬解析带来的开销,提升了 SQL 运行效率。

图 1-4

基于 LSM-Tree 的存储架构,OB 设计了一套独特的代价模型,引入统计信息,拥有了基于代码模型的优化器,这意味着 OB 可以根据统计信息,计算每条 SQL 的最优访问路径,给出最优的执行计划。同时 OB 也可以根据用户的需求,在线动态绑定固化执行计划,针对应急、效率的场景可以很好的提供便捷性。在执行器方面,OB 不仅仅支持Nest Loop 的 Join 方式,同时也支持了 Hash Join、Merge Join,针对大表 Join 提高效率。还支持并发执行、分布式 SQL 等等。

五、OceanBase 的 AACID 特性

OceanBase 是一个分布式的关系型数据库,符合 ACID 原则。在传统 ACID 的基础上,OceanBase 特别强调多了一个 A,可用性。基于 Paxos 协议的多副本日志复制,可以在单点故障的情况下提供无数据丢失的业务连续性。在一致性上,OB 采用 MVCC 的多版本一致读,当数据块被更新时,OB 会新开启一个数据块并带上数据版本于事务 id,只有事务内的 SQL 可以访问到,未提交的数据不会被其他会话访问当。隔离性上,OB 支持 Oracle 的提交读和串行化两种事务隔离级别,对 Oracle 做到了很好的兼容。在持久性上,和大多数传统数据库一样的日志先行,事务提交的时候先保证 redo 日志的写成功后才写数据,出现异常情况时不会存在数据二义性。

在数据安全上,OB 也做了多种保护措施,最大程度的保障数据安全。比如回收站机制,在租户级别设置回收站的开关,当回收站打开的状态下,drop table、truncate 的情况下数据不会被立马删除,而是进入了回收站,在回收站保留有效期内,都可以通过 flashback 的命令将表恢复原状,极大程度上避免了误操作带来的一些风险。

针对 delete、update 这种数据修改类的操作,OB 支持基于位点的 Flashback Query 来将数据恢复到某一个时间点,这样针对业务或者运维过程中的错误 SQL 执行,具备数据找回能力。同时在 Oracle 租户下,还支持 as of timestam/scn 这种查询。

2019 年 10 月,OceanBase 斩获 TPC-C 性能测试榜首。创造了 tpmc6088 万的世界记录,是前任榜首 Oracle 的 2 倍。同年十一月份,在支付宝的双十一大促中又创造了 6100 万笔/秒的支付峰值,再次打破世界记录。经过多次极端业务的考验,OceanBase 证明,在性能、可靠性、可用性上,分布式数据库是可以和集中式数据库媲美的。传统的商业数据库,如 Oracle、SQL Server、DB2 都依赖高端的硬件设备(小机,存储,还有光纤网络),但是 OceanBase 只需要普通的 PC 服务器,SSD 盘、万兆网络就行。而且它还具有高存储压缩率。OceanBase 上云后,目前除了数据库本身是按规格收费、迁移服务按小时收费外,其它管理平台(OCP、ODC、OTA)是免费的。通过OCP 可以方便地管理集群、租户、数据库。用户,监控租户和节点的性能。通过 ODC 可以方便地管理和维护数据库对象(表/视图/函数/存储过程等)。使用其 SQLConsole可以便捷地操作数据库。通过 OTA,可以及时发现当前业务库存在问题的 SQL,提供优化建议,绑定执行计划。使用这些平台可以使运维操作白屏化,降低了运维难度。

未来,OceanBase 将会根据用户需求提供更多实用、高效的特性,同时周边生态产品的功能也会越来越完善,敬请期待。

识别下方二维码,或点击文末“阅读原文”,收看  OceanBase  发布会 视频:



你可能还喜欢
点击下方图片即可阅读

一分钟搭建会话机器人,阿里是怎么做到的?


AI训练数据不够用?支付宝3D合成方案揭秘



关注「阿里技术」
把握前沿技术脉搏



戳我,看发布会回放。
登录查看更多
0

相关内容

OceanBase是一款蚂蚁金服和阿里巴巴自研的分布式关系型数据库
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
56+阅读 · 2020年6月26日
Python分布式计算,171页pdf,Distributed Computing with Python
专知会员服务
105+阅读 · 2020年5月3日
德勤:2020技术趋势报告,120页pdf
专知会员服务
187+阅读 · 2020年3月31日
【2020新书】Kafka实战:Kafka in Action,209页pdf
专知会员服务
65+阅读 · 2020年3月9日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
阿里巴巴达摩院发布「2020十大科技趋势」
专知会员服务
105+阅读 · 2020年1月2日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
94+阅读 · 2019年12月4日
工行基于MySQL构建分布式架构的转型之路
炼数成金订阅号
15+阅读 · 2019年5月16日
数据库之架构:主备+分库?主从+读写分离?
架构文摘
8+阅读 · 2019年4月23日
亿级订单数据的访问与存储,怎么实现与优化?
码农翻身
16+阅读 · 2019年4月17日
Kong 1.1 带来声明式配置与无数据库部署模式
开源中国
8+阅读 · 2019年3月28日
阿里云发布机器学习平台PAI v3.0
雷锋网
12+阅读 · 2019年3月22日
蚂蚁金服微服务实践(附演讲PPT)
开源中国
17+阅读 · 2018年12月21日
干货 | 双11总峰值超8亿OPS 阿里分布式NoSQL如何岿然不动稳如山?
阿里巴巴数据库技术
10+阅读 · 2018年12月12日
【智能商务】海量商品查找利器—苏宁搜索系统
产业智能官
5+阅读 · 2017年12月1日
开源巨献:阿里巴巴最热门29款开源项目
算法与数据结构
5+阅读 · 2017年7月14日
Arxiv
15+阅读 · 2019年3月16日
Music Transformer
Arxiv
5+阅读 · 2018年12月12日
Next Item Recommendation with Self-Attention
Arxiv
5+阅读 · 2018年8月25日
Arxiv
5+阅读 · 2018年5月1日
VIP会员
相关VIP内容
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
56+阅读 · 2020年6月26日
Python分布式计算,171页pdf,Distributed Computing with Python
专知会员服务
105+阅读 · 2020年5月3日
德勤:2020技术趋势报告,120页pdf
专知会员服务
187+阅读 · 2020年3月31日
【2020新书】Kafka实战:Kafka in Action,209页pdf
专知会员服务
65+阅读 · 2020年3月9日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
阿里巴巴达摩院发布「2020十大科技趋势」
专知会员服务
105+阅读 · 2020年1月2日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
94+阅读 · 2019年12月4日
相关资讯
工行基于MySQL构建分布式架构的转型之路
炼数成金订阅号
15+阅读 · 2019年5月16日
数据库之架构:主备+分库?主从+读写分离?
架构文摘
8+阅读 · 2019年4月23日
亿级订单数据的访问与存储,怎么实现与优化?
码农翻身
16+阅读 · 2019年4月17日
Kong 1.1 带来声明式配置与无数据库部署模式
开源中国
8+阅读 · 2019年3月28日
阿里云发布机器学习平台PAI v3.0
雷锋网
12+阅读 · 2019年3月22日
蚂蚁金服微服务实践(附演讲PPT)
开源中国
17+阅读 · 2018年12月21日
干货 | 双11总峰值超8亿OPS 阿里分布式NoSQL如何岿然不动稳如山?
阿里巴巴数据库技术
10+阅读 · 2018年12月12日
【智能商务】海量商品查找利器—苏宁搜索系统
产业智能官
5+阅读 · 2017年12月1日
开源巨献:阿里巴巴最热门29款开源项目
算法与数据结构
5+阅读 · 2017年7月14日
Top
微信扫码咨询专知VIP会员