如同选择汽车一样,车内装修、音响、座椅固然重要,但是发动机性能、底盘坚固性等肉眼看不见的东西恐怕对产品质量更具有决定性。可惜的是,研究数据仓库的一些人把注意力集中在一些非常漂亮、非常吸引人的前端程序上。其实,选择一个正确的核心平台更加重要,因为这将直接影响到整个系统能否投产和长期发展。那么,如何评测这些隐藏在后台的环节呢?
现在,有很多人对数据仓库基本框架结构与概念的认识存在不少误解,往往把注意力集中在一些非常漂亮、非常吸引人的前端程序如OLAP分析工具、数据挖掘工具上,忽视了如何进行数据的ETL处理、如何组织与存储数据以及如何进行系统运行的自动化处理等重要环节。这些内容大都隐藏在后台,看上去不是那么有趣和吸引人,但它们却是整个系统的基础设施,并且将直接影响到整个系统能否投产和长期发展,影响系统的实用性、扩展能力、整体拥有成本TCO等等。因此,从一开始就选择一个正确的核心平台显得非常重要。
查询,是数据仓库的主要应用之一。从查询本身的特征来看,数据仓库中的复杂查询可以分成两种类型:一种是预先知道的,如定期的业务报表;另一种则是事先未知的,称为动态查询(Ad-Hoc Query)。基于这些因素,国际著名的TPC(Transaction Processing Performance Council)组织(http://www.tpc.org)于1999年2月推出了分别针对系统动态查询处理能力的TPC-H性能测试规范(H代表 Ad-Hoc)和复杂业务报表处理能力的TPC-R性能测试规范(R代表Business Reporting)。企业用户可以在TPC网站上下载许多数据仓库产品的性能测试报告,这有助于在系统选型的时候比较各种数据仓库产品的优劣。
性能测试报告如何用?
在TPC-H/TPC-R的测试结果中,除了综合性能指标和性价比指标外,还有许多其它的指标如数据加载时间、数据容量与磁盘空间的比例等。许多厂商的销售人员为了推销其产品,往往会过份强调对其产品比较有利的指标。作为用户在使用这些测试结果时,一定要全面考察,明确哪些因素对自己才是最重要的。在使用TPC-H/TPC-R的测试结果时,建议一定要下载TPC网站上相应的详细测试报告。除了考察性能指标QphH与QphR以及性价比指标 Price/QphH与Price/QphR外,还需要仔细研究整个测试过程,下面从几个方面举例加以说明。
考察测试环境的建立过程
考察测试环境的建立过程非常重要,因为它从一个侧面反映了系统的可管理性和实用性。如果测试环境的建立过程非常复杂,说明系统实际运行后的管理也很复杂,需要较多人力成本很高的熟练的数据库管理员和系统管理员,这对企业的财力是个沉重的负担。
性价比指标
在引用性价比指标时,需要注意提供测试系统价格的条件。有的厂商为了突出其性价比指标,对测试系统提供较大的折扣,而获得这种折扣的条件只有在详细测试报告中才会加以说明。很重要的一点是,用于计算性价比指标的测试系统价格是各厂商在美国的报价,与这些系统在中国的报价有很大的差别。
检查测试数据的加载过程
数据的加载对一个数据仓库系统而言非常重要,因为它里面的数据不是由系统自己产生的,而是从其它源系统中经过ETL流程加载进来的。从TPC的测试来看,数据的加载按顺序分成这样几个环节:
1、产生数据
2、切分数据到各并行处理结点
3、对数据排序确定加载顺序
4、创建表
5、加载数据到数据库
6、创建索引
7、收集表和索引的统计信息
TPC组织在统计数据加载时间时从第四步即表的创建开始,前面三步属于预处理,不计入真正的数据加载时间。
但对于实际系统来说,我们需要考虑的是如何在允许的时间内,把源系统产生的数据方便并且迅速地加载到数据仓库中,所有的数据预处理过程都将包含在内。这也是实际系统与测试系统较大的区别之一。
可以供货的日期
在测试报告中,除了说明完成测试的日期外,还会说明系统可以供货的日期。一般来说,由于对系统进行各种优化以及技术的不断更新等原因,后来进行测试的数据仓库系统一般都会比以前的更好。
测试系统与厂商实际建议系统的差别
用户在引用TPC-H/TPC-R的结果时,应该注意测试系统与厂商实际建议系统的差别。如果连基本平台(例如在UNIX上测试,建议系统却是基于 NT)都不一样,则根本不具有可比性。另外,作为用户还应该特别关注一点,是否有与测试系统配置类似的成功案例;如果没有的话,进行实际实施时的风险相对就会比较高。
分析系统的可扩展性
正如前面所说,数据仓库中的数据量增长很快,特别是投产初期的增长速度更加显著。事实上,除了数据量的增加外,查询复杂度的增加、并发用户数的增加等都要求数据仓库系统的可扩展能力很强。
我们在分析一些TPC-H/TPC-R的测试报告时,发现同一个厂商在不同级别的测试环境中,使用了不同的硬件平台、不同的数据库系统或者不同的操作系统,这样就很难说明其可扩展能力。另外,有些测试系统的配置已经到了极限,没有任何可以扩展的空间,在引用其结果时也应加以注意。
找到适合自己的标准
当需要考察数据仓库系统性能时,除了参照TPC-H/TPC-R的测试结果外,建议用户根据自己的实际情况设计相应的性能测试标准。需要考虑的指标和因素应该在测试开始之前就明确定义,并且确定各项指标对自己的优先级或者重要程度。
1、推敲进行测试前的计划、测试执行的过程与所花的时间,从这一点可以看出厂商在项目管理与实施方面的经验。
2、测试时尽量使用真实或者接近真实的数据进行测试。有时候客户使用很小的数据集通过自连接等手段来生成很大规模的测试数据,使得数据的冗余非常高。有一些索引技术对这种分布规律的数据具有非常好的效果。但由于数据分布与实际情况相去甚远,测试结果也很难反映真正的效果。
3、除了考察系统处理预定义查询的性能外,还应评估系统处理动态查询的能力。可以在测试时临时给出一些动态查询,测试厂商来不及也不允许对系统进行优化。另外,在测试时应该尽量使用能够代表真正业务问题的复杂查询,特别是那些以前无法得到答案的复杂业务问题,这样能够对将来可以获得的实际业务价值与回报有比较感性的认识和把握。
4、系统投入生产的可能性。是否能与现有生产环境进行连接,并从现有生产环境中抽取数据;从生产环境抽取数据并加载到数据仓库系统的性能如何,是否满足日常运作的要求;与现有的或准备使用的前台应用工具的连接性如何,用户信息存取是否简单等等。
5、系统是否容易使用与管理。系统能够提供什么样的工具进行管理、使用是否方便、需要管理哪些内容(空间分配、负载管理、是否存在第三方厂商的工具来进行系统管理等方面。
6、系统的线性扩展能力:在测试时主要可以从这样几方面来考虑系统的线性扩展能力:当数据量增加或者并发用户数增加时,同一个查询的响应时间线性增加而不至于饱和;当系统配置增加时,同一个查询的响应时间成线性比例缩短。
本文作者为NCR Teradata数据仓库事业部 中国区技术总监