提及数据中台,我们必须从其先前的数据仓库谈起。数据库的概念可以追溯到20世纪80年代,那时IBM的研究者们提出了一个商业数据仓库的概念。实际上,数据仓库试图提供一种数据流结构模型,从操作型系统到决策支持环境。数据库概念的提出,是为了解决与数据流有关的各种问题,尤其是多个数据复制所带来的高代价。
不存在数据仓库的时代,数据分析师需要收集.清理.整合来自多个数据源的数据,对每一个决策支持环境进行部分数据复制,这一过程非常耗时且精度较低。在那个时候的大型企业中,往往有多种决策支持环境独立运营。其一,由于系统迭代更新速度快,数据源通常都是已下线的旧业务系统,给数据分析工作增加了困难。另外,虽然每一个Decision分析系统服务于不同的用户,但是这些环境常常需要大量的相似或相同的数据,从而导致了数据清洗过程的重复和繁琐。数据仓库就是在这种发展背景下诞生的。
在Building the Data Warehouse一书中,数据仓库之父BillInmon首先提出了数据仓库的概念。Inmon把数据仓库描述为一种面向主题的.集成的.随时间变化的.不容易丢失的数据集,以支持管理人员的决策过程。这是一个很复杂的定义,很难理解,下面我们对其进行拆解。
常规的操作系统以系统的功能应用为中心,数据仓库是以主题为导向的。主语是一种抽象的概念,简单地说,是一类与业务相关的数据,每个主题基本上都对应于宏观的分析域。数据库能帮助人们对数据进行分析,如一家公司要分析销售数据,可以建立一个数据仓库进行销售,利用这个数据仓库,回答类似于“去年谁是我们这款产品最好的用户。”在这种情况下,这种场景下的销售是一个数据主题,它通过对主题进行划分来定义数据仓库的能力,从而使数据仓库以主题为导向。主题域是在分析了某一主题之后确定的主题范围,例如客户.销售.产品。
整合概念与面向主题紧密相关。或者,以销售为例,假设公司拥有多条产品线和多种产品销售渠道,并且每条生产线都有独立的销售数据库。这时,要从整体上对企业销售数据进行分析,首先要把几个分散的数据源统一为一致的.不明确的数据格式,然后放入数据仓库。所以,数据仓库必须能够解决产品命名冲突,度量单位不一致等问题。在对这些数据进行整合之后,这个数据仓库可以说是一个集成化的。
要找出商业变化的趋势.有问题.新的机遇,需要对大量历史数据进行分析,这与在线交易处理系统(On-Line Transaction Processing, OLTP)系统形成对照。在线事务处理系统对当前时间点的数据状况进行了回应,要求高性能.高并发性和极短的响应时间,基于这种需要,在联机事务处理系统中通常按照活动程度将数据迁移到存档数据库中。而且数据仓库关注的是数据随着时间的变化,并能够反映出过去某一时刻的数据如何。换言之,数据仓库中的数据是反映特定历史时间点的数据快照,而这个词的意思就是“随时间变化”。毫无疑问,没有任何一种存储结构可以无限地扩展,而数据不能进不出地永久停留在数据仓库中,它在数据仓库中也有自己的生命周期。在指定的时间内,数据将从数据仓库中删除。删除细节的方法可以是,在删除或直接物理删除之后,将旧数据放入大容量媒体中,可以将其删除。
非易失指的是,数据一旦进入了数据仓库,就不再需要更改。一般情况下,操作型环境中的数据更新频率较高,而数据仓库环境通常不需要更新。随着变更操作类型数据进入数据仓库时,新的记录将生成,从而保持数据变化的历史轨迹。即,数据仓库中的数据基本上是静态的。这个逻辑概念并不难理解,数据仓库就是对曾经发生的事件进行分析,如果数据是可以修改的,那么历史分析就毫无意义。
除上述数据仓库的四个特点之外,数据仓库还具有非常重要的粒度概念。粒度数问题存在于数据仓库结构中。粒度指的是数据的详细程度和汇总程度,它越高,粒度越小。举例来说,一个单一的交易是低粒度的,所有每月的事务汇总都是高粒度的。
在设计数据仓库中,数据粒度一直是一个值得关注的问题。以前的操作类型系统中,当更新详细数据时,它总是被存储在最小粒度级别。而且通常并不是在数据仓库环境中进行的。举例来说,如果数据被加载到数据仓库中的频率是每天一次,一天内的数据更新就会被忽略。如何设计数据仓库环境,粒度对数据仓库环境有很大的影响,因此,粒度对数据仓库的查询有很大影响。粒级别越低,数据量越大,查询的详细程度就越高,查询的范围就越广,反之亦然。
上述4个特点再综合考虑数据粒度,数据仓库的存储和计算能力逐渐成为数据仓库的瓶颈。因为传统的数据库设计大多是综合OLTP和OLAP(On-Line Analytical Processing),主要的数据库中只有Teradata是专门设计数据仓库,其它数据库(Oracle.DB2.SQL SERVER,等等)都是综合型数据库,并把OLTP需求作为首要的发展方向。海量数据的出现,就是为了解决这个难题。