数据库是面向事务的设计,数据仓库是面向主题设计的。
数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。
数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设计是有意引入冗余,采用反范式的方式来设计。
数据库是为捕获数据而设计,数据仓库是为分析数据而设计,它的两个基本的元素是维表和事实表。
维是看问题的角度,比如时间,部门,维表放的就是这些东西的定义,事实表里放着要查询的数据,同时有维的ID。
数据仓库用于为决策者提供信息。为此,数据仓库必须将来自单位中许多源的数据聚集和合并为一致的数据集,以准确地反映单位的业务运作情况和历史记录。
单位通常有多个联机事务处理 (OLTP) 系统来捕获日常的业务运作情况。这些 OLTP 系统很少与数据仓库同时设计。它们甚至可能是由不同单位设计的,尤其当单位是通过并购得到壮大的情况下。数据库架构和数据元素标识键在数据库之间通常是不同的。例如,被收购公司的 OLTP 中的客户表可能包含与收购公司相同的客户和产品,但使用的标识系统不同。从这些 OLTP 系统中析取的数据必须转换为常用表示法。
已使用多年的传统系统常常包含不规范的数据和不常见的数据标识设计,而且在查询上不够灵活。
对业务分析至关重要的数据甚至可能驻留在个别台式机上的个人数据库和电子表格中,尤其当单位是在没有中央信息技术组的情况下发展壮大的时候。必须将这样的数据捕获到数据仓库中。
数据仓库中使用的数据源必须被标识,并且进行技术开发以便从中析取数据。
数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它决不是所谓的“大型数据库”。那么,数据仓库与传统数据库比较,有哪些不同呢?让我们先看看W.H.Inmon关于数据仓库的定义:面向主题的、集成的、与时间相关且不可修改的数据集合。
“面向主题的”:传统数据库主要是为应用程序进行数据处理,未必按照同一主题存储数据;数据仓库侧重于数据分析工作,是按照主题存储的。这一点,类似于传统农贸市场与超市的区别—市场里面,白菜、萝卜、香菜会在一个摊位上,如果它们是一个小贩卖的;而超市里,白菜、萝卜、香菜则各自一块。