作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Pro: Database(Oracle与MySQL)
PostgreSQL ACE Partner
10年数据库行业经验,现主要从事数据库服务工作
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP、年度墨力之星,ITPUB认证专家、专家百人团成员,数盟会长老会成员,OCM讲师,PolarDB开源社区技术顾问,HaloDB外聘技术顾问,OceanBase观察团成员,青学会MOP技术社区(青年数据库学习互助会)技术顾问
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著 名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭

本文参考内容: https://www.vldb.org/pvldb/vol16/p3728-xu.pdf
《OceanBase Paetica: A Hybrid Shared-nothing/Shared-everything Database for Supporting Single Machine and Distributed Cluster》
OceanBase在其4.0版本中引入了单机分布式一体化架构,OceanBase 4.0有个中文名叫“小鱼”,从OceanBase提交至VLDB的论文中,其还有一个英文名:Paetica,对应论文的全名为“一个支持单机与分布式集群的混合Shard-nothing/Shared-everything数据库”。
在OceanBase 4.0之前的版本中,因为数据库原生分布式的设计,简单来说就是,部署一个OceanBase数据库需要多台服务器(或容器或虚拟机,其本身的设计目的也是为了承载大数据量和较高负载的业务系统。这就使得中小体量、压力的业务不适合使用OceanBase或使用成本较高,这限制了OceanBase在全场景的扩展。
OceanBase 4.0引入单机分布式一体化架构之后,OceanBase不再需要大规模的服务器为基础,仅需一台服务器也可运行,为中小型系统数据库提供良好的支持。源于统一底层架构设计,单机部署可以根据数据量与负载的变化横向扩展至分布式架构。

在OceanBase 0.5中,OceanBase架构被分为两层,即存储和计算层。上层为无状态的提供SQL服务的服务层,下层则是由块服务器(ChunkServer)和更新服务器(UpdateServer)两种服务器构成的存储集群。其中块服务器具有可以自动分区和水平可扩展存储能力的特点;而更新服务器则是利用Paxos协议来确保一致性和可用性。然而更新服务器不具备处理分布式事务的能力。这种架构有可确定的扩展性,相对较强的读能力。但由于更新节点是一个单点写入多点读取的架构,当需要更高级别并发性能时很难进行扩展。此外,存储与SQL分层会待料较高的查询延迟,网络抖动的难以控制带来了整体延迟控制的挑战。
在OceanBase 1.0-3.0中已经放弃了之前的架构,转变为完全的点对点(P2P)架构,每个OBServer都包含SQL、存储与事务引擎,所有节点在同时存储数据外还可以处理SQL与事务操作。如下图,垂直方向表示分布的和可伸缩的层,而水平方向表示复制层。水平方向提供了可用性,而垂直方向可以通过增加机器来提升性能。这样的架构具有卓越的扩展性。这里采用了一系列优化方案来降低延迟:在独立模式下,本地执行计划、本地事务API和消除读写操作中的网络开销是确保低延迟的关键特性;在分布式模式下,使用复制表、并行执行引擎和多个分区索引是确保低延迟性能的关键因素。
OceanBase 4.0的架构如下图所示,并带来了以下功能:

对于中小型企业,OceanBase 4.0架构的核心变化是引入动态日志流。最初,我们将事务扩展和存储扩展的粒度等同在一起。但是,如果存储被划分为多个分片,那么事务处理和高可用性能力也是基于这些分片的。我们已经在OceanBase 4.0中解耦了这两个概念,因此几个存储分片将共享一个事务日志流和与此日志流相对应的高可用性 服务。
如下图,传统的分布式事务处理过程是被分为事务的开始阶段和提交阶段;而再下一张图则是OceanBase的事务处理过程。前者尝试减少2PC和同步复制的开销。OceanBase事务提交协议为参与者和协调器提出了一种新的方法,称为两阶段提交协议。
与传统2PC相比,OceanBase的2PC从事务提交到成功提交时的消息处理和日志量明显少于传统的2PC,这使得它在延迟方面具有很大的优势。这一优势还将支持OceanBase在分布式场景中的事务处理能力,而不像其他分布式数据库那样承担了巨大的开销。访问GTS有两种方案:1)语句快照获取;2)获取事务提交版本号。对于独立的事务,1)不需要访问GTS,它已经在OceanBase 4.0中进行了优化;2)交易提交版本号将获得GTS,以满足外部一致性,但该获取只是一个接口调用,并不会实际发送RPC,因此效率相对较高。
本期通过OceanBase在VLDB中论文的部分内容进行解读,简单介绍了OB 4.0的一些创新性特性。
老规矩,知道写了些啥。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31466763/viewspace-3050292/ ,如需转载,请注明出处,否则将追究法律责任。