最初,数据库管理系统是为了应对商务交易的数据存储而诞生的。后来发展到各个方面的应用场景,虽然实际的应用场景不尽相同,但是数据操作的特点却大多是类似的:按照索引查找一些数据(通常量不大),按照用户的交互输入更新或者插入数据。这种数据库访问模式被称作是在线交易处理(online transaction processing, OLTP)。
在另外的场景下,数据分析日益成为普遍需求,而它和OLTP的数据访问模式大不相同。数据分析通常需要一次性获取大量数据来进行统计学分析,通常只会用到一条记录的少数几个字段。这种数据库访问模式被称作是在线分析处理(online analytic processing, OLAP)。
数据仓库
一个企业通常会拥有多个数据库来存储各种数据。一个OLTP系统对于可靠性和延迟要求很高,因为它常常需要支撑实时的线上交易。而在一个OLTP系统上运行数据分析通常代价很大:OLAP操作常常需要一次性获取大量数据,对于OLTP系统而言这是一个很昂贵的查询操作,这会大大影响OLTP系统的性能。
所以,常见的操作是建立一个数据仓库,来供给数据分析使用。数据仓库常常聚合了多个OLTP系统的数据的只读备份。从OLTP系统抽取数据,整合成方便分析的数据格式,再存放到数据仓库中,这一过程叫做ETL(Extract–Transform–Load)。
OLTP系统和OLAP系统分离有着明显的好处:可以根据各自不同的数据操作特点进行专门的操作优化。
在数据仓库中,常常有一个事实数据表,用来记录发生的主事件。主事件包含的各个相关附属属性通常以星型模式组织:事实数据表位于当中,其他相关属性数据在周围。
在数据仓库中,事实数据表通常包含许多字段,这时候常见的OLTP系统按行存储的方式就不再适用。