数据库事务具有 ACID 特性,其中 ACID 是指原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。这些特性是为了确保数据库在事务处理中的可靠性和稳定性。
原子性(Atomicity): 事务是原子的,它要么全部执行,要么全部不执行。如果在事务执行期间发生了错误,会回滚(Rollback)到事务开始前的状态,以确保数据库的一致性。
一致性(Consistency): 事务执行后,数据库从一个一致的状态转移到另一个一致的状态。这意味着事务中的操作将数据库从一个合法状态转移到另一个合法状态,保持数据库的一致性。
隔离性(Isolation): 多个事务可以并发执行,每个事务都看起来像是在独立地操作数据库,即使在实际执行时它们可能交错执行。隔离性确保一个事务的执行不受其他事务的影响,避免了并发执行可能引发的问题。
持久性(Durability): 一旦事务被提交,它对数据库的改变将是永久性的,并且对系统的崩溃或故障是不受影响的。持久性确保事务的结果在系统重新启动后仍然存在。
除了 ACID 特性,还有一些其他数据库特性,例如:
一致性哈希(Consistent Hashing): 在分布式数据库中使用的一种策略,确保在节点的增减时最小化数据迁移。
CAP 理论: 描述分布式系统的三个属性,一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance)。CAP 理论认为在分布式系统中只能同时满足其中两个,而无法同时满足所有三个。
一致性(Consistency): 在分布式系统中,所有节点上的数据应该保持一致状态。这意味着在任何给定时间点,无论客户端访问哪个节点,都应该获得相同的数据副本。一致性要求系统在进行写操作后,所有节点都要达到相同的状态。
可用性(Availability): 分布式系统的每个请求都应该在有限的时间内得到响应,即系统应该保持对用户的服务可用。可用性要求系统在出现故障或部分失效时仍然能够继续提供服务。
分区容错性(Partition Tolerance): 分布式系统中的节点之间可能会发生通信故障或分区(网络分割),分区容错性要求系统在出现网络分区的情况下仍然能够正常运行。
一般来说,大多数分布式数据库系统更倾向于保证分区容错性和提高可用性,而在一致性方面可能采用一些弱一致性模型。
CAP 理论认为在一个分布式系统中,最多只能同时满足其中的两个属性。这是因为在发生网络分区的情况下,要同时保持一致性和可用性是非常困难的。在分布式系统设计中,系统架构师和开发者需要在一致性、可用性和分区容错性之间进行权衡,选择适合特定需求的配置。