【IT168 技术文档】近几年来,国内许多大型企业纷纷开始规划或者实施基于数据仓库技术的决策支持系统、综合管理信息系统等各类决策分析平台。其中有很多企业的数据仓库系统是基于DB2数据库引擎的,但在数据仓库项目的实施过程中,对于如何构建高性能数据仓库仍然存在误区。有时候,为了提高数据仓库的性能,把大部分投资集中于购买高性能的主机,而忽略了CPU、内存、网络带宽、磁盘存储系统之间的平衡,结果建成了一个头大身子小不合理的系统;或者是购买了高性能的主机和高性能的存储系统,而没有很好的根据数据仓库系统的特点和数据仓库软件产品的特点来配置系统,因而没有达到预期的性能。希望本文的讨论能够对大家构建一个均衡的高性能、高性价比的数据仓库系统有所帮助。
数据仓库的特点:
数据仓库管理大量的数据;在数据仓库技术出现以前,数据的容量是以MB和GB来度量的。在数据仓库技术出现以后,原先很大的数据量就显得微不足道了,当前数据仓库的容量基本是以TB(Terabytes)来衡量,有些企业像电信行业甚至到了PB(Petabytes)级别;这是因为数据仓库要求在同一个数据库中集成整个企业的数据,包括存储从细节数据到高度汇总的混合粒度和历史的数据。因此数据量的问题是如此重要,以至于影响到数据仓库技术的各个方面。而数据仓库建立的目的是为了支持整个企业的运营决策的,因而整个企业的各个部门的大量运营分析及决策人员会大量并发的访问数据仓库。因此,数据仓库负载主要是SQL查询处理,大部分SQL操作需要扫描大量的数据,有时候一个SQL查询会关联好几个表,甚至会存在几个非常大的表做关联操作的情况,因此数据仓库系统对磁盘存储系统的I/O性能要求很高。
因此我们在构建数据仓库系统时要充分考虑系统的性能,做到磁盘I/O,内存、处理器、网络带宽之间的平衡来提高整个数据仓库系统的吞吐量,使数据仓库系统提供非常好的的性能。
而影响数据仓库系统性能最重要的因素包括,数据仓库引擎的体系结构是否支持大数据量的并发操作,系统的软硬件性能指标、特点能否很好的配合,以及保证系统能否实现线性扩展。当然数据在数据库中的存储方式、索引及应用的设计等也会在一定的范围内影响数据仓库的性能。
下面我们以DB2为例来介绍,怎样合理的配置数据仓库系统。
DB2数据库分区技术:
一个DB2数据库包括一个或者多个数据库分区(Partition)。每个分区在本质上就是一个小型的数据库:拥有且只拥有自己的数据、日志、锁以及其它的组成数据库的基本要素。所以,DB2多分区数据库也称为是基于非共享(Share Nothing)或者海量并行处理(MPP)构架的数据库。
在一些OLTP和ERP的环境中,由于数据量相对小,而且每次只是查询很少比例的数据。而在数据量很大,要求针对大量数据的并发查询的环境,比如数据仓库的环境,就需要多分区数据库。
DB2基于分区的、非共享的结构的好处是:
减少了对共享资源(内存,I/O通道,存储)的访问冲突,提高并行度;
分区内(SMP)并行和分区间(MPP)并行的完美结合。
在一个多分区数据库环境中,DB2管理多个分区,对于用户和应用程序而言,只是一个数据库。换句话说,一旦物理数据建立起来,用户和应用程序不会意识到是在访问多分区数据库。
分区数据库如下图:
在SMP的服务器上,可以建立非共享结构的多分区的数据库结构。如下图。在一个操作系统中多个处理器,多个数据库分区。
在MPP的环境中建立非共享结构的多分区的数据库结构,见下图。每个操作系统中,单个处理器,单个数据库分区。
利用节点组可以来实现数据灵活布局,通过设定不同的节点组,来把小表放置在单数据库分区上,而把大表放在尽量多的数据库分区上,来提高性能和吞吐量。
节点组的管理非常简单,甚至可以通过编辑DB2NODES.CFG文件,就可以完成节点组的配置。
DB2 UDB提供了先进的“哈希(HASH)算法”映射数据库的每一条记录到特定的数据库分区中。“哈希算法”使用表中的一列(或一组列)作为分区关键字,得到0至4095的数值。分区图定义了为4096个值中的每一个值分配的特定的数据库分区。
DB2 BCU概念:
BCU (Balanced Configuration Concept),是指把处理器、内存、存储和DB2数据库的Partition(分区)、配置参数等合在一起,作为一个可扩展的基本建设单元。通过多个BCU复制生成大型系统。
BCU是最小的、可复制的硬件和软件的组合。针对BI系统,BCU保证了基础构架上扩展性,提供了磁盘IO,内存、处理器、网络的优异扩展性能。如下图:
一般的,在计算机系统中都会有瓶颈存在。比如一个服务器可以驱动峰值为28800IOs/sec的存储系统,然而配置的存储子系统只能达到14440IOs/sec。 那么服务器处理IO要求高的负荷时,最多将有50%的时间处于IO等待。所以,合适比例的HW/SW组织到一起,是BCU成功的关键。
通过对客户现有的BI系统配置经验、平均负荷分析,以及组成BCU的各个部分的专家工作下,考虑各个部分之间的平衡,同时也考虑一定的性价比等因素,形成BCU。这样的BCU在保证性能的前提下,提供了高的性价比。
BCU和数据库分区:
通过上面所描述,我们知道数据库的各种并行,包括分区间并行、分区内并行都是DB2完全控制的。同时DB2的非共享结构提供了的针对数据仓库的高性能、高扩展性(包括水平扩展、垂直扩展)的能力。架构设计人员和实施人员应当理解DB2并行数据库构架,特别是性能和扩展性,才能完成好数据仓库的物理设计和实施,并充分利用这些能力。
而通过BCU来构建企业数据仓库的最大意义是它使得数据仓库的基本设计和实施都可以标准化。
在BCU之下,还有一个BPU的概念。所谓BPU,是一个逻辑的概念,是指服务于一个DB2数据库分区所需的资源。BPU在进行数据仓库的容量规划时,非常有用。比如:假定把一个BPU(一个DB2的数据库分区)配置为可以支持250G的裸数据,假定数据仓库的容量规划为8TB裸数据,那么整个数据仓库将需要32个BPU。利用这个数据可以推算出相应的BCU(8个BPU一个BCU),即需要4个BCU。由于DB2在不同的数据库分区之间平均分配数据和资源,所以从处理器、内存、I/O等的角度看,确定了BPU的系统需求,那么就可以利用这个信息来计算整个数据库的硬件的配置。
BPU在系统的设计和实施阶段也非常有用。可以在BPU层次来设计物理硬件、存储、数据库参数配置等,然后把该BPU的配置复制到整个BCU。这样就大大简化了系统的初始系统设计、配置,管理、维护,未来的系统升级等等。
BPU和BCU的关系,可以由下图表示出来。
根据业务和IT架构以及管理的需要,BCU可以映射到不同的物理服务器,例如大型SMP服务器或小型SMP服务器集群。
数据仓库系统非常好的配置方案:
BCU对于新的数据仓库项目的规划来说是非常重要的,同样对于已经建设好的数据仓库项目,如果需要对数据仓库进行扩容,那么在扩容的时候应用BCP的方法论来对系统进行改造,对于能够维持或改进整个系统的IO性能,提高性能是非常重要的。IBM根据实验结果给出了非常好的配置方面的参考。
具体的说按照上面BCU方法论,我们可以把一台p5-575配置为一个BCU,根据IO吞吐量的不同可以配置为BCU#1或BCU#2,与此对应的磁盘存储阵列、光纤卡等数量也会相应的改变。
按照BCU#1的配置,一台p5-575与一台DS4500磁盘存储阵列和4快光纤卡可以组成一个BCU,这样的配置是:
一台p5-575服务器可以划分为8个BPU,这样每个BPU就会对应一个CPU,并且每个BPU至少需要4GB的内存;
IO配置是每个BPU大约拥有10快磁盘和0.5块2G的光纤卡,这样的配置保证了磁盘的IO与光纤卡带宽的匹配。
按照BCU#2的配置,一台p5-575与两台DS4500磁盘存储阵列和8快光纤卡可以组成一个BCU,这样的配置是:
一台p5-575服务器可以划分为8个BPU,这样每个BPU就会对应一个CPU,并且每个BPU至少需要4GB的内存;
IO配置是每个BPU大约拥有20快磁盘和1块2G的光纤卡,这样的配置也保证了磁盘的IO与光纤卡带宽的匹配。
总结:本文论述了IBM关于数据仓库系统配置非常好的实践BCU的概念和方法论,并给出了具体的配置方案,供我们在数据仓库规划或扩容时参考。
关于作者:安伟 来自IBM中国软件部,在信息技术领域超过十年的工作经验。从事过数个电信、银行等行业数据仓库项目的规划、设计以及应用开发等完整的数据仓库项目实施。在应用架构设计、数据库、数据仓库、数据分析、数据挖掘等方面具有丰富的经验。
目前负责IBM DB2数据库软件和商业智能解决方案技术支持工作。