ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 内存数据库事务属性-持久性(DURABILITY)比较

内存数据库事务属性-持久性(DURABILITY)比较

原创 Linux操作系统 作者:tom_111 时间:2008-05-07 21:14:27 0 删除 编辑
在讨论这个话题之前我们先重复几个数据库概念:
数据库事务的概念
    事务可以看作是由对数据库的若干操作组成的一个单元,这些操作要么都完成,要么都取消,从而保证数据满足一致性的要求。事务的一个典型例子是银行中的转帐操作,帐户A把一定数量的款项转到帐户B上,这个操作包括两个步骤,一个是从帐户A上把存款减去一定数量,二是在帐户B上把存款加上相同的数量。这两个步骤显然要么都完成,要么都取消,否则银行就会受损失。显然,这个转帐操作中的两个步骤就构成一个事务。
数据库事务的属性
    数据库事务的属性包括四大类,即ACID。ACID分别是四个英文单词的首写字母,这四个英文单词是Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)。
1、原子性 Atomicity
    事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。
2、一致性 Consistency
    事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。这种特性称为事务的一致性。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。
3、隔离性 Isolation
    隔离性指并发的事务是相互隔离的。即一个事务内部的操作及正在操作的数据必须封锁起来,不被其它企图进行修改的事务看到。
4、持久性 Durability
    持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即一旦一个事务提交,DBMS保证它对数据库中数据的改变应该是永久性的,耐得住任何数据库系统故障。持久性通过数据库备份和恢复来保证。
  严格来说数据库事务属性(ACID)都是由数据库管理系统来进行保证的,在整个应用程序运行过程中应用无需去考虑数据库的ACID实现。
   由于大家学习和研究的是内存数据库,既然是内存数据库那么作为用户必然要考虑数据的安全性(事务的持久性)问题,因此针对内存数据库的持久性(Durability)问题本人简单学习了一下
目前主流的两家内存数据库产品:altibase和timesten,并进行了简单的对比。


Snap1.jpg

   altibase内存数据库事务的持久性可以通过数据库配置文件中的TRANSACTION_DURABILITY_LEVEL参数来设置,默认为3事务持久性由altibase保证;
   TimesTen内存数据库事务的持久性可以通过数据库配置文件中的DurableCommits参数来设置,默认为0事务持久性TimesTen不保证;
问题的分析
   如果在两个内存数据库产品在默认事务持久性下进行测试,从数据安全性(事务的持久性)角度来看altibase比Timesten更安全。如果出现内存数据库系统异常情况时,altibase在默认事务持久性下能够保证业务数据不丢失,而TimesTen内存数据库会丢失数据,数据库的持久性完全由应用来保证。
导致的结果
   默认持久性(Durability)下altibase比TimesTen安全;
   默认持久性(Durability)下TimesTen比altibase性能好;
数据库用户的思考
   数据库事务的持久性(Durability)由应用来保证是否符合数据库基本原理?
   应用的过程中数据库系统的数据安全是否应该放在第一位?
   使用内存数据库时是否应该必须综合考虑安全和性能?

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10954452/viewspace-606852/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-02-03

  • 博文量
    61
  • 访问量
    81167