关于数据仓库,在维基百科中将它定义为用于报表和数据分析的系统,是商务智能(Business Intelligence)的核心部分。在数据仓库诞生之初,它只被设计成针对管理层所需要的决策支持系统,并不对业务方(这里指各应用系统)提供数据支持。
然而在大数据环境的背景下,当Hadoop生态已然成为大数据现实意义上的载体,以Hive为基础的数据仓库已经不能仅仅只提供决策支持的需求了——它需要同时满足部分业务上对数据的统计需求。
因此,当下的数据仓库应该有一个新的定义,它是指对全局数据(包含时间和空间:历史的以及所有业务部门的)的存储及使用的一整套方法论。
建设数据仓库就像出版一份读物,如何组织目录、编排内容、统一名称、校验错漏(包括错别字,频繁出现错别字会让人觉得这是本盗版的书)直至最后的印刷出版每个环节都不能马虎。Hadoop是纸(当然也包括临时计算结果这种草稿纸),而SQL和数据的加工方式ETL(Extract, Transform, Load)则是编写这份读物的工具,维度建模理论的基础是我们的语法。
数据仓库要做到易用性。易用性要求数据仓库里的数据要具有直观性。由于它不再是只面对开发人员使用的数据,同时需要提供给商业人员使用,因此它的数据结构应该符合商业用户的思维过程,字段的含义应该同时包含对商业人员有实际意义的值。先举个小例子,开发人员通常会使用1, 2,3,4来表示一些类似订单的状态值,但是数据仓库里应该提供明确的paid(已支付),completed(已完成),refunding(退款中)等值。易用性同时要求获取数据的便利程度。这需要结合BI工具和元数据系统等,将取数的入口做到简单易用。
数据仓库中的数据要具有一致性。一致性对度量要求具有同名同义性。如果两个度量值用同样的名字(这里表现为表的列名),那么它们应该意味着同样的含义,反之亦然。另外,如果由于业务系统的bug引起了数据的不一致,则应当要求业务开发者修复相应bug及数据错误。
当然,数据仓库同时还肩负着出数要及时、数据的安全及数据资产的保护等职责。但不变的是,它最大的价值依然在于提供基于数据分析的决策支持。