2009-06-16 68 views
18

我正在为数据库的各种ACID属性寻找一个真实世界的例子。什么是ACID的真实例子?

+1

这听起来像家庭作业。 – 2009-06-16 02:49:25

+0

和它没有编程相关 – 2009-06-16 04:02:34

回答

32
  • 原子性 - 从一个帐户转帐到另一涉及从第一账户和第二存款操作作出退出操作的交易。如果存款操作失败,您不希望撤回操作发生。

  • 一致性 - 数据库跟踪支票账户可能只允许唯一的检验数为每个交易

  • 隔离存在 - 出纳找了一个平衡点,必须从涉及并发事务隔离从同一个帐户退出。只有在取款交易成功并且出纳员再次查看余额时,才会报告新余额。

  • 耐久性 - 系统崩溃或任何其他故障不能让失去交易的结果或数据库的内容。通常可以通过单独的事务日志来实现持久性,这些事务日志可以“重新创建”来自某个选定时间点的所有事务(如备份)。

(来自现实世界的例子总结勒dorfier的link

2

以任何给定的Perl脚本来操纵关系数据库中的数据,在其顶部放置一个“BEGIN”,在底部放置一个“COMMIT”,并且您知道perl脚本已经工作,根本不会影响你的数据库(除非你在mysql上插入DDL语句)。在设计强大的软件(以及我最喜欢的属性)时,Atomicity功能非常强大,可以保证这一点。

8

*原子性 - 从用户的角度来看,一个事务要么完全完成(即所有相关的数据库表更新)或根本没有。如果发生错误或中断,则到该点为止的所有更改都将被撤消。

•一致性 - 数据库中的所有完整性条件都与每个事务一起维护,从而将数据库从一个一致状态转换为另一个一致状态。

•隔离 - 每个事务都与其他事务隔离,因此每个事务只能访问属于一致数据库状态的数据。

•耐用性 - 如果事务已完成报告给用户,则数据库的结果更改会在后续硬件或软件故障中存在。

相关问题