暂无图片

一、分布式数据库出现的背景

数据库系统有确定的功能集吗?数据库系统有明确的边界吗?如果有人问这两个问题,答案都是否定的。数据库管理系统是一种非常复杂的软件系统,它的形态和边界是不停变化的,在适应持续迭代的硬件环境和不断变化的用户需求的过程中,数据库系统也不停地变化着自己。

回顾历史上成功的系统,数据库系统的功能总是在竞争中发展、完善,成为更好的支撑业务的底座。Oracle公司的Oracle数据库系统真正对外是1979年,发轫之始,Oracle就面对Ingres的竞争。两家公司在哪种语言才能最好的代表关系数据库而拼命发展自己的路线。如果说图灵奖获得者E.F.Codd的关系代数是灯塔,那么数据库公司里的软件工程师们就是与惊涛骇浪搏斗的水手们,是在这些勇士的手中,SQL功能被不断的丰富,SQL的执行性能被不断的提升,终于成为支撑了半个世纪数据技术发展的主流解决方案。

Oracle公司经历的激烈竞争还有很多,有些竞争不仅差点击跨Oracle,而且改变了Oracle系统,也改变了整个业界对于关系数据库系统的认知。Sybase系统经过2年的低调研发,从1987年开始进入市场,以更强的OLTP处理能力横扫客户。Oracle面对Sybase的竞争,也持续不断的优化OLTP场景的性能,并且积极发展了Client/Server的运行能力。在此之前,应用程序要和数据库系统运行在同一台机器上,这种“集中式”的使用方式被认为是更高效的,经这一役,关系数据库处理OLTP的性能获得了极大提升,Client/Server的“分布式”运行方式获得了市场的认可,成为了业界主流。

互联网兴起发展的这些年里,分布式技术得到了极大的拓展和实践。硬件环境摆脱了对于专用高端硬件的依赖,越来越多的刀片服务器成为了新主流。将分布式技术应用在数据库系统内核中,是新的分布式数据库系统的目标。基于分布式技术的数据库系统,具有功能、拓展性等多方面的优势,数据库的存储和计算能力不再受单一服务器的限制。基于分布式的技术,在数据库内部能够维持副本之间更好的一致性,进而提供更好的数据库服务的连续性。基于多台服务器的集群,数据库也能利用更多的硬件资源提供更强大的数据分析能力。

在分布式数据库发展的第一阶段,新的系统为了突出分布式的优势,研发精力自然的放在高可用、扩展性等分布式数据库特有的功能上,而这类功能也充满了技术上的挑战,需要研发团队跨过从理论到技术再到产品的多种难关。这时候的分布式数据库,有其架构带来的独特优势,但是在功能的全面性上有所欠缺,使用者可能只会把分布式数据库定位成传统数据库的补充。

随着分布式数据库的持续迭代,在继续加强扩展性和高可用等优势功能的同时,从市场的实际需求出发,解决了很多数据库使用者原本关心的功能、性能等特性问题,作为分布式数据库代表的OceanBase,已经步入成熟阶段,成为全场景的数据库系统解决方案,可以更方便地让不同的应用集成分布式数据库。

二、成熟分布式数据库的标志

分布式数据库系统成熟有两个重要的标志:功能完备,运行效率优秀。下面分别从这两个方面详细聊一聊。

(1)功能完备

数据库系统是在实践中逐渐成长完善的软件系统,功能集是相当的庞大。数据存储、数据修改、数据查询、数据管理等不同方面,都有各种类型的业务诉求。

数据存储方面,以OceanBase为例,分布式数据库在已经拥有非常高效的存储压缩的基础上,在最新的迭代中也支持了更多的字符集。同时,对大对象的支持也是OceanBase一个很大的突破,同类的其他分布式数据库对大对象支持得都不够友好。应用开发中,虽然不是所有业务都会依赖大对象,但是总有一些业务场景比较依赖大对象功能。OceanBase现在可以提供对大对象功能的全面的支持。并且,在大对象功能的基础上,还支持了JSON、GIS等复杂数据类型,这类数据通常都会在一个元素中存储比较多的内容,如果没有大对象能力在底层做支撑,还真是不好用。

数据修改方面,OceanBase支持了任意大小的事务,在应用的数据导入、数据订正、数据维护等流程中,应用开发者或者数据库管理员不时会在一个事务中修改大量数据。这种使用方式,对于传统数据库来说不是难事,对于新的分布式数据库来说,因为事务模型发生了很大改变,支持大事务都是很大挑战。当OceanBase支持了任意大小事务后,使用者再也不用操心一个事务修改的数据量是否过大。OceanBase还全面支持了各种重整数据的DDL功能,比如修改主键、修改分区键、重新定义列类型等等。再结合OceanBase之前就支持在线的后建索引的能力,OceanBase已经具备了完善的对于数据维护操作的能力。对于新业务和变化很快的业务,Schema会随着业务发展不停的变化,有了重整数据的各种DDL的支持,用户就能很方便得使用OceanBase来承载这种经常变化的业务场景。

