当前位置: 代码迷 >> 综合 >> 深入浅出事务的本质,附 OceanBase 事务解析14问
  详细解决方案

深入浅出事务的本质,附 OceanBase 事务解析14问

热度:31   发布时间:2024-01-17 11:31:21.0

作者:颜然,蚂蚁集团资深技术专家

 

OceanBase 初创成员之一,OceanBase 分布式数据库事务研发负责人,目前负责事务引擎、高可用架构、负载均衡、性能优化等方面的工作。

事务的前世

每个人的手机和电脑中几乎不会安装一款叫“数据库”的应用,但是几乎每一款 App 内部都会使用一个叫“数据库”的更底层的系统来存储数据。每个人日常生活中都会订票、购物、付款,但也许还没有意识到这些操作的背后都是由“数据库”系统来支撑。那么究竟什么是“数据库”?“数据库”和“事务”又有什么关系呢?

计算机系统在其发展的历程中经历了多次重要的事件,而上个世纪 60 年代迎来一次重大变革,为计算机系统带来了巨变,自那之后,计算机就开始以数字化的方式重塑整个世界的进程。这次变革就是“磁盘”的大规模使用。在磁盘之前,计算机使用“磁带”来存储数据。计算机使用的磁带,和听歌使用的磁带,或者看电影用的录像带,本质是一种东西。这是个暴露年龄的比喻,毕竟这两种东西现在已经只能在博物馆里才能看到了。磁带的最大问题是不方便找东西,“倒带”是个极其需要耐心的活。这就决定了,当时的计算机所处理的数据都是通过后期誊录到磁带上的,计算机只是用于统计和汇报所需。

最初的磁盘是个大家伙,看下图也许分辨不出大小,但实际上它有微波炉那么大。这第一块硬盘,呃,不能称为一块,这一台硬盘只能存储 3.75MB 的数据。当然,随着技术的不停迭代,硬盘越做越小,容量越做越大。再到后面,又出现了升级版的闪存介质,硬盘就小到无孔不入了。但是不论大小,这些存储设备随机访问的特性都是一样的。

磁盘最重要的特性是“随机访问”,即用户需要查找的东西,可以轻松地定位到。计算机的快速处理能力,加上磁盘对数据的快速定位和修改能力,珠联璧合,为计算机系统打开了新世界的大门。自此,计算机开始参与到人类社会的方方面面。比如,航空公司的第一个售票系统 Sabre,使用计算机和磁盘直接存储每一个待售卖的航班客票信息和购票人信息。这些信息存储在硬盘上,被售票员实时访问和修改,直接替代了以纸质方式记录客票信息的方式。在此之后,银行、通信、交通等各行业,都使用磁盘来存储其业务信息,并使用计算机来响应各种“实时处理”的需求。

对于数据处理需求的极速膨胀,专门用于数据存储和访问的“数据库管理系统”也应运而生,并被作为一个独立的系统而广泛接受。一个软件系统之所以能独立出来并被市场接受,原因在于其可复用性,也就是说,在众多的业务场景中,使用了这个软件要比不使用的时候,更方便,效率更高,世界也会因此而变得更美好。

数据库管理系统帮助使用者解决的通用性问题主要有:

  1. 数据存储与管理
  2. 数据访问
  3. 数据变更
  4. 高可用

数据的存储与管理解决了数据如何管的问题,它本质上是对存储设备的提炼和抽象,让用户不用关心数据在硬盘上具体是如何放置的,而只用关心数据的模型即可。从早期到现在,数据模型层出不穷,在关系模型之前,有网络模型和层次模型,在关系模型之后,有对象模型、文档模型、图模型等。

数据的访问解决如何在数据中做查询和分析,在数据模型之上,数据库系统会提供抽象的接口让用户方便使用,比如 SQL 语句就是在关系模型之上有超强表达能力的数据访问接口。

数据变更解决的就是修改数据的问题,而修改数据的核心在于怎么保证数据的正确性和一致性,把数据改错了,是用户最不愿看到的情况。而“事务”功能就是“数据变更”功能的核心。事务功能提供给使用者 4 个著名的特性:原子性 Atomicity、一致性 Consistency、隔离性 Isolatation、持久性 Durability,简称 ACID。使用者将多个数据变更的操作以一个事务的整体提交到数据库管理系统上进行操作,那么数据库管理系统就能保证使用者做的数据变更具有 ACID 的特性。

高可用特性是近些年来人们对系统特别强调的一个要求。以前,系统往往强调可靠性,而现在系统则更多的改为可用性。究其原因,随着互联网逐渐深入人们的生活,在线化项目的快进,服务不可用对于人们生活的影响越来越大,所以人们对于系统的要求也从可靠性变成了可用性。这是一种质的变化,可用性等于可靠性加上服务的连续性。高可用也和事务特性密切相关,我们将在后文提及。

再来&#