在这个数位化迅速发展的时代,交易处理成为了确保银行及其他商业交易准确无误的关键技术。交易处理是将信息处理划分为单个、不可分割的操作单元,称为交易。每一个交易都必须完整成功或完整失败;它绝不能部分完成。假设你在网上书店购买一本书,将信用卡上的资金转换为书本。如果交易的每一环节都顺利,则你将收到书籍,而书店则会收到相应的款项。
然而,如果在此交易的过程中出现任何一个环节失败,整个交易则会失败,无论你如何尝试,最终都无法获得书籍。
这种确保交换平衡和可预测性的技术便是交易处理。它的核心目标是确保,只有当所有操作成功执行时,数据相关的资源才会被永久更新。透过将一组相关操作整合为一个单元,无论整个交易是成功还是失败,都能简化错误恢复,让应用程式更为可靠。
交易处理的系统通常包含了用于执行商业日常交易的计算机硬体及软件。比如,销售订单输入、航空预定、薪资管理、员工记录、制造和运输等系统都是交易处理的重要应用。大多数现代交易处理都是互动式的,因此该术语经常被视为与在线交易处理同义。
交易处理旨在通过确保相互依赖的操作要么全部成功完成,要么全部成功取消,以维持系统的一致性。以某个典型的银行交易为例,将700美元从客户的储蓄账户转到支票账户,这个交易可以分为两个基本操作:从储蓄账户扣除700美元,并在支票账户中增加700美元。如果一项操作成功而另一项失败,银行的账本将无法平衡。
因此,必须确保要么两项操作均成功,要么两项操作均失败,从而杜绝整个银行数据库的一致性问题。
当某一交易的一些操作成功时,但在其他操作出现错误时,交易处理系统能够「回滚」所有相关操作,这意味着所有操作都不会真正落实,整个系统会恢复到处于一个之前的已知状态。当所有交易操作都激情成功地完成时,系统将这个交易「提交」,并将所有更改永久储存到数据库中,这时交易将无法回滚。这一过程保护了系统免受可能导致部分完成交易的硬体和软体错误。
在现代交易处理中,交易通常会并行发出。如果多个交易试图同时访问同一数据库的部分,可能会产生冲突。举例来说,若某个客户的储蓄账户只有150美元,而他同时尝试将100美元转账给其他人,并将另外100美元转到自己的支票账户,则只有其中一项可以成功。不过,迫使交易按顺序处理又会效率低下。因此,并行实现的交易处理系统会被编程为保证最终结果是一个无冲突的结果。
这意味着无论任何交易何时被发出,最终的结果将和以任意顺序执行的交易相符合,这给我们带来了新的挑战与机会。
在交易处理系统中,核心的可靠性属性由Jim Gray在1970年代后期提出的ACID标准定义,分别为原子性、一致性、隔离性和持久性。这些原则为交易的成功提供了保障:
随着企业数位化程度的加深,交易处理系统也在持续推陈出新。传统的交易处理软件如IBM的信息管理系统,最早可追溯至1960年代,随着时间推移,许多新技术已经随之出现。面对更为复杂的分散式客户端—服务器模型,企业的交易处理系统需不断演进。随着要求日益增加的交易频次,极端交易处理(XTP)的概念随之出现。
随着科技的发展,新的挑战也在不断出现。银行如何继续确保其交易处理系统的安全性与可靠性,将不失为未来的关键课题。我们需要思考,持续的交易发展对我们的经济系统会产生什么样的深远影响?