数据查询方面,OceanBase在语法上兼容MySQL和Oracle,支持了从大量琐碎的函数到存储过程等重量级功能。同时,OceanBase的查询优化器、执行器也都不断迭代,任何数据库的查询优化和改写能力都来自实践经验的不断积累,业界比较公认的Oracle的查询优化能力是很强的,目前的OceanBase的查询优化器已经达到了Oracle的同等水准。OceanBase的执行器的并行执行和向量化执行能力也已经是成熟和高效的引擎,可以很好的支持大数据量的查询,这是新兴的HTAP系统才具备的能力,OceanBase这方面的能力已经超过了传统的数据库系统。

数据管理方面,数据库系统里通常都存储了用户的关键业务数据,用户使用数据库系统不仅只是运行一个实例进行数据操作,还为了备份、安全、监管,进行各种数据管理操作。比如,定期备份所有的数据,或者在异地搭建一个从库等。对于数据库系统来说,备份数据和搭建从库都有物理和逻辑两种方式,物理备库和物理从库才拥有保证数据的一致性和应对所有业务场景的普适性。OceanBase是分布式数据库中最早支持了物理备份恢复和物理从库的系统,使用OceanBase可以让数据库管理员非常方便的完成各种数据管理的任务。

(2)运行效率优秀

数据库系统为什么要重视运行效率?数据库系统作为底层基础软件,其与生俱来的使命就是更好的利用硬件来完成数据库的各种功能。作为大规模部署的通用软件,软件自身的每一点运行效率的提升都能带来巨大的生产效率的提升和生产成本的下降,所以,所有的专业数据库系统都在不停的优化运行效率。

相比于其他分布式数据库,OceanBase的整体性能非常优秀。而且,OceanBase在单机部署时,与传统的单机数据库相比,OceanBase的性能也非常优秀。也许有人会有疑问,分布式数据库为什么要重视单机性能?性能优化的本质是尽可能发掘出硬件的极致,在一台服务器上的操作与跨机的操作走不同的硬件,天然有不同的特性,当然需要针对不同的特性进行优化。

换个角度看分布式系统。分布式系统是由网络连接的一组服务器上工作的系统。这里的网络指的是以太网。但很容易被忽视的事情是服务器内部也是由若干个网络有机结合的一个系统。CPU利用内存控制器把数据通过消息从内存中加载到CPU的Cache中。CPU利用IO控制器通过消息把数据从硬盘加载到内存中。CPU的核心之间通过消息交换访存的信息和Cache的信息。每一处都类似一个小网络不停地进行信息的交换。从运行效率角度看,以太网比机器内的网络具有很长的传输距离、更低的传输功耗,但是操作复杂、延迟大。当不同特性的硬件摆在数据库系统设计者的面前时,设计者一定要考虑怎么更好地利用不同层次的硬件能力,更加高效的实现数据库的特性。OceanBase的单机分布式一体化架构核心就是让OceanBase系统在一台机器上运行开销与传统单机数据库是类似的,同时让OceanBase还具备分布式的扩展能力,支持利用多台服务器进行数据存储和服务能力的扩展。

OceanBase的一体化架构的核心就是让系统以机器为单元组织数据库的管理结构,能在一台机器上通过本地操作和本地引用完成的事情就放在一台机器做,尽量减少跨机的操作与跨机的结构。通过在保证扩展性的同时,还能把一台服务器的硬件能力发挥到极致,OceanBase可以给到使用者从一台很小规格的机器到多台服务器组成的集群都能高效运行的数据库系统。

三、从一体化到一站式

基于分布式技术构建的数据库系统,其能力上限远大于传统的单机数据库系统。随着社会数字化进程的加速,市场对于数据库系统的需求也是越来越多。在一体化架构的加持下,OceanBase已经具备了传统单机数据库的主要功能,并且还拥有比传统单机数据库更优异的性能,有能力承载各种业务场景的对数据库系统的需求。

现在的数据库系统的功能集愈发丰富,从之前的仅仅解决某一种业务模型的需求,演变到集实时交易处理与在线分析查询能力于一体的综合系统。分布式数据库系统已经成长为能力强大的综合性系统,用户可以在一个系统内既承载业务的事实交易,又进行数据模型的转换,再进行挖掘数据价值的查询分析,让数据在一个系统内流转,一站式的解决用户从数据产生、到数据转换、再到数据消费的一系列操作,在带给业务便利性的同时,进一步降低数据处理的成本。

评论

请求更改
864
暂无图片
暂无图片
全屏