数据库事务
开发中注解使用spring的import org.springframework.transaction.annotation.Transactional;
对于数据库事务的理解:将一系列的sql执行语句放在一起,确保所有的语句同时执行成功。如若执行过程存在失败,数据库会处在一个混乱的状态;
Ex:mooc数据库中,一个业务是学生购买课程,购买课程的业务步骤包括更新teacher表,记录老师的收入,同时在student_course表中加入一条购买记录,更新student表的剩余余额。以上的全部业务步骤都需要执行。
事务特性
Atomicity(原子性):最小工作单位,全部提交或者全部失败
Consistency(一致性):从一个一致性状态转换到另一个一致性状态,执行前后必须处于一致性状态
Isolation(隔离性):事务所做的修改在提交之前对其他的事务时不可见的 数据库提供了多种隔离级别
Durability(持久性):事务一旦提交,修改永久保存在数据库
事务的隔离性
脏读:一个事务处理过程里读取了另一个未提交的事务中的数据
不可重复读:对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了
虚读(幻读):事务非独立运行时发生的一种现象
不可重复读和幻读的区别:不可重复读是读取到了另一事务的更新;而幻读是读取到了另一事务的插入(MySQL中无法测试到幻读);
四种隔离级别
① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。
② Repeatable read (可重复读):可避免脏读、不可重复读的发生。(MySQL数据库默认)
③ Read committed (读已提交):可避免脏读的发生。(Oracle数据库默认)
④ Read uncommitted (读未提交):最低级别,任何情况都无法保证。
级别越低,性能越好。
事务并发执行 数据库需要同步
Spring框架执行一个数据库事务时,
一配置数据源DataSource,(配置语句定义了数据库的URL地址,访问账户及访问密码)
二声明事务管理TransactionManager类,需要传入之前已声明的DataSource数据源
三定义可以执行的事务的DAO类
Begin
Rollback
commit
数据库仓库
数据仓库主题:在较高层次上将企业信息系统中的数据进行综合、归类和分析利用的一个抽象概念,每一个主题基本对应一个宏观的分析领域。从逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象。“销售分析”就是一个分析领域,因此这个数据仓库应用的主题就是“销售分析”。
数据仓库主题域:是对某个主题进行分析后确定的主题的边界。大多数数据仓库的设计过程中都有一个主题域的选择过程,其选择由最终用户和数据仓库的设计人员共同完成。
ETL(数据仓库技术)用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。