用一体化的设计思维,做一款能解决80%问题的数据库产品
本文首发微信公众号:飞总聊IT
2023年11月,在OceanBase的年度发布会上,OceanBase正式推出了4.2.1 LTS版本。这是OceanBase以一体化理念开发的OceanBase 4.x系列的第一个长期支持版本。这标志着一体化数据迈入了可规模化上线使用的长期支持阶段,具有重要里程碑。
4.2.1版本是面向OLTP核心场景的全功能里程碑版本,和3.2版本比起来,具有更强的OLTP和OLAP性能,和传统容灾比起来,提供了更具性价比的仲裁无损容灾方案,通过两个副本实现了RPO=0,是一次重大飞跃。
在数据库领域中,一直都有两种不同的产品观念。早期的商业数据库比如说IBM的DB2,Oracle,都相信,一个数据库可以解决80%的问题,一体化的思想在这些商业数据库的产品中根深蒂固。
但是另外一派人觉得,每个不同问题,都需要专门的数据库产品去解决,单个数据库产品,不需要面面俱到,一体化解决大部分的问题。
比如说图灵奖获得者Michael Stonebraker就曾经在VLDB上发表论文,指出数据库应该是每个不同的领域都有专门的数据库产品去解决,而不是一个数据库产品一体化的解决大部分问题。他也创业了一系列的公司,分别去解决OLTP,OLAP,流计算等不同的领域。
在大数据时代刚来临的时候,这种理念也在开源社区得到了广泛的支持,比如说,社区里面有很多产品,比如说受谷歌BigTable影响的HBase就是一个KV的数据库,MongoDB是文档数据库等等。社区里还专门出现了在不同数据库产品之间进行数据传输的message queue产品,比如Kafka。
而这带给用户的实际体验并不好,用户需要维护很多不同的数据库产品,然后还要在不同数据产品之间进行数据同步,长期使用和维护成本都非常的高。
OceanBase的CTO杨传辉表示,在他2010年加入OceanBase做分布式数据库产品的时候,就开始用一体化的思路来打造OceanBase。
当时开源的数据库产品很多,比如MySQL。MySQL作为数据库有两个问题:第一是只能处理简单的查询,却无法处理复杂的查询,第二是只能处理小量的数据,却很难处理大量数据。所以OceanBase这个产品从一开始,就遵循了一体化的思路,既要能够处理简单查询,也要能够处理复杂查询,既要能够处理小数据量,也要能够处理大数据量。
按照杨传辉的说法,一体化的设计思路简单来说分为三个层次。第一个层次是产品的架构,也就是搭地基。就像建房子一样,需要先有地基。而OceanBase的单机分布式一体化架构,就是这个地基。这个地基解决的是数据规模问题,数据可大可小。
具体到OceanBase4.0,它通过单机分布式一体化架构,实现了数据规模可大可小,既能用到大企业,也能用到中小企业,创业公司。OceanBase的单机分布式一体化架构还支持平滑伸缩。
有了这个架构以后,不管多大多小数据量都可以用一套系统全部统一解决。我们也就可以在这个架构上搭建一体化的引擎。一体化的引擎包括一体化的存储引擎,一体化的事务,一体化的SQL引擎,还有云上云下的存储与计算分离的引擎。这个层次就解决了数据的存储和计算的问题。
OceanBase就通过一体化的存储引擎,实现了HTAP的支持。OceanBase也通过一体化的SQL引擎设计,同时支持简单查询和复杂查询。简单查询比较好的实现方式是串行执行,复杂查询则更适合于并行执行。OceanBase的一体化SQL引擎可以做到简单查询拉数据串行执行,复杂查询推执行计划并行执行,融入到了一套系统里。
有了一体化引擎以后,就可以在这个基础上,进一步搭建出最终的一体化产品。这个产品是最终交付给用户提供服务的,所以需要解决用户的各种问题,包括如何支持不同的工作负载,如何实现不同的数据模型,如何提供不同的数据接口,如何去提供多种不同数据库的兼容模式等等。
OceanBase可以做到一体化的SQL功能,让分布式数据库和单机数据库的SQL功能完全对标。某些SQL功能比如说,大事务,或者锁表,是很难在分布式架构下实现的。OceanBase通过单机分布式一体化架构,通过其中的动态日志流的技术,最终实现了这些功能。
在一体化产品的设计理念下,OceanBase也实现了多模融合。OceanBase不仅仅在一个产品里面支持不同的模型,还支持多个模型之间的互操作。比如说OceanBase可以让用户以HBase,JSON兼容的方式写入数据,通过SQL来读取。
在一体化的设计理念下,OceanBase最新发布的4.2.1 LTS版本带来了很多核心能力的升级。
具体来说,第一是产品一体化的能力,包括混合负载和多模能力,支持Auto DOP自动设置并行度SPM,支持KV,支持Json,LOB的上限也提升到512MB。
第二支持一体化的SQL和事务的能力,实现任意大小的事务无限制,并且实现全功能的DDL。
第三实现了更好的高可用的能力,既能支持与传统的集中式数据库完全对标的组备库的方式,也实现了通过仲裁的方式,以接近两个副本的成本实现RPO等于0。
在性能方面,相比3.2 LTS版本,OceanBase 4.2.1 LTS版本的TP性能是3.2版本的1.9倍,AP性能是3.2版本的2.7倍,导入性是3.2版本的6倍,在兼容性方面,OceanBase 4.2.1 LTS版本进一步增强了MySQL 8.0的兼容,并且提升了Oracle的兼容性,支持DBLink、表锁等Oracle常见的特性。OceanBase也可以通过兼容MySQL Binlog的方式直接接入到下游数据生态。
OceanBase的OLAP也在快速提升。在最新的实验室版本里,OceanBase已经可以做到和业界一流的产品ClickHouse在大宽表场景下同一水平。这个实验室版本将也会出现在2024年4月份的OceanBase 4.3中。
伴随着互联网的兴起,以及数字化,信息化发展浪潮,由此带来的海量数据高并发问题层出不穷。当前很多业务需要多种数据库的场景也越来越多。
如果每种数据都需要特定的数据去解决,客户就需要文档数据库,时空数据库,关系型数据库,数据仓库等一系列的产品,还需要在不同数据库产品之间同步数据,这显然是很困难的。
一体化的数据库产品,可以用一个数据库,解决用户大部分的问题,极大地方便了用户的实际使用,这是一种发展趋势。
OceanBase的CTO杨传辉表示,他本人已经从事数据库基础设施研发很多年,今天我们在提一体化的产品,只要是一个基础设施,有两件事情是永恒不变的:更快的性能,更低的成本。
飞总觉得,对于一体化的数据库产品来说,还有一点也同样重要,那就是更好用的产品。而一体化的数据库产品,正是可以帮助用户化繁为简,让用户觉得更好用的产品。
微信扫码关注该文公众号作者