数据仓库是什么?

数据仓库定义

数据仓库,按照传统的定义,数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、稳定的(Non -Volatile)、反映历史变化(Time Variant),用来支持管理人员决策的数据集合。

举例来说,运营用户进行营销活动,分析最后的一个营销效果,一个基本的流程是,将业务数据同步到数据仓库,数据仓库每天将加工好的数据存入数仓或其他olap引擎,业务上再使用这部分数据进行营销效果分析等操作。

在上述例子中,营销反应了面向主题,数据同步反应了集成的,每日加工反应了历史变化,存储或其他olap引擎,反应了持久的这一特征。

之所以诞生专门的数据仓库,一方面是数据有集成的这一需求,另一方面则是传统的数据库oltp的系统设计无法支持大数据量的历史数据查询,因此olap等系统应运而生。

面向主题

操作型数据库的数据组织面向事务处理任务,各个业务系统之间各自分离,而数据仓库中的数据是按照一定的主题域进行组织。

主题是一个抽象的概念,是数据归类的标准,是指用户使用数据仓库进行决策时所关心的重点方面,一个主题通常与多个操作型信息系统相关。每一个主题基本对应一个宏观的分析领域。

例如,我们公司数据仓库的主题:用户

用户数据来源:从pc端登录、移动端登录、微信小程序端登录等几个不同端的业务系统数据库中抽取的数据整理而成。这些用户信息有可能是一致的,也可能是不一致的,这些信息需要统一整合才能完整体现用户。

集成

面向事务处理的操作型数据库通常与某些特定的应用相关,数据库之间相互独立,并且往往是异构的。而数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。

具体如下:

  1. 数据进入数据仓库后、使用之前,必须经过加工与集成。
  2. 对不同的数据源进行统一数据结构和编码。统一原始数据中的不一致之处,如字段的同名异义,异名同义,单位不统一,字长不一致等。
  3. 将原始数据结构做一个从面向应用到面向主题的大转变。

持久的

操作型数据库中的数据通常实时更新,数据根据需要及时发生变化。数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新。

数据仓库中包括了大量的历史数据。

数据经集成进入数据仓库后是极少或根本不更新的。Hadoop的hdfs设计理念也是如此,不建议手动删改,完美契合。

反映历史变化

操作型数据库主要关心当前某一个时间段内的数据,而数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。

企业数据仓库的建设,是以现有企业业务系统和大量业务数据的积累为基础。数据仓库不是静态的概念,只有把信息及时交给需要这些信息的使用者,供他们做出改善其业务经营的决策,信息才能发挥作用,信息才有意义。而把信息加以整理归纳和重组,并及时提供给相应的管理决策人员,是数据仓库的根本任务。因此,从产业界的角度看,数据仓库建设是一个工程,是一个过程。

数据仓库内的数据时限一般在5-10年以上,甚至永不删除,这些数据的键码都包含时间项,标明数据的历史时期,方便做时间趋势分析,或者溯源。

当下在我们公司,充值订单类数据是永久保存的,登录数据保存五年,埋点数据一年左右,因为过了时效性也就没有可分析价值了。

总结讲,数据仓库,即为企业数据的模型沉淀,为了能更快的发展大数据应用,提供可靠的模型来快速迭代。

数据仓库主要是用来解决什么问题?

诞生的背景

面对当今竞争日趋激烈与瞬息万变的市场,各级管理人员迫切需要根据企业的现状和历史数据做出判断和决策。

因此,各级管理人员希望能够从企业信息系统中获取有效的、一致的决策支持信息,及时准确地把握市场变化的脉博,做出正确有效的判断和抉择。

也就是说,数据处理的重点应该从传统的业务处理扩展到在线分析处理,并从中得到面向各种主题的统计信息和决策支持信息。

随着企业事务处理系统的运行和建立,数据量越来越大,企业数据源越来越多。这种需求就比以往任何时候都更加迫切,也更加难于实现。

我们以简单的商城为例,一开始,搭建商城,数据处理的重点为业务数据,运行一段时间了,想要知道每天交易额多少,数据量少的时候直接sum订单表。之后,随着业务越来越好,数据量越来越大,sum订单表越来越慢,越来越无法支撑汇总数据,知道之后业务爆发,分库分表后,从数据库拿到gmv几乎已经成了一件不可能的事情。

数据仓库技术就是针对上述问题而产生的一种技术解决方案,它是基于大规模数据库的决策支持系统环境的核心。

解决了什么问题?

大的方面,将数据处理的重点扩展到在线分析处理,解决了获取全面决策信息难得问题,降低了获取信息的代价,提高了准确率,为信息处理提供了理想的基础。

具体的

  • 集成的问题
  • 持久的问题
  • 反应历史变化的问题
  • 面向主题的问题