我们为某个程序创建的特定的数据库一般称为事务型数据库(Transaction Database), 它和Data Warehouse(DW)还是有很大差别的.
1. 事务数据库帮助人们执行活动,而数据仓库帮助人们做计划。例如,事务数据库可能显示航班的哪些座位是空的,这样旅客可以进行预定。而数据仓库用于展示空座率情况的历史信息,以让航班管理员决定在未来是否要调度航班。
2. 事务数据库关注细节,而数据仓库关注高层次的聚集。例如,一个大人只想购买最流行的儿童图书而不关心它的库存情况。但负责图书在书架上排列的管理员也关心图书的销售情况和变化趋势。这之间的不同的隐含区别在于数据仓库中的数据通常都是数值类型,它可用于汇总。
3. 事务数据库通常为特定的程序而设计,而数据仓库用于整合不同来源的数据。例如订单处理程序——数据库会包含每笔订单的折扣信息,但不会包含产品的成本超支情况。相应地产品管理程序会包含详细的成本信息但不会包含销售折扣。但可以把这两样信息组合到一个数据仓库中,你就可以计算产品的实际销售利润。
4. 事务数据库关注现在,而数据仓库关注于历史。例如一个银行帐户,每一次事务——即每次的存款与取款都会改变帐户余额的值,但事务系统很少会维护历史余额。但在数据仓库中,你可以存储很多年的事务数据(可能被汇总的),还会存储余额快照。这样允许你把当前值与历史进行比较。在进行决策时,可以查看历史趋势。
5. 事务数据库是可变的,这很容易理解。但数据仓库是稳定的;它的信息会以固定的间隔进行更新(可能是每月,每星期或每小时),而且理想情况下,更新只会为新的时间段添加新值,而不会改变先前存储的值。
6. 事务数据库必须提供对详细信息的快速获取和更新,而数据仓库必须对高汇总信息的快速获取或更新。所以事务数据库的设计优化与数据仓库的设计优化可能不同。而且,以管理目的查询一个事务数据库生成报表可以会导致该事务程序运行性能下降
数据库事务的四大特性(简称ACID)是:
(1) 原子性(Atomicity)
事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。
例如银行取款事务分为2个步骤(1)存折减款(2)提取现金。不可能存折减款,却没有提取现金。2个步骤必须同时完成或者都不完成。
(2)一致性(Consistency)
事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。这种特性称为事务的一致性。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。
例如完整性约束a+b=10,一个事务改变了a,那么b也应随之改变。
(3)分离性(亦称独立性Isolation)
分离性指并发的事务是相互隔离的。即一个事务内部的操作及正在操作的数据必须封锁起来,不被其它企图进行修改的事务看到。假如并发交叉执行的事务没有任何控制,操纵相同的共享对象的多个并发事务的执行可能引起异常情况。
(4)持久性(Durability)
持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即一旦一个事务提交,DBMS保证它对数据库中数据的改变应该是永久性的,即对已提交事务的更新能恢复。持久性通过数据库备份和恢复来保证。