在数据库和分布式系统中,数据传输的事物(Transaction)定义主要有以下三种:
-
原子性(Atomicity):
事务是一个不可分割的工作单元,事务中的所有操作要么全部成功执行,要么全部不执行。如果事务中的任何部分失败,则整个事务都将被回滚到事务开始前的状态。 -
一致性(Consistency):
在事务开始和结束时,数据都必须处于一致状态。这意味着事务的执行不能破坏数据的完整性约束,如参照完整性、业务规则等。一旦事务完成,无论事务执行过程中发生什么情况,系统的状态都应满足预期的一致性条件。 -
隔离性(Isolation):
并发执行的事务之间互不影响,每个事务好像在独立运行一样。即使多个事务同时进行,每个事务看到的数据都是独立于其他事务而存在的。这通常通过并发控制机制实现,比如锁机制或多版本并发控制(MVCC)来避免脏读、不可重复读、幻读等问题。 -
持久性(Durability):
当一个事务成功完成后,它对数据库所做的更改必须是永久性的,即使在系统遇到故障的情况下,这些更改也不能丢失。也就是说,已提交的事务修改结果会被持久化存储到磁盘上。
以上四个属性常被称为ACID原则(Atomicity, Consistency, Isolation, Durability),它们共同确保了事务在数据处理过程中的可靠性与正确性。在数据传输场景下,虽然事务概念最初应用于数据库系统,但在分布式系统中,也存在类似的概念以保证分布式事务的完整性和一致性。例如,在消息队列或分布式事务协调器中,也会设计相应的机制来模拟或支持ACID特性。