数据仓库建设碎念

数据仓库呈现给数据应用人员的是一张张数据表,而仓库建设人员要解决的关键问题是:如何对客观世界的复杂业务逻辑进行建模,高效组织数据,将模型转化成数据表,最大化的发挥数据价值,应对业务变更以及进行上层业务支撑。如果数据组织不好,将会产生大批垃圾数据, 如果数据不被使用,建设数据仓库也就毫无用处。

数据开发

数据仓库严格来说是一种体系结构,在工作过程中,有的同学认为数据开发相对系统开发技术含量低,个人认为造成这种想法的主要原因是:只单纯的通过ETL方式解决单个的需求,没有站在一个全局的高度来解决问题,建设数据。在处理需求过程中,要加深业务理解,将复杂的业务逻辑用简单的模型来表示,比如引入流量漏斗模型,不能停留在处理单个需求层面上,注重总结积累,进行指标体系建设等。

系统开发和仓库建设的目的都是为了解决问题,本质上是一样的,两者都面临着各种各样难以解决的问题,建设好数据仓库是相当不容易的,建设数据仓库过程中也是非常需要采用工程方法来提升效率的,如维护hadoop、hive数据仓库的支撑平台或者将重复性工作自动化起来,所以仓库建设和系统开发并不矛盾,我们应该积极寻找结合点,利用工程方法不断提升我们建设数据仓库的效率,而不能陷入疲于应付需求的泥潭。

数据模型

好的组织方式会提升数据质量,让数据仓库发挥更大价值。不好的组织方式可能会导致各种问题,比如数据重复建设,复用率低,一致性差,进而带来口径不一致,理解困难、不易于使用等等问题,失去数据仓库建设的价值,造成各种资源浪费。

数据模型是对现实事物的反映和抽象,它可以帮助我们更加清晰地了解客观世界。是抽象描述现实世界的一种工具和方法,数据仓库建模在业务需求分析之后开始,是数据仓库构造的正式开始。
在创建数据仓库的数据模型时应考虑:

(1)满足不同层次不同用户的信息需求。

(2)兼顾查询效率与数据粒度的需求。数据粒度与查询效率往往是相互矛盾的,细小的粒度保证了信息查询的灵活性,但降低了查询的效率。因此,建模要提供足够的数据粒度,并保证查询的效率。

(3)适应需求的变化。用户的信息需求随着业务的变化,建模要考虑支持需求的变化。

(4)提供可扩展性。数据模型的可扩展性决定了数据仓库对新的需求的适应能力,建模既要考虑眼前的信息需求,也要考虑未来的需求。

合理而完备的数据模型是用户业务需求的体现,是数据仓库成败的技术因素。因此,数据模型的创建能直接反映出业务需求,对系统的物理实施起着指导性的作用,是数据仓库的核心问题。

数据模型的建设主要能够帮助我们解决以下的一些问题:

  1. 进行全面的业务梳理,改进业务流程。在业务模型建设的阶段,能够帮助我们的企业或者是管理机关对本单位的业务进行全面的梳理。通过业务模型的建设,我们应该能够全面了解该单位的业务架构图和整个业务的运行情况,能够将业务按照特定的规律进行分门别类和程序化,同时,帮助我们进一步的改进业务的流程,提高业务效率,指导我们的业务部门的生产。
  2. 建立全方位的数据视角,消灭信息孤岛和数据差异。通过数据仓库的模型建设,能够为企业提供一个整体的数据视角,不再是各个部门只是关注自己的数据,而且通过模型的建设,勾勒出了部门之间内在的联系,帮助消灭各个部门之间的信息孤岛的问题,更为重要的是,通过数据模型的建设,能够保证整个企业的数据的一致性,各个部门之间数据的差异将会得到有效解决。
  3. 解决业务的变动和数据仓库的灵活性。通过数据模型的建设,能够很好的分离出底层技术的实现和上层业务的展现。当上层业务发生变化时,通过数据模型,底层的技术实现可以非常轻松的完成业务的变动,从而达到整个数据仓库系统的灵活性。
  4. 帮助数据仓库系统本身的建设。通过数据仓库的模型建设,开发人员和业务人员能够很容易的达成系统建设范围的界定,以及长期目标的规划,从而能够使整个项目组明确当前的任务,加快整个系统建设的速度。

关系模型

将客观世界划分成关系与实体,数据仓库由一系列的关系以及实体组成,严格遵守3nf范式,数据一致性比较强,冗余度低。

通过参照完整性来保证一致性,采用关系模型生成的数据仓库往往成蜘蛛网结构,可读性差,不容易入手,对于非仓库建设人员要使用数据仓库中的数据成本是非常高的。

维度建模

维度建模方式将客户世界分解成事实和维度,建模过程的一大部分工作体现在抽取维度以及事实,相对来说更加直观,容易理解,在业务变更较为频繁的场景可以更加有效地覆盖业务需求。

数据仓库由一系列的事实表以及维度表组成,事实表与维表之间呈星型连接,事实表之间又通过特定维度联系,形成雪花结构。

3NF范式

3nf在第一范式原子性、第二范式不存在部分依赖基础上加入消除传递依赖,其目的是降低数据冗余度,提高数据一致性。关系模型有时候也被称为范式建模,但是这种说法是不太严谨的。因为关系模型好维度建模生成的表都可以符合3nf范式。

模型选择

划分世界的方式不一样:一个是实体关系,一个是维度模型,但都可以使用范式。

关系模型

优点

  • 灵活性
  • 冗余度低
  • 一致性
  • 易维护

缺点

  • 不直观
  • 获取效率不高

采用这种方式建设数据仓库,通过满足参照完整性,3nf,有利于保证数据一致性,但数据仓库结构相对来说不易于理解,呈蜘蛛网结构,学习成本高。

维度模型

优点

  • 直观性
  • 易用性
  • 访问高效

缺点

  • 可能导致不一致
  • 数据冗余
  • 灵活性差
  • 适用范围有限

数据仓库建设人员

追求数据一致性、灵活性、易维护。

最终用户

追求数据访问高效性、直观,易用使用。

建设方式

先局部再整体构建模式:先创建团购的数据集市,然后在扩大到公司的数据仓库,通过一致性维度和一致性事实和其它数据集市有效整合。

数据仓库问题

数据建设过程存在以下问题。

  • 时效问题
  • 重复建设
  • 数据不完整,缺失
  • 数据不一致
  • 数据不准确
  • 获取困难
  • 有歧义

需要注意的问题

数据采集过程要引起注意,底层数据是仓库基础,如果底层数据出现问题,那么将会严重影响到数据仓库质量,基石崩溃了,意味着构建在基石之上的整个数据仓库都会出问题,另外修改底层数据往往也会引起较大的改动。

数据采集过程

  • 业务理解,深入到系统架构
  • 数据采集过程,引起注意,不出错,不重复,不遗漏
  • 注意验证数据,异常值,控制,有效值完整定义
  • 跟踪方案等一定要健壮,可扩展
  • 拒绝依赖不健壮的数据,不要偷懒,图一时省事,后期维护会极端困难
  • 监控日志数据质量
  • 系统迭代,埋点准确性验证

相关推荐