数据仓库架构设计
一.
数据仓库架构,是IT架构的一个分支,随着数据在企业的核心作用的增强,数据仓库的架构日益重要。数据仓库架构由于其技术选择非常广泛,看上去复杂,不过背后有一套比较稳定的思路,这也是数据仓库架构设计的一个要点,稳定中蕴含变化,变化中蕴含稳定。
总 体来说,数据仓库架构分成两大块,一是硬件架构,二是软件架构。硬软架构又可以分成封闭式和开放式。封闭式硬件架构代表厂商有teradata,其硬件是 专属的,必须使用特殊的硬件才能运行。开放式硬件架构的代表有oracle,可以运行在各种硬件上,不过开放和封闭之间的界限也逐步的融合,oracle 也开始打包hp的专属硬件来推广其dw的方案,而teradata也开始用基于suse的os可运行的硬件上提供其dw产品。封闭式硬件好处是开箱即用, 经过厂商的严格测试,保障性比较高,开放式硬件则需要企业具备很强大的技术实力,能够有一支具备硬件,存储,操作系统综合知识和能力的团队,在组合成一套 可以运行dw软件的基础平台,并且在发现问题的时候要能很快速的定位问题的原因并解决。
数据仓库的软件架构选择更加丰富。从数据库软件,etl软件,展现软件,数据挖掘软件,每一种类型里面都具备非常多的选择。
这些软件的选择是架构设计的一部分,架构设计的重要核心一部分是综合这些软件的一套思路,在一套dw架构设计的思路下,软件可以很灵活的进行选择。
二.
数据仓库架构设计的出发点是什么?需要解决哪些问题?
所 谓架构,好比大厦,好的设计大厦具备很好的抗震,抗自然灾害能力,框架式建筑能够重新打造内部结构。而数据仓库架构也是解决类似的问题,其实很多数据仓库 在开始起步的时候是不谈架构的,本来就是小作坊,无须谈到架构这个高度。但是如果要考虑建设一个能支撑容纳5-10年业务的时候,架构的好坏就体现出来 了。
一 个好的架构其实就是经验的沉淀物,架构是在理清楚数据仓库的基本的任务,并能让这些任务高效低成本的实现。举个简单的例子来理解一下,数据仓库中同步数据 和汇总数据的依赖模块非常之多,如果其中若干模块出错,该如何处理?如果架构设计不好,就会陷入维护人员不断的寻找问题,清理现场,手工调度等问题出现, 场面应该十分混乱。好的架构首先是模块化,模块内部具备自动清理现场功能,而模块间则具备自动断点重新启动功能,在模块常规出错的时候,能依靠系统自助解决问题,同时能把处理问题的过程记录下来供后续分析。这样的架构能够极大的提升维护的效率,减轻维护人员的维护量。整个dw系统也具备了抗异常能力。
三.
数据仓库的架构设计,有时候一个好的架构设计的出发点往往来源于当前系统的缺陷。如何面对当前系统的缺陷是架构能否持续发展的一个关键点之一。业界存在很多对商业,开源etl工具的评测,那么这些评测要点应该从哪些方面进行才能甄别出适合企业的工具呢?
1.成本。成本永远是企业关心的一个核心问题,特别在如今经济寒冬,更是如此。
2.效率。能否高效的处理海量的数据是一个基础要素,搞数据仓库的都知道,数据量永远是一个经常被拿出来讨论的话题。
3.线性扩展。能支持线性扩展的系统在计划支撑多年的系统中特别重要,可以非常方便的做出年度预算。
4.协同工作。解决多人协同开发问题。
5.调度。能否很方便的一目了然的看到整体调度,站在一个非常高的高度来管理各种数据流。
6.兼容性。能否兼容各种异构数据。
7.准确的监控系统。
8.高效的开发框架。
四.
数据仓库的物理架构,包含硬件物理架构和软件物理架构。硬件物理架构包含集中式和分布式2中,在企业里面都有运用。
集中式硬件物理架构偏向于使用非常power的小型机或者大型机,非常高端的海量存储,管理简单,在不计投入的情况下性能也能满足企业需求。
分 布式硬件物理架构目前非常流行,特征是采用价格低廉的中低端机器组成计算集群,不同的技术驱动下,在share nothing的架构下可以采用本机的硬盘, 在share everything的架构下偏向使用集中存储,分布式集群在网络上的要求比较高,扩展性比较好,配合好的软件可以达到线性扩展的要求。
软件物理架构主要特征区别就是行存储和列存储。这个也是曾经很多厂商津津乐道的地方,根据需求的不同,2种方式可以灵活采用。
大部分db软件都是采用行存储,而列存储的特征在于高效的单列值压缩,在选择列比较少的时候需要io要求很低,速度很快,不过行存储的db目前在压缩效率上也在迅速提升,大部分需求还是选择行数据进行观察,行存储也更加便于表的按记录拆分进行并行化。