|
谈谈数据仓库架构的发展和分类Jerome 20061210 最近大家对数据仓库架构的讨论又多了起来,我在这里对一些架构进行一下简单的整理。目的是给大家树立一个靶子,大家可以在这篇文章后尽情的批判和补充。 我把我听说过的架构都归整在一起,分了六类,其中和很多说明是我个人的理解,不见得正确,大家多多指导。 1.独立的数据集市架构(Independent data mart architecture) 这种架构方式的缺点也很明显,不是企业内一致的数据,产生信息孤岛。当然我企业就是很小,就一个系统,不用整合,一个数据集市足以的情况下采用这种方式也没什么。先期小投资,让企业看看效果,以后发展大了再考虑重新建立数据仓库。 2.联邦式数据仓库架构(Federated data warehouse architecture) 联邦架构的缺点也很明显,除非建立之初就采用类似总线架构的方法实现数据一致,否则很容易出现数据不一致,导致整合的不彻底。如果之初就考虑好的话,和总线架构的差别就不大了。当然,对于临时解决企业原有独立数据集市的数据交换问题,联邦架构还是有一定作用的。 3.集中式架构(Centralized architecture) 这种方式也有一些缺点,如扩展能力差,对EDW所在的RDBMS要求太高,随着数据量和分析的逐步增长,就不得不再把数据进行分离。如果在EDW的基础上进行数据分离,为不同的应用单独建立数据集市或者挖掘仓库,集中式结构也就演变成Hub and Spoke架构方式。 4.集线器和车轮辐条架构(Hub and spoke architecture) 这种架构方式当然也有缺点,虽然是在集成的中心数据仓库EDW上建立数据集市,但是这些数据集市之间还是不能进行数据交换的,大家建立的方法和ETL程序都会不同,各个数据集市之间的数据不见得的是一致的。而且这种架构方式开始变得复杂。 5.总线架构(Bus architecture) 当然总线架构也有缺点,中心数据仓库以维度模型保存,对于特殊的非维度型分析应用会有局限性,支持的不好。 6.复合式架构(Composite architecture) 复合式架构的缺点也是很明显,架构过于复杂,(比CIF还要复杂),企业内数据量大的话,每一次搬动都会非常麻烦。 呵呵,简单的整理的各种架构,也大略谈了一些缺点,至于那种架构好,那种不好,我不想和大家争论,我想它们都有自己的适用范围吧。欢迎大家对我文章中的错误和描述不清的地方进行指导。 土包子 20061210 innovate511 20061211 觉得还是和具体情况有关吧。 有多大规模的项目、企业期望(包括期望的生命周期)、企业投资等都有关系。当然,正如前面分析到的,目前已上项目中,各种架构都尝试过了,优缺点都很明显。 不过复合式架构的缺点,我觉得并非搬动麻烦,而是整体要求很高,无论是EDW数据整合,还是类似HUB的CDW建设,再到数据集市,接口很多,对设计要求高,而对开发和测试的要求也很高,任何一步没走好,都可能导致项目濒临失败。这也是90年代很多想模仿CDW思想的项目失败的重要原因。但是效果也是很明显的,即使数万计的最终用户,各个部门世界各地的分公司的四大BI需求全部能满足,由于所有复杂数据转换问题都在后台已经完成了,BI工具可以更稳定更快速地实现BI。同时由于非常灵活,也能满足更多数据源和业务的加入,实现系统长期使用,避免重复投资带来的资金投入过大、稳定性降低、一致性在重复上项目后不能保证、前期项目维护问题太多导致最终用户不满等缺点。 至于数据搬动问题,我觉得不是大问题,因为没一步也可以看成一个独立的整体,只要按照流程移植,是不存在风险的,包括利用Kimball的思想进行DMR(Data Mart Restructure),数据集市也可以不断扩大或者拆分来满足更复杂BI整体需求,在这些灵活度方面我还是很有信心的。 这两天关于数据仓库架构的讨论甚欢,看了jerome、innovate的介绍,有些东西清晰了不少。Jerome提出六种架构,Innovate提出架构面临的四种需求,以及四级架构抽象级别。下面我就充当主持人的角色,再归纳一下这个六、四、四,各位还请继续探讨。 六种架构(Jerome提出): 我想,对于电信行业的经营分析系统来说,大部分是比较符合"集中式"的,因为它从不同数据源物理集中了数据,并且没有单独构建数据集市,大多只是在数据仓库架构里面划出一层DM层出来(不知道算不算)。当然,也有可能是使用总线架构的,毕竟这个见效快一点,在目前这个阶段,"快"还是一个优先考虑的因素。 架构四种需求(Innovate提出): Innovate对这四种需求并没有多说,为什么分成这4种,是否还有别的类别?看起来业务的分解和需求变化都是指业务需求(可能只是前者是现有业务的功能分解,后者是业务需求的变化吧)。如果要对需求进行分类,还得看看都是什么角色提出这些需求的。处理数据的人,希望架构能够方便自己,使用数据的,希望能够快速、安全地访问......我想这就是需求分类的依据。 架构的四层抽象级别(Innovate提出): 将架构分成不同的抽象级别,这是显而易见的。例如SOA肯定是比J2EE更加抽象的,J2EE也许不适合数据仓库系统的架构,但SOA却能适合。到了第三层架构,至少都是能够适合不同行业的数据仓库项目的,但到了第四层,便只是服务于专门的行业了。 yushano@gmail.com 20061212 请教一个电子政务方面的案例:如何对已经自成体系的垂直系统进行数据整合? 在市区的电子政务中,要对市级的各个部门进行数据整合。因为这些部门多数都是自上而下的系统,是由国家中央、省到地方市区的。比如公安、税务、人民银行都是自成体系的业务系统。再如国家统计局各个专业指标(人口,工业,农业等等)的信息系统也都是自成体系的,从中央推向地方区镇,而要想得到市区一级的综合统计指标(人均纯收入,GDP,社会消费零售额等),就必须对各个专业指标进行整合,它们都是异构的数据库和数据标准(叫数据集市?),而整合形成的数据平台叫数据仓库?是形成一个中间件式统一规划的数据标准还是做接口表呢?如果要想横向协同利用各个局的数据,比如市区政府想利用这些数据,应该采取上述的哪种方案呢?我想虽然我们应用目标的出发点不一样,但是碰到的数据整合问题应该是相通的吧。 这种情况下数据整合的挑战首先来源于管理模式。市区政府想要利用这些数据,但这些数据的所有权并不直接属于市区政府。以前遇到的情况是,市长办公会请各部门一把手去,专门讨论如何给数据的问题。每个部门都说自己的明细数据机密性很高,搞不好就引起社会问题,不愿意给,能不能只给报表?如果给的话,能不能给去年的数据?或者给的话,只给一次?要想动态实时的拿到这些数据,更是不可能的任务。大的国企也有这个问题,法人层级太多,总部想要下面的数据也是被推三阻四,软磨硬泡的不给。 其次,市区一级的综合统计指标体系如何建立。从一个市区的角度自定义一套综合统计指标体系,有点勉为其难。与国家统计局的统计口径是否保持一致?如果全然一致,为什么不从本市的统计局直接取?当然,统计局可能走的是一套自己的统计方法、例如抽样;自己的频度,例如一季一次;可能只向上级统计机构负责,而不向平级下级负责等等,以至于统计局的数据很难直接使用。统计指标体系的建立要把各主要业务部门的核心指标汇聚到一起,剔除重叠和不一致,有些需对跨部门的数据进行合并。这个指标体系的建立也是很大的挑战。 最后才是技术架构如何建立的问题。没有通用的或绝对正确的技术架构。它是解决具体问题的,随着实际状况的不同而调整。由于上述管理的和安全的原因,从源系统直接取数恐怕是很难实现的,退而求其次,只能要接口表或接口文件。如果不能从源系统的数据直接导出,可能还要定义接口格式,由开发系统的厂商提供。接口表(或接口文件)放置到从接口缓冲区转移到一个集中的场地(服务器)进行数据整合。统一规划的数据标准很难约束到每个部门的业务系统,毕竟都是垂直条线下来的;现实一点,只能约束接口标准。在设计中还要考虑数据如何存储(数据结构)、取数的频度、数据保留多久、整合后数据是否有需要回流到源系统等问题。此外,还要考虑有部分数据很难取到原始明细,要有人工补录的手段。 看到这个问题,头脑中首先碰出来的一个想法是——"可以用联邦式数据仓库的架构"。因为对于已经自成体系的系统,将数据整合到一个物理数据仓库是否现实?后来看到goldenfish的回复,提到首要的挑战在于"管理模式"。应该就是这个道理吧。管理的整合比数据整合要难,何不避难从简? 当然,由于对电子政务中的系统不甚了解,不管此处说得是否合理,能够对思路有所开拓就足够了。 为什么当初的第一反映是"联邦式数据仓库"呢,如此问自己?也许正是余山老师提到了自成体系的系统,这些系统由不同开发商完成,也没有什么统一的标准,系统的设计思想、编码肯定是千奇百怪,而且涉及到安全性的问题。所以我想,可能用一种虚拟的数据仓库更加合适,即实际的数据都还是位于各自的系统当中,而所谓数据整合,是建立一个可以容纳所有这些系统(现实一点,可能是这些系统的交集部分)的框架,框架里面放置的是类似"数据指针"那样的东西,这是虚拟的,当你需要查询什么数据的时候,其实这个框架是将查询定位给具体的系统了。比如要查询某个人的信贷、犯罪、税务情况,好似从一个统一的平台输入了ID号,返回以上若干信息,但数据都还是存放在金融、公安和税务的系统里面的。 由此深入思考,我认为与其说这个案例是"数据的整合",不如说是"应用的整合"。所以,根本也用不上上面提到的数据仓库架构,也不是什么"联邦式架构",可能应该在面向服务架构(SOA)中寻找答案。 建立一个数据仓库,不如建立一些标准,可以将每个独立系统想象成为一个服务提供者,它可以提供什么服务,是经过注册的。比如金融系统可以根据一个个人ID给出此人的帐户、贷款、信用等信息,可以根据一个公司的代码,给出公司的信息,或者可以提供年度的统计指标等等。当然,这些信息的提取应该是基于金融系统内部的数据仓库的,总不能从业务系统去取。此处关键的就是如何定义这些"服务提供者"提供的服务,也就是标准。输入什么、输出什么、甚至是输入输出的规格标准化(例如身份ID的要求,输出数据中,性别的编码规则)、权限控制、如何注册这些服务等等。 有这样的标准,具体的实现交给独立系统的实现厂商。而至于基于这些服务能够作甚么用途,那得具体看应用而定。 数据整合和应用整合有些区别。通常,应用整合指EAI,现在已经转向以SOA的理念实现EAI。数据整合通常指通过数据整合层或数据集成平台、EDW等进行的数据集成(Integration)/整合(Consolidation)/融合(Mediation)。广义的应用整合包含业务应用间的数据集成,即A的数据送往B,例如保险营业系统中的保单收费送往财务系统入帐。但应用整合更多是指A系统要求B完成一个操作,B完成后返回一个确认,以及这样的多步操作形成一个流程,流程集成是应用整合(集成)的高级应用。数据整合往往是为分析目的完成的。不同系统的数据送往一个集成平台,进行数据清洗和整合,为了实现分析应用。两者结合起来,可以称之为企业整合(EI)。 如上所述,两者是有交叉的。特别是SOA与主数据管理相结合之后,主数据集成通过SOA实现,主数据为业务系统形成统一的视图(在电信里已经有SID的应用)。这种理念的出现体现了SOA对传统业务系统架构的冲击,也是应用整合的一个发展方向。但主数据管理并不能替代数据集成,不能替代数据的清洗整合。两者服务于不同的目的,有不同(尽管可能有所重叠)的范围。倒是EII的出现对传统的数据整合架构有所冲击。EII体现了一种实时数据集成的理念,来自不同源系统的数据不集中存储,而是使用的时候边传输边集成。但显然,目前EII的实现不能隔离对业务系统数据库的访问压力,对于大量数据很难有效处理。 感谢诸位赐教。如上所言,管理的整合很难。但正是管理的界限形成了数据统一规划的界限,异构系统就是这样形成的。对于一个企业来说,消除部门的异构数据还可以通过统一规划的方法来达到共享,而对于像市级的各个专业局就是难以实现了。 就我目前调研的情况看,在市区一级的OA系统,联合审批(所谓阳光政务),还有财政局因为要对其它部门实现统一国库支付(两千以上的采购),这些系统的横向协同比较紧密,好像可以进行统一的数据规划整合。 刘庆最后的应用整合提法令我很开窍,打个比喻,是否如同XML网络消除异构的方法,不是在文字的存储编码上去统一整合,而是在显示界面的语言上统一整合?这样就能与操作系统,数据库,字符数据的储存标准都无关?从而达到统一。 个人认为总线机制的发展前景更好些,扩展性比较好,可以在大型的企业中依此建立多级的数据仓库以及BI应用,至于缺点中所说的内容,窃以为不是大问题,每个数据仓库都会有特殊的应用,每个总线上的组件总是会有组件自身的特色,只要这种应用所使用的标准是统一的,或者使用的范围不广,不会对整个总线的架构产生很大的影响。 责编:姜玲 微信扫一扫实时了解行业动态 微信扫一扫分享本文给好友 著作权声明:畅享网文章著作权分属畅享网、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。 |
热门博文 |
|