新的工作主要专注于数据仓库的构建,因此开始阅读oracle的data warehouse guide文档,随便在这里记下一点笔记。希望能够坚持看完。
Oracle10g Data Warehouse Guide链接如下:http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14223/toc.htm
和OLTP系统不同,数据仓库的主要目的是用于查询和分析数据。因此,数据仓库一般会包含大量的历史数据,用于分析其中的信息和趋势。
数据仓库理论的鼻祖William Inmon给数据仓库的特性归纳为一下四点:
面向主题(Subject Oriented)
集成(Inegrated)
不可修改(Nonvolatile)
时间相关(Time Variant)
数据仓库和OLTP是基于不同的需求而得出的解决方案。下面是数据仓库和OLTP系统的一些主要方面的对比:
一、负载
数据仓库主要设计为适合即席查询(Ad hoc query),我们无法预先知道数据仓库的负荷,所以,数据仓库需要设计为能够适应各种可能的查询
而OLTP系统一般执行的操作是可以预先确定的,可以按照估计出的系统负荷来设计OLTP系统
二、数据修改
数据仓库一般是通过ETL,周期性的将新的数据批量装载。数据进入数据仓库后,一般是不可修改的,所以数据仓库当中一般会建较多的索引用于优化查询。
而OLTP系统,终端用户可以修改其对应的某些数据,所有OLTP系统一般即时体现着当前最新的数据
三、架构设计
数据仓库一般采用非规范化或者部分非规范化的设计,以优化查询性能,典型的设计如星型模型和雪花模型。因为非规范化设计,可以只需要join较少的表就得到更多的数据。
而OLTP系统一般采用规范化的设计,以避免出现update/insert/delete异常,并保证数据的一致性。
四、典型操作
数据仓库中,一条查询可能需要访问上千,甚至几百万行数据,所以查询的性能相当重要。在oracle中,dimension,materialized view,bitmap index等技术,都在数据仓库中大量使用以优化查询性能。
OLTP中,一个操作一般只需要访问有限的几条数据。
五、历史数据
数据仓库中需要大量的历史数据,以便从历史数据中分析所需要的信息
OLTP系统则一般会将历史数据删除,以保证当前事务处理的性能