tianiao 发表于 2022-12-19 18:48:38

分布式关系型数据库OceanBase理论详解

OceanBase是阿里开发的分布式关系型数据库。它的目标是支持数百TB的数据和数十万TPS以及数百万次QPS访问。无论是数据量还是访问量,单个关系型数据库系统即使是非常昂贵的小型机甚至大型机也无法承受。
1.特征 1.1、高可扩展性 传统的关系型数据库,如Oracle或MySQL,功能完善,但数据库本身无法扩展。随着数据量的增加和业务内容的丰富,需要对数据库和表进行反汇编,然后将相应的SQL访问和路由到指定的数据库。数据库运维人员需要花费大量的时间对数据库进行扩展,包括读写分离、垂直拆分、水平拆分等等。 OceanBase使用分布式技术和无共享架构。来自业务的访问将自动分配给多个数据库主机。在相关技术的支持下,OceanBase还可以使用廉价的PC服务器作为其数据库主机。通过这两个变化,运维人员可以高高兴兴地通过增加服务器的数量来提高系统的容量和性能。 1.2、低成本 传统商业企业采用的“IOE”系统实际上代表了一种高成本、高维护、非高并发的商业数据库系统。尤其是随着数据越来越多,硬件升级和维护的成本会越来越惊人。阿里巴巴采用了数据分段的策略,将一些海量数据应用从集中式的Oracle切换到分布式集群,从纵向扩展到横向,解决了数据库的可扩展性问题,用PC服务器替代了小型机。 由此带来的一个重要变化就是成本的大幅降低。与传统数据库公司的产品相比,OceanBase的升级和维护不需要昂贵的共享存储、高可靠的服务器和数据库软件的许可费,可以将商用数据库的成本降低到一半以下。 1.3、高可靠性 数据库系统通常由数据库软件、运行数据库软件的数据库服务器硬件和存储数据库数据的数据库存储硬件(即共享存储)组成。数据库的稳定性和可靠性也取决于这三个部分。使用PC服务器可以带来高可扩展性,降低成本,但其硬件的可靠性相应降低。 如何保证系统的可靠性? OceanBase的一个基本假设是硬件(服务器、存储、网络等。)不靠谱。因此,OceanBase必须确保少量硬件(服务器、存储、网络等。)任何时候发生的异常都不会影响业务。 为此,OceanBase推出了Paxos协议。每一个事务,在主库执行之后,都必须同步到一半以上的库(包括主库本身),比如三个库中的两个或者五个库中的三个,事务才算成功。这样在少数库(比如3个中的1个库或者5个中的2个库)出现异常后,业务不会受到影响。
通过灰度升级,OceanBase避免了传统数据库的升级,大大降低了数据库维护和升级的风险。 1.4、数据准确性 许多互联网服务可以允许一定的数据错误,但电子商务(如交易、金融领域等。)不同于一般的互联网公司,对数据的一致性要求非常高。比如要保证钱的流入流出匹配,不能丢失任何支付数据(阿里巴巴用OceanBase做支付宝系统)。 OceanBase的设计不同于经典的关系数据库,读事务基本上是分布式并发执行的,而写事务目前是集中式串行的,也就是可序列化的,任何写事务在提交前对其他读写事务都是不可见的,所以OceanBase是强一致的。这样,在设计方案中就可以保证没有数据丢失。 几种常见的一致性类型是: 最终一致性:是一种弱一致性,即某个数据更新后,如果没有再次更新该数据,所有的读操作最终都会返回更新后的值。(如果一级库和二级库的数据同步存在时间差,一旦主机出现异常,恢复无法实时进行,也可能存在数据一致性问题。) 当事务的重做日志与三个更新服务器中的一半以上(即至少两个,包括主更新服务器本身)同步时,事务成功,客户得到答复。由于集群中只有一个主UpdateServer提供写服务,OceanBase也很容易实现跨行、跨表交易。 如果三个更新服务器中有一个失败:*主更新服务器失败:剩下的两个更新服务器将自动选举一个新的主更新服务器(参见后面的“在OceanBase中实现分布式选举”)。由于旧的主更新服务器数据存在于至少一个活动的更新服务器中,因此不会有数据丢失。经过短时间(通常为毫秒级)的相互同步后,两个活的UpdateServer可以继续对外提供服务,从而保证了数据的一致性和服务的高可用性。*单备用UpdateServer故障:主用UpdateServer拥有全部数据,剩余两个UpdateServer仍然过半,数据一致性和服务完全不受影响。 1.5、高性能
为什么要这么做?现在的存储,无论是磁盘还是SSD,顺序写入的性能都比随机写入好很多。现在SSD稍微好一点,随机写入可以相对高一些,但无论如何,和顺序写入等硬件属性在性能上有一个数量级的差别。OceanBase使用磁盘存储数据库,但是使用内存数据库和SSD(普通磁盘最怕随机读取,但是SSD非常适合)存储修改后的数据。它还消除了随机磁盘写入和批量写入。实现扬长避短,将硬件的特性发挥到极致。
页: [1]
查看完整版本: 分布式关系型数据库OceanBase理论详解