每一个数据仓库有一个架构。这架构要么是即时的或计划过的;或隐式的或形成文件的。不幸的是,许多数据仓库开发时并没有一个明确的架构,这极大的限制了它的灵活性。在没有架构的情况下,主题区域就无法契合在一起,它们之间的连接变得无目的,并且使整个数据仓库的管理和变更都难于进行。此外,虽然它可能看起来不重要,数据仓库的架构已成为选择工具时的框架。
让我们把开发一个数据仓库与建造一个真正的房屋进行比较。你如何建造一幢300万美元的大厦呢?更不用说建造一间10万美元的房子了。你要有蓝图、图纸、技术规范、和在多个层次细节上显示这个房子将如何进行建造的标准。当然,针对房子的各种子系统要有不同版本的蓝图,如管道工程、电气、暖通空调系统(HVAC)、通信、和空间。针对所有的家用的设备也有相应的标准,包括插头、灯具、卫生洁具、门的尺寸等。
对于数据仓库,架构是对数据仓库的元素和服务的一种描述,用具体细节说明各种组件如何组合在一起,和随着时间的推移系统将如何地发展。就像这房子的比喻,数据仓库架构是一套文件、计划、模型、图纸和规范,针对每个关键的组件区域有独立的分区,并且足够详细到让专业技术人员可以实施它们。
这并是一个需求文件。需求文件说明架构需要做些什么。数据仓库架构也不是一个项目计划或任务清单;它说明数据仓库是什么,而不是怎么去做或为什么去做。
一个数据仓库的开发也并不容易,因为相对于房屋的5000年建筑史,我们发展数据仓库系统只有20年的时间。因此,我们的标准还不多,工具和技术正在快速发展,关于我们已经拥有数据仓库系统的档案还很少,而且数据仓库的术语还有很大的出入。
所以,虽然开发一个架构是困难的,但它也是可能的,并且又是至关重要的。首先,最主要的是,架构应该受业务的驱动。如果你的要求是每夜进行更新,这一要求就该包含在架构内,而你必须弄清实现你目标的技术需求。下面是一些业务需求的例子,和针对每种需求的综合技术考量:
●每夜更新――充足的数据准备能力
●全球可用性—平行或分布式服务器
●顾客层次分析――大型服务器
●新数据源――带有支持元数据的灵活工具
●可靠性――工作的控制功能
关键组件区域
一个完整的数据仓库架构包括数据和技术因素。架构可以被分为三个主要区域。首先,是基于业务流程的数据架构。其次是基础设施,包括硬件、网络、操作系统和电脑。最后,是技术区域,包含用户所需的决策制定的技术以及它们的支持结构。对这些区域将在下文分小节进行详述。
●数据架构
如上所述,在整体数据仓库架构中的数据架构部分是受业务流程所驱动的。例如,在一个制造环境里,数据模型可能包括订单、装运和帐单。每一个区域都依据一套不同的维度。但是在数据模型中对相交维度的定义必须相同。所以相同数据项应该有同样的结构和内容,并有一个创建和维护的单一流程。
当你完成一个数据仓库架构并呈现数据给你的用户,就要做出对工具的选择,但随着需求的设定,选择就会变窄。例如,产品的功能开始融合,就像多维联机分析处理(MOLAP)和关系型联机分析处理(ROLAP)。如果停留在你建造的立方体,多维联机分析处理(MOLAP)便可以了。它速度快又允许灵活的查询――在立方体的范围内。它的缺点是规模(整体上和一个维度内)、设计的局限性(受立方体结构所限)、需要一个专有的数据库。关系型联机分析处理(ROLAP)是多维联机分析处理(MOLAP)的一种替代方案,它克服了多维联机分析处理(MOLAP)的这些缺点。通常,混合联机处理(HOLAP)更受欢迎,它允许一部分数据存储在维联机分析处理(MOLAP)中,另一部分数据存储在关系型联机分析处理(ROLAP)中,折衷了各自的长处。
●基础设施架构
对硬件及数据库选择的问题在于其大小、扩展性和灵活性。在大约80%的数据仓库项目中,这并不困难,大多数企业有足够的力量来应对他们的需要。
在网络、检查数据来源、数据仓库准备区、以及它们之间的任何设施方面,要确保有足够的带宽用于数据的移动。
●技术架构
技术架构被元数据目录所驱动。一切都应该受元数据所驱动。服务应该依从表格所需的参数,而不是它们的硬编码。技术架构的一个重要组件是ETL(提取、转换和加载)流程,它涵盖了五个主要区域:
●提取-数据来自多种数据源并且种类繁多。在这个区域如果有数据的应用时必须考虑对它的压缩和加密处理。
●转换-数据转换包括代理主键的管理、整合、去标准化、清洗、转换、合并和审计。
●加载-加载通常是利用加载最优化和对整个加载周期的支持对多种目标进行加载。
●安全-管理员访问和数据加密的策略。
●元件控制--它包括元件的定义、元件安排(时间和事件)、监控、登录、异常处理、错误处理和通知。
数据准备区需要能够从多种数据源提取数据,如MVS、ORACLE、VM和其它,所以当你选择产品时要具体。它必须将数据进行压缩和加密、转化、加载(可能对多个目标)和安全处理。此外,数据准备区的活动要能够自动化进行。不同的供应商的产品做不同的事情,所以大多数企业将需要使用多种产品。
一个监控数据仓库使用的系统对查询的采集、使用的跟踪是有价值的,而且也有助于性能的调整。性能优化包括通过“管理者”工具进行的成本估算,而且应包括即时查询的时间表。有工具能够提供查询管理服务。可使用工具来针对这些和其它相关任务,如对前台的基于服务器的查询管理和来自于多种数据源的数据。也有工具可用于报表、连通性和基础设施管理。最后,数据访问块应包括报表的服务(如发布和订阅),还应包括报表库,调度程序和分布管理员。
关于元数据
在数据仓库流程中数据的创建和管理要遵循以下的“步骤”:
●数据仓库模型
●数据源的定义
●表的定义
●数据源到目标的映射
●映射和转换信息
●物理信息(表格空间,等)
●提取数据
●转移数据
●加载统计
●业务描述
●查询请求
●数据本身
●查询统计
为显示元数据的重要性,上述的步骤列表中只有三步包括了“真正”的数据-7、8和12。其他的一切都是元数据,而且整个数据仓库流程都依赖于它。元数据目录的专业技术要素包括:
●业务规则--包括定义、推导、相关项目、验证、和层次结构信息(版本、日期等。)
●转移/转换信息--源/目的地的信息,以及DDL(数据类型、名称等等。)
●操作信息--数据加载的工作时间表、依存性、通知和信息的可靠性(比如主机的重定向和加载平衡)。
●特定工具的信息--图形显示信息和特殊功能的支持。
●安全规则--认证和授权。
建立架构
在开发技术架构模型前,要先起草一份架构需求的文件。然后将每一项业务需求计划包含到它的架构中。根据架构的区域对这些内容进行分组(远程访问、数据准备、数据访问工具等)。了解它如何于其它区域相适应。采集区域的定义及其内容。最后提炼和形成模型的文件。
我们认识到开发一个数据仓库架构是困难的,因此要有一个周密细致的规划。但ZACHMAN框架又超出了大多数企业对数据仓库的需要,所以建议使用一个合理的折衷方案,它由四层流程所组成:业务需求、技术架构、标准和工具。
业务需求本质上驱动着架构,所以要对业务经理、分析师、高级用户进行访谈。从你的访谈中寻找主要的业务问题,以及企业战略、发展方向、挫折、业务流程、时间、可用性、业绩预期的指标。将它们一一妥善归档。
从IT的角度来看,跟现有的数据仓库/决策支持系统(DSS)的支持人员、联机分析处理(OLTP)应用组成员、数据库管理员们(DBA);以及网络、操作系统和桌面支持人员进行讨论。也要与架构师和专业规划人员进行探讨。你应该从这些讨论中得知他们从IT的观点考虑数据仓库的意见。从中了解是否有现存的构架文件、IT原则、标准文件、企业数据中心等。
关于数据仓库并没有太多现存的标准,但对于许多组件来说是有标准的。下面是一些需要牢记的标准:
●中间设备--开放数据库连接(ODBC)、对象链接与嵌入(OLE)、对象链接与嵌入数据库(OLEDB)、数据通信设备(DCE)、对象请求代理(ORB)和数据库编程(JDBC)
●数据库连接--ODBC,JDBC,OLEDB,和其它。
●数据管理--ANSISQL和文件传输协议(FTP)
●网络访问--数据通信设备(DCE)、域名服务器(DNS)、和轻量目标访问协议(LDAP)
无论它们支持的是哪种标准,主流的数据仓库工具都受元数据所驱动。然而,它们通常并不互相共享元数据而且在开放性上也所有不同。所以,要仔细研究和购买工具。架构师是你选择适当工具的向导。
一个数据仓库架构需要具体到怎样的程度呢?这个问题要问的是:它有足够的信息可以让一个有能力的团队来建立一个满足业务需求的数据仓库吗?至于它要花多长时间,随着更多的人加入到它的开发中来(即:它变成了“复杂的技术策略”)和生成的系统需要变得更复杂(即"复杂的功能”),架构的完成会呈指数倍的发展。
像数据仓库中几乎所有的事情一样,一个迭代进程是最好的。你不能一次做完所有的事情因为它太大了,而且业务不能等。同时,数据仓库的市场还没有完备。所以从流程中影响大、高价值部分开始,然后,利用你的成功去带动另外的阶段。
总结:
综上所述,建立一个数据仓库架构的好处如下:
●提供了一个组织结构的框架--架构对什么是单独的组件、如何将它们组装在一起、谁拥有什么部分以及优先次序的问题划出了界线。
●提高了灵活性和维护性--让你能快速加入新的数据来源,接口标准允许即插即用,模型和元数据允许影响分析和单点的变化。
●更快的开发和再利用--数据仓库开发者更能够快速了解数据仓库流程、数据库内容和业务规则。
●管理和通信的工具--定义未来方向和项目范围,确定职务和职责、对供应商传达需求。
●协调多项任务同时进行——多种、相对独立的工作有机会成功地集合。
我们建议公司对准业务需求而又要务实一些。时刻跟上数据仓库产业的进步是很重要的。最后,请记住架构总是存在的:或隐性或具体的,或无计划或计划内的。经验证明,有一个计划内和具体的架构会使数据仓库与商业智能项目有更多的成功机会。