Guushuuse .NET

领域驱动设计==哲学

导航

Transaction(事务)

事务处理在应用系统开发中起着重要的作用。简单地来说,事务就是由若干步处理组成的工作单元,这些步骤之间具有一定的逻辑关系,作为一个整体的操作过程,每个步骤必须同时成功或者失败。当所有的步骤都成功的时候,事务就必须“提交”,而当其中有一个步骤失败的时候,整个事务都必须“回滚”,也就是,其中的每一个步骤所做的改动都必须撤销。
事务的主要特性包括原子性、一致性、隔离性和永久性,即所谓的ACID属性。
 原子性表示事务作为一个工作单元处理。事务可能包括若干个步骤,通过把这些步骤作为一个工作单元处理,并在进程周围放上逻辑边界,就可以要求每一个步骤都完全成功,否则,就不能进行下一步的操作。每一个步骤都依赖于前一步的顺利完成。如果一步失败,则不能完成任何其余的步骤,前面已经完成的步骤也必须全部回滚。
 一致性将保证事务使系统或数据处于一致状态。数据处于一致状态就是符合数据库的限制或规则。限制就是事务完成时要成立的数据库条件,已在定义数据库结构时被定义,用以指定主键、数字字段有效范围和可否包含null值之类的事项。如果事务开始时系统处于一致状态,则事务结束时系统也应处于一致状态,不管事务成功还是失败,提交还是撤销。
 隔离性提供了事务处理中最强大的特性之一。简单地说,隔离性能保证事务访问的任何数据不会受其他事务所做的任何改变的影响,直到第一个事务完成。这等于让事务象系统中的唯一事务一样执行。其他请求的数据库操作只能在不破坏当前使用的数据时才能进行。这对于支持数据的并发访问至关重要。
 永久性指定了事务提交时,对数据所做的任何改变都要记录到永久存储器中。这通常通过事务日志来实现。事务日志将数据存放在数据库之类的资源中,可以在遇到故障时 重新采用丢失的事务,也可以在遇到错误时撤销事务。简单的说,事务日志负责跟踪数据库中发生的每个数据操作,使数据可以返回到搞乱前的已知状态。一旦系统恢复到已知状态后,便可以利用事务日至更新构造或重新采用从这个状态开始的改变。

posted on 2008-05-16 12:49  guushuuse  阅读(1003)  评论(0编辑  收藏  举报