技术开发 频道

Tim Vincent:DB2的技术创新与实践

【IT168 技术文章】Tim Vincent:大家好。我从1991年开始就做DB2的研究了,最初是做DB2数据库的研究,这是我今年第二次来北京,我在DB2方面有不少的经验,今天非常高兴有机会跟大家介绍一下我们这个产品的架构、种类,以及我对未来的展望。

  首先介绍一下DB2的结构。

  在这个里面我们要看一下这个架构里面的一些简单介绍。我们为什么开发这个产品。首先介绍一下TCO,这是很重要的问题,我们开发的一些创新技术对于DB2非常重要。第二点我要谈一下分区分区越来越重要,因为我们的数据越来越多,同时对于I/O管理也是非常重要的,我们怎么样尽量降低I/O。然后我介绍一下XML,我们为什么开发XML呢?我们当初开发的时候是希望达到什么样的好处。另外我还要介绍一下我们的客户在XML得到了什么好处。

  现在开始我给大家介绍另外一个问题。现在人们在建立越来越的数据库,他们把很多数据放在同一个地方,希望能够帮助他们商务流程做出及时的决定。现在需要有更多的数据仓库的管理。他们发现工作负载发生了爆炸,所以必须要对工作负载进行管理,因为在传统的数据库本来可以支持传统的工作负载,现在发展了以后出现了很多新问题,现在系统越来越复杂、数据越来越多,工作负载爆炸性的增长,怎么样管理工作负载变得非常重要。

  下面我要介绍一下我们的一些非常好的实践,我们的压缩,DB2融合了很多的技术,有很多的技术当中都使用了很多不同的方式。有很多工作都是我们在非常好的实践中付出的努力,最后得到了回报。这里我给大家举例一个压缩技术。还有我们产品的亮点,比如说DB2 9.5,它可以利用给Linux、Unix和window,另外还有data Studio。

  首先介绍一下DB2的架构。

  最初1991年开始做DB2。当时有一个发展趋势,工作系统中工作越来越多,怎么处理越来越多的工作负荷呢?我们采用了并行的机制,我们可以支持SQL和视频程序,我们有分区内与分区间的并行。利用SMP通过多核的架构。同时对于SQL有查询重写功能。在查询内的并行,是经常在数据仓库中需要使用的。这个技术可以使得你的查询可以在不同计算机上实现并行。另外一些实用程序也可以支持并行,你可以使用同样架构在不同计算机。

  利用SMP,通常是指查询内的一种并行。所以Linux和Unix中我们通常通过操作系统的线程和进程利用所有的CPU,同时我们可以使得通过并行对于SMP进行最好的使用。我们发行了一个TPCC的基准,这个基准是衡量利用效果的一个标准。(图)对于内存的大量使用,这也是非常重要的技术就是缓冲池技术,我们会使用页面储存方式,它使得我们的数据和I/O能够有一个路线图。它可以把我们连接到储存的页面,在储存的页面上可以使用XML,后来我们也可以用以系统操作为基础的一个文件。现在这个文件系统是可以用PPU的文件系统,同时还有一个数据库管理工作,可以通过文件系统对于桌面进行管理,所以我们可以支持I/O、并行的I/O,还可以支持数据的分割和自动化智能分割,我们还可以做大块的I/0。如果回到文件系统话题,我们现在更多地使用直接的I/O,它可以使得我们可以分散和收集I/O的文件系统。为什么我们不是使用一个文件系统的缓冲,缓冲池已经够我们做文件的缓冲区。我们可以更快地把文件拷贝到缓冲池当中去。

  (图)如果看一下我们整个的架构,我们有一个平衡的数据仓库,它们每一个分区都有自己的资源,它们有自己的分区,不同的分区是逻辑上的,同时也有物理的特性。你在一台机器上可以进行多个不同的逻辑分区,每个分区有自己的缓冲池,有自己的逻辑的管理,还有自己的磁盘。这种技术可以避免对可伸缩性常见的限制,我们不需要进行分步式的管理或者缓冲间的一致性的谐一。所以,我们这种分区是有很好的可扩展性、可伸缩性,无论是多大TB的容量,来分区都是没有问题的。

  这里还有一种分区,这种分区叫做“快速通信管理器”,我们有管理,还有信息流这种方面的价值。在优化方面,我们对不同的共同操作可以进行一些优化。另外这也使得它可以在跨节点运行任何东西,非常有效、非常快。我们来看客户机这一块,有四大类:T2、T4,JAVA J2BC我们是支持,它是PCL的,现在还有Pure它可以使SQL提升,使得你在JAVA方面可以很好地开发。当我谈到data Studio我会给大家讲怎么样使用Query能够进行提升。我们在这块会有通讯的协议。它和数据库进行连接,并且它在连接性方面有很好的表现。在代理方面,我们支持整个运行的环境,可以在查询和检测内部进行一些处理。当处理这些数据的时候它们是到了缓冲池,代理从缓冲池获取数据,然后进行计算。其中一个代理可以从磁盘里读取数据,我们有一个预提取器,可以提前提取数据,这样可以得到非同步的I/O,可以得到很好的CPU性能,所以要确保I/O是不同步的。

  另外我们还有一些页面的清理器,它可以对相关的页面进行清除。在日志系统里面还有相关的日志记录系统。这是80年代提出的一项技术。这是整个数据库里非常核心的一项重要技术。还有“时锁检测机”,某一个交易进行的时候,这个交易会自动锁定,在某一方面,锁定就会转入日志里面去,你在很多时候会碰到瓶颈的情况,在很多基准测试里面,比如说有400-600万的产品,你在锁和日志相关来讲,可以看到“时针检测器”可以大大提升处理速度,特别对“时锁”情况进行很好的探索。

  下面我们谈一些技术亮点。

  从拥有总成本来看,我们和很多CIO进行了谈判。CIO从各个方面来讲,从成本模型来看,70%的CIO的预算是投入在人的方面,并不是在硬件方面。当我们说到TCO的时候,我们主要要减少人力成本,因为在DB2的操作方面和维护方面会加大很大的成本,所以我们需要这些技术能够得到最大限度的利用。所以我们需要一种可以自我管理的数据库,它们有自动平衡的资源、自动的存储。而且我们的TCO的时间应该花在管理业务方面,而不是在管理数据方面,而且他要有更多、更高的管理技能,使它能够进行自动的优化。

  自适应自调优内存管理。它有自己的缓冲区,这对CPU来讲是非常重要的,这是做优化最重要的一个方面。另外排序也是非常重要的,它可以把你目前的I/O进行排序,还有“锁列表”,它使用的MB参数,然后进行数据内存的容量。在这个方面进行一些控制的逻辑,然后使得它可以快速的适应,重新分配的工作负载和变化。缓冲区进行自动的平衡。这样使CPU整个的负荷进行重新的自动平衡,这样就可以节省很大的成本。所以你必须注意到你的工作负荷的变化,不需要人工的进行调整。

  下面用一些图表给大家讲解一下,Query是一个索引系统,有时候撤销了,这个时候整个表空间就会有很大的提升,I/O就会提升,所以如果有一个自适应调优系统,系统可以自行调整,得到更高的内存性能。

  我们开始引导了自调优技术的时候,开始把它用在一个比较小的系统里面。我们工程师们在一个月、两个月后加入了更多的系统,我们进行相同的配置,我们把它变成基准调优的配置,在一个小时整个STIM不仅得到了更优的性能,而且比以前数据好的成绩还会更好,而且降低了整体的成本。

  自动存储管理,主要目标是把成本从管理数据、管理存储转变到对信息的管理。

  分区的概念。对于数据分区中的问题,你可以分成多少个维,比如说一个典型的TP工作负载来讲,你会有一个销售,某一个地区的数据,如果在两个索引里进行检索你会发现有一些问题。比如说西北区进行检索,在这块是非常有效的,因为在这块你是线性检索,如果你是用年份的检索,年份的数据并没有变成集群,这样它是混乱的,如果在I/O里进行线性操作,会有很大的负荷。怎样解决这样的问题呢?我们有一个多维集群技术。这是DB2里区别于其他数据库的很重要的一点,我们把它分成不同的盘区,在所有感兴趣的维上有相同的值。这些值会进行相关的共同的存储。你把它在这个维里,放着相同性质或者逻辑上有联系的群,每一个维上我们把数据进行集群。比如说区域检索或者年份检索的数据,我们放在一个单一的MDC的块中,每一块是线性的,所有和西北区相关的方面都放在MDC块中,如果进行查询不需要有很大的I/O,很快可以得到查询结果,而且它是非同步的线性I/O。如果同样查年份的话,会有这样一种机制,可以把你整个数据进行多维集群,能够提高很好的I/O,得到很好的效果。

  我们有一些块的技术,我们有很好的深度压缩,同时使得你每个快的变得很小,而且每个页面有非常快速的显示。我们把这些技术和其他分区结合在一起,我们可以发现我们会有分布、分区、集群。首先要有一个分布,ID通过这种范围进行分区,我们就会有一种集群,这种集群的分区使得,比如说2月份到9月份进行日期的分区,然后对它相关的、具体的地区进行分区,同时对各种不同的产品,在MDC在底部能够进行。所以我们分成不同级别的分级,而且实现I/O很好有效率的管理。

  当我们看XML的时候。最初我们开发的时候有一个决策,我们最后决定要做的是希望能够以客户的需求为导向,为客户提供一整套的解决方案。XML出现的过程中,不仅是一种数据的格式,而且是一种数据的转换格式。当时我们所做的工作是把我们所做的工作,使得客户对于语言和编程模型知识的需求更相关。第二点,它是很容易改变的。所以我们谈到商务的最优化,意思就是必须能够非常灵活的应对商务变化,XML允许你有这样的方式,它非常符合你的要求。所以XML使得你的成本也可以降低。我们当时在推出XML的时候,我们行业当中有其他的一些模式,我们有一个客户当时他们想用XPML做一个数据库,其他的数据库要能够利用这个数据库,这对于XML来讲是非常容易做的。所以当时我们向这个客户推荐我们的XML,他们后来发现我们的XML非常好,所以他们开始使用我们的XML,这说明XML的性能优于其他的同类产品。

  (图)当你把一个信息输入到XML里面以后,我们是利用XML对它进行分级,在这之后,就可以把它变成具有等级性、具有分类的一种数据,它不再是没有任何规律的数据。前面我们提到了缓冲池、并行机制,所以我们采用的XML是最优化的格式。其他的一些应用,比如我们把一个XML放进一个日志当中,或者把XML放在一些管理软件的桌面上,我们这个方法不仅仅是独特的,而且还可以提供其他同类产品所提供的所有的好处。我们这里有XML的指数、XML的相关模型,所以你可以有一个表格,在这个表格当中,一个是常见关系表格,一个是XML的表格,你可以对它进行比较,XML可以对这个数据进行整合、核对,可以使得你在DB2当中更加方便的使用。

  工作负载的管理。首先必须知道工作负载是什么?你的工作负载是多少?然后把工作负载回馈到商务流程当中。这里必须要对工作负载的属性进行了解。比如业务流程当中哪些更重要、哪些不重要,首先要进行分类。然后分清楚你的工作负载是什么。一旦定义了你的工作负载之后,你可以把工作负载分成服务类,你做一些私人的控制,服务类意思就是有一个主服务类、子分服务类,它是定位服务质量的元素,它可以对DB进行控制,同时可以使得对工作负载进行管理,这是你怎么样在系统当中控制资源。当你的工作负载和服务类已经确定之后就要做一个域值,这个域值是在整个数据库资源水平上进行域值,它有三种:一是预测性、二是反应性、三是并行式。你可以对于你实际执行时间进行一个域值,可以对同时进行活动的数量进行域值,有了阈值以后你可以做两件事情,如果超过域值可以自动停止工作,如果有错误查询或者恶意查询,可以对域值的方式对它进行限制,尽快地停止它。更加重要的是你可以对数据进行监测。然后把这个数据配给这些工作负载,使得它们之间能够更加相配。你通常会得到一个回馈的循环,在回馈当中你可以对它们进行配置。

  下面我跟大家讲一下我们DB2的非常好的实践。DB2有很强大的技术能力,它是正确的技术在正确的地方使用。所以必须对正确的任务、使用正确的DB2的技术。首先DB2的开发是我们开发人员实践者、使用者、客户和业务伙伴的共同努力。第二是围绕DB2端到端生命周期,我们会定义一组建议的非常好的实践,另外尽可能使非常好的实践适应业务流程。怎么样使用这样一些计划来非常好的实践呢,使得我们的业务流程得到管理和改善呢。

  深度压缩,这是我们的非常好的实践之一。说的简单一点,比如一个表格要进行压缩,所做的工作对这个表格进行静态字典的控制,通常它有一个字符串,在这个字符串当中进行压缩,我们可以把这个字符串在数据页面进行用其他符号进行代替,从而实现压缩。我们可以把它压缩到缓冲区里。压缩过程中还要对I/O进行压缩。压缩技术不仅仅是在储存方面能够为你节省很多,在I/O方面也可以节省很多。

  我们的客户是怎么想的。通过使用我们的IOPS,他们节省了50%。如果在I/O上能够节省,CPU的成本也会降低。

  生命周期管理。如果在数据仓库,数据提取和输入。怎么样管理新的压缩,怎么样在这个环境当中进行压缩。这都是我们所遇到的常见问题。我们现在看一下使用DB29和存储压缩的结果。我们通常对这个系统进行改善之后,DB2 9和行压缩减少了40%的写和60%的读。所以最大的表压缩,超过了50%。这是一个不断波动的线条(图),压缩过程中有不断的实时的最优化调整。我们在压缩数据业务面的时候,我们把输入到页面的数据压缩到20%。

  仓库压缩结果。我们这个客户是POC,从15.3TB压缩到7.9TB,表压缩率介于80%-85%之间,吞吐率提高了15%,查询响应时间减少了23%,这是非常大的SAP客户。

  CPU的数据。系统CPU从16.5%,减至12.3%。在压缩的时候,它的CPU的整体利用率,等待时间从23.9%减至5.7%,用户CPU从30.7%,增至53%,响应时间大量减少了。为什么用户CPU增加了,因为用户当中有更多的工作需要做,也就是说,在你同样的工作负载下你可以做更多的工作。

  总结一下非常好的实践。2008年我们提出21条实践,现在我们已经能够提供12条,另外还有一些非常好的实践正在被DB2的开发内化,并帮助我们确定DB2的技术方向。我们希望整个社区都能够了解。

  从产品角度来讲,说到DB2 9.5的关注点是可及性、性能和TCO(降低总拥有成本),它是HA和DRK的综合能力。其中有一个集群功能,我们还有另外一个系统可以管理这个集群管理器,这种管理是不可见的,但是可以降低管理的负担,并且改进我们的性能。我们还有其他的备份,在故障恢复和备份的效果,可以使得你的宕机时间降到最低。你可以自动进行压缩,自动创造字典,自动设置域值。

  我们刚才谈到阈值的模型,它可以防止恶意的访问。可以节省你的内存空间。从安全角度来说,因为现在越来越需要保密,所以在这种情况下我们需要有一种身份的认证。我们有三层的安全管理设施,在这个过程中,当你建立了一个数据库的时候,任何用户只有一个ID、只有一个身份,只有他才有权利,不同的ID有不同范围内的权限,如果是另外一个名字登陆,就不可能拥有他的使用范围和权限。所以在应用和数据层之间有很好的关联,可以使得你的身份可以从使用层到数据层,它是统一的。

  另外你还可以使用一些以Lable为基础的数据。这是非常有用的技术。从XML的角度来说我们是快速提高了XML的性能,它的事务处理性能提高了两倍。

  下面介绍一下Data Studio,这个数据工作室对于数据的生命周期进行管理和创新,可以提高整个数据生命周期所有组成部分的生产能力。在整个过程中都应当应用Data Studio,它可以使用管理和修改,同时还可以看到模式变化和控制。当我们回到前面所谓的纯查询的时候,我们的Data Studio是可以创造ID和JAVA的应用。当你使用一个查询的时候,比如JAVA当中你打如一个SQL的语句,它会把不同脚本的表格和信息都调出来,这是非常重要的功能,因为它可以把数据和应用结合起来。所以在这个过程中可以把开发时间减少50%,同时促进不同功能之间的协作。

  从监管角度来看你可以实时的分析,可以分析历史数据。有了Data Studio你可以有一个图像性的工具。在整个检索里面,以前没有用,你可以把没有用的检索去掉,这样可以使你的时间得到更好地使用。

  未来的展望。

  未来会有很好的发展,人们在进行业务的优化,很多实时的决定,我们想数据流概念可能会引起来,因为这块在整个系统的多核的技术,SID的价格会降下来,短期来讲是非常吸引人的,技术的组合对于我们整个的“数据库的应用会有发展。业务部门会有不同的要求,他们需要管理整个产品的生命周期,所以业务的耐久性需要增加,合规性也有更高的要求,对于公司来讲越来越重要。

  谢谢。
 

0
相关文章