Ch05 Phase of DW
Yang Haoran 11/23/2021 DataData warehouse
# Phase of DW
结构:
Monitoring:监视data changes in the data source incrementally
- 只能提供被改变的数据信息:only something has been changed, not the change data
- 可以监视all the changes 或者 net effect of changes
- 可以data source主动告诉monitor自己的数据改变了,也可以monitor间隔的查询source中数据是否改变
- 几种实现方法,分为外部的和内部的

- 快照算法,最后生成一个F out
- 先根据key排序,然后再对比
- 快照文件可能是压缩的
- 为了优化快照会被读很多次,可以用window算法
- 前提条件

- F1比F2老,并且F1,F2是被排好序的

- match的意思就是计算哪些要Insert,哪些要update,哪些要delete,并把他们写到F out文件中
- 如果match成功的元组,则删除,match失败的元组,放到aging buffer中,由下一次继续匹配
- 因为F1是老的快照,所以循环最后没有匹配的就delete掉
- F2是新的快照,所以循环最后没有匹配到就insert
- 前提条件
# Extraction

- No access to the source system, 直接把数据库导出,压缩再传输
- eg:导出DB2,使用 | 作为列的分隔符,messages 是存放error或者warning信息的
- Load和import对比,load的并发性更高,performance更高,但是import的数据完整性更好


- Filter
- Bad files是不能处理的文件
- Discard files 是不满足限制性条件的文件
- 直接整合外部数据源的三种方法:
- 把外部的数据注册成一张表
- 把外部数据源通过java等语言查询成一张表
- 通过wrapper把外部多个数据库统一一下,使内部看来像在访问一个数据库一样
# Load

Insert: 插入数据,不改变原数据
Insert_Update: 插入数据,对于主键相同的数据更新
Replace:把原来的数据都删除,不改变表以及索引的定义
Replace_Create:如果表存在的话,把原来的数据都删除,不改变表以及索引的定义,如果表不存在的话,创建表以及索引,再把数据插入
Merge into:merge两个表,如果和原来的表有某一行的规定字段是一样的话,就update,否则insert

Multiple inserts:把多行插入到多个表中

- 如果用insert first的话,key小于100的只会被加到customer表中
- 用insert all的话,两个表都会加入
Replication:
- data distribution(asymmetric):只有source可以update
- 应用:通常source是data warehouse,target是data mart
- data consolidation(asymmetric):多个source可以update,并整合到target库中,可能会有conflict
- 应用:通常是从各个source中取数据整合到DW中
- 应用:或者是从independent datamarts 整合到global DW中
- update anywhere(symmetric):任何地方都可以update,会有更多的conflict,基本无应用

# Transformation

semantics:必须要统一语义,对相同的东西有相同的叫法
Data integration需要考虑的东西:


- data distribution(asymmetric):只有source可以update
Data cleansing:其中householding就是grouping

Data quality
Tools