云计算数据库的测试技术研究与应用

2013-08-10 03:41邱红飞李先绪黄春光
电信科学 2013年10期
关键词:测试环境数据仓库架构

邱红飞,李先绪,黄春光

(中国电信股份有限公司广东研究院 广州 510630)

1 引言

对于数据仓库而言,随着企业数据量的不断膨胀,存储成本不断增加,数据查询性能不断降低。增加存储,对性能已经没有明显的提升,却导致成本直线上升,目前技术体系已经不能满足要求,必须采取新的解决方案。

针对OLAP设计的云计算数据库,即具备云计算特征的数据仓库产品,可以很好地解决这个问题。首先是存储,云计算数据库使用shared-nothing架构,不会像shared-disk架构一样存储的I/O是瓶颈;其次是普通的服务器性能,已经跟不上数据的增长速度,考虑到造价和技术问题,将多台普通服务器综合在一起,从而用少量的金钱实现高性能机器的服务;再次是节点线性扩展的特性,由一个主节点协调各个节点的工作,将存储和查询的数据分布到各个节点的机器上,同时支持线性扩展。目前主流的数据仓库产品都采用具有这种特征的产品技术架构[1]。

TPC-H(商业智能计算测试)是数据仓库产品的重要测试标准之一,主要用来模拟真实的商业应用环境。TPC-H评估标准中的数据模型及数据量都不太符合电信OLAP应用要求,且在TPC网站上未查询到各厂商产品的TPC-H测试结果,因此其性能指标不能作为电信现网应用评估的参考标准。

本文旨在研究数据仓库产品的测试技术标准和评估方法,并通过对各种类型和商家的产品进行测试和评估,从而建立一套完整的数据仓库产品的测试标准,能够衡量不同类型数据仓库产品的处理能力。

2 数据库架构及测试区别

shared-nothing和shared-disk是两种主要的数据库技术架构,具体介绍如下。

(1)shared-nothing 架构

shared-nothing架构是一种分布式计算架构,每一个节点都是独立、自给的,物理资源不进行共享,整个系统都不存在单点竞争。最特别的是,所有节点都不互相共享内存及硬盘存储。基本架构如图1(a)所示,当相关数据量很大而应用代码并发量很小时,shared-nothing架构更加适合这种典型的OLAP应用。由于数据非共享,当节点出现故障时,其他节点要接管发生故障的节点的数据。其主要技术特点是大数据量处理、低并发、低可用性。目前Teradata、Greenplum、Netezza、Vertical等的数据仓库产品采用的都是这种技术架构[2]。

图1 数据库架构简析

shared-nothing架构还可以由廉价的普通PC和网络硬件搭建,Google、Amazon、Yahoo和 MSN都证明了这一点。据报道,Google的搜索支撑集群就是由上万台普通的PC充当shared-nothing架构的节点。

(2)shared-disk 架构

shared-disk架构的每个独立节点拥有自己的处理器和内存,这些节点接入同样的物理存储序列,结构如图1(b)所示。当应用代码量很大、高并发、相关数据量比较小时,shared-disk架构更加适合这种典型的OLTP应用。由于数据共享,当节点出现故障时,可以透明地切换到其他数据库节点运行作业。其主要特点是高并发、高可用性。目前Exadata提供的一种混合式的数据库架构,即shared-nothing与shared-disk架构的结合,能有效解决两者的冲突,吸取两种架构的长处,既可以满足OLTP的高并发、高可用特点,又可以满足OLAP的大数据量处理要求[2]。

云计算数据库与传统数据库的主要优势在可扩展性上,传统的数据仓库采用shared-disk架构,基于令牌传输模型的限制,已经不能靠增加节点数目及存储提高数据库的查询处理能力;shared-nothing架构基于数据切分策略,数据库的可扩展性随着节点增加。总的来说,sharednothing架构相比shared-disk架构,其出色的可扩展性占据了明显的优势,可以用更多的节点数支撑很大的数据量处理[1]。

在云计算数据库产品测试中,除了需要考虑产品的基准测试处理能力外,还需要测试验证其可扩展性。可扩展性测试重点考察数据仓库产品动态变更集群规模的能力,并测试系统性能是否随着集群节点的扩展而线性扩展。

3 测试技术标准设计

云计算数据库产品测试技术标准的目的是全面考察各类数据仓库产品的功能、性能、可靠性、可扩展性和稳定性等。功能测试是按照现网系统实际需求测试数据仓库产品需满足的功能点;性能测试在参考现网实际加载、查询和分析生产过程的基础上,进行逻辑抽象形成标准性能测试用例;可靠性测试重点考察数据仓库产品的故障恢复能力,通过模拟不同粒度和不同层面的故障,检验产品的高可用性;稳定性测试主要验证数据仓库产品在大业务量背景下持续稳定运行的能力。

3.1 性能测试部分

(1)复杂查询测试项

数据仓库在应用过程中经常进行大表关联和多表关联查询操作,但效率很低,不得不进行多表拆分处理,此性能对数据仓库来说非常重要,通过此项测试,可以评价数据库多表关联查询性能。多维表与事实表的关联,是数据仓库中经常用到的操作,该案例测试数据仓库中多维表与事实表间关联或连接的速度,提供多张大表(数量级包含亿级和千万级)和部分维表进行关联查询,主要测试案例包括以下3种:

·全表扫描;

·大表小表关联之后汇总,再关联大表;

·大表与多张小表关联。

(2)即席查询测试项

基于已有的数据模型,通常会有一些新的汇总或查询需求,数据库不会根据这些新的需求调整相关表的逻辑、物理设计,通常也不会创建新的数据库对象以适应新的需求。数据库平台对这种即席查询的处理能力,直接影响用户对系统的评价。

(3)数据导出测试项

数据仓库中存储了大量数据,经常需要按照指定格式导出生成文件,提供给外围系统,数据导出能力也是数据仓库的重要指标,通过数据导出测试,验证数据库的导出能力。

(4)数据加载测试项

数据仓库构建过程中经常需要把大量的数据文件加载到数据库中,在数据加载任务较多时,加载性能就会变得比较低下,通过此项测试,了解数据库在多任务并行加载情况下的效率,主要包括以下3种:

·存量数据装载能力;

·空表数据装载能力;

·增量数据装载能力。

(5)混合负载场景测试项

数据仓库在数据处理过程中,会同时进行装载、计算、查询、导出等综合操作,通过该项测试,验证数据仓库各项操作的综合处理性能。测试中数据仓库同时运行下列测试案例:

·多表并发加载;

·数据导出(多个文件,每个文件大小基本一致);

·复杂数据查询1(并行20个);

·复杂数据查询2(并行20个)。

3.2 其他测试部分

(1)管理负载

数据仓库需要具备对不同操作类型、应用以及用户请求进行优先级调度的能力,以保证重要的操作类型、应用以及用户请求能够获得更多的系统资源,优先完成。本项测试的目的是考查数据仓库平台实现资源调度的方式和实现的效果。

(2)高可用测试

主要测试验证常见故障情况下,数据库系统的可用性,模拟测试的故障包括网络连接异常、磁盘机故障、节点级故障,其中节点级故障包含管理节点和计算节点故障两类。

(3)可扩展测试

主要通过对数据仓库计算节点进行扩展,考察其扩展能力,包括扩展的操作方法、步骤、资源开销、扩展后的性能增长情况等,同时考察系统对计算节点进行收缩(减少)的能力。

(4)稳定性测试

数据仓库经常会进行多任务大数据量数据的加载、查询和计算操作,多任务情况下的稳定性对数据仓库来说也是至关重要的,通过此项测试,验证数据库在长时间运行时的稳定性。

4 测试实施过程及产品评估验证

4.1 测试环境网络拓扑

数据仓库产品解决方案可分为一体机和软硬分离两种。一体机产品集成了服务器、存储和软件,以整机形式向客户交付;软硬分离产品厂商提供的软件部署在通用硬件平台上,其中存储又分为使用服务器本地存储和集中阵列存储两种。为满足不同架构数据仓库产品的测试需求,测试环境分为如下3种组网部署架构。

·测试环境1:通用x86架构服务器集群,使用服务器本地硬盘,如图2所示,适用于支持x86通用硬件shared-nothing架构的MPP(大规模并行处理)数据仓库软件,如Greenplum、HPVertica等技术架构的测试。

图2 通用x86架构服务器集群测试环境组网拓扑

·测试环境2:通用x86架构服务器集群,使用SAN存储阵列,如图2所示,适用于支持x86通用硬件shared-disk架构的并行处理数据仓库软件,如南大通用Gbase等技术架构的测试。

·测试环境3:专用数据库一体机环境,如图3所示,如 Teradata、Exadata、Netezza和 PDW 等一体机产品的测试。

图3 专用数据库一体机测试环境组网拓扑

其中,基准测试单元提供功能测试、性能测试、高可用测试、压力测试;扩展测试单元由基准测试单元的一半硬件配置相同的服务器构成,服务器的数量设定应能充分体现扩展性测试性能差别;接口服务器设备提供原数据文件的存放,可用于直接或者间接的数据加载,目的是提供“性能测试”中“数据加载测试”和“数据导出测试”功能。为保证性能测试中数据加载测试的需求,此设备应提供充分的文件系统的I/O带宽,建议此服务器使用高速存储阵列。

4.2 处理能力评估方法

由于数据仓库产品的性能测试指标包含很多项,如数据装载、复杂数据查询、混合负载处理能力、数据导出等。由于每个指标都是不可或缺的测试项目,要综合评定一个数据仓库产品的处理能力,就要综合考虑与性能相关的评测指标。本文提出给每个测试项设定指标权重,在权重的基础上,再把各个测试指标单项累加,从而综合考虑一个产品的处理能力。

(1)权重的设置

各个性能指标项权重的设置没有一个固定的标准,可以根据电信的数据仓库系统在一个月中对各个性能测试项目资源占比负载情况进行大概设置。资源占比是指负载项占用设备处理能力的时间比,可以在服务器后台通过分析处理进程获得。只要基本符合现网生产系统的应用情况即可,见表1。

表1 测试项权重设置情况示例

(2)产品的整体处理能力评估方法

在评估中采用百分制表示产品的处理能力,得分设计最高为100分,单项加权计算。

单个测试项评估模型:N单项=Tf/T×n,N总=N单项1+N单项2+N单项3+…,其中,N总为最后得分,n为分值权重;T是整个场景响应时间(根据线性度换算为设备最小配置或节点的响应时间);Tf指在相同测试环境下,某厂商能提供的最快响应时间;某些测试项小于或等于电信规范指标,定义响应时间的得分为满分。

(3)单个测试项的处理能力评估示例

如“复杂查询”测试案例的权重为30,查询响应时间为:产品 1为 4s,产品 2为 5s,产品 3为 3s,则 Tf取 3s,各厂商测试项得分如下。

·产品 1:3/4×5=3.875。

·产品 2:3/5×5=3.2。

·产品 3:3/3×5=5(产品 3 满分)。

4.3 测试结果

(1)性能基准测试结果

对测试环境1的通用x86架构服务器集群测试环境(本地服务器存储)、测试环境2的通用x86架构服务器集群(使用SAN存储阵列)产品和测试环境3的专用数据库一体机的某一产品进行性能基准测试,测试结果见表2。

表2 性能基准测试结果示例

在性能基准方面,在测试环境3中,由于使用专用的一体机,在性能测试中总体处理能力比通用x86架构服务器集群测试环境有优势。需要说明的是,虽然整体性能出色,但在数据更新、数据装载和导入方面的性能与通用x86架构服务器集群测试环境差距不大。

(2)扩展性性能测试结果

以测试环境1的通用x86架构服务器集群测试环境为例,进行扩展性性能测试,测试结果如图4所示。

图4 扩展性测试结果示例

可以看出,采用shared-nothing架构的系统具有出色的扩展性能,只需要向系统内添加新的普通节点就能够实现查询性能接近线性的有效提升,这种特性能够帮助数据库系统较好地适应海量数据分析处理场景下查询性能要求飞速提升的情况,系统只是根据性能要求添加处理节点就可以满足查询性能提升的要求。需要说明的是,由于数据装载受限于文件服务器的能力,其性能并没有线性增加。

5 结束语

TPC-H这一测试标准可以全真模拟商业应用环境的性能,在商业的应用环境中具有一定的适用性,而电信企业的数据仓库系统工作负载类型与商业应用环境区别较大。针对这些问题,设计了测试标准和评估方法,该设计与企业应用系统相结合并得到应用,具有很高的可靠性和效率。本文希望建立一套完整的云计算数据库产品测试标准,能够衡量和评估不同数据仓库产品的处理能力。

1 龙源.基于shared-nothing的分布式访问层研究.南京邮电大学硕士学位论文,2009

2 陈全.云计算及其关键技术.计算机应用,2009,29(9)

3 张强.云计算时代的软件复用.电脑知识与应用,2008,4(8)

4 尹国定.云计算——实现概念计算的方法.东南大学学报,2003,4(7)

5 陶彩霞.云计算在电信支撑系统领域的应用分析.电信科学,2010,26(10)

6 张云勇,陈清金.云计算安全关键技术分析.电信科学,2010,26(9)

7 詹义,段伟希,胡晓彦.云计算在电信IT支撑系统中的应用.电信科学,2011,27(11)

猜你喜欢
测试环境数据仓库架构
基于FPGA的RNN硬件加速架构
功能架构在电子电气架构开发中的应用和实践
基于数据仓库的数据倾斜解决方案研究
全数字仿真测试环境在航天软件测试中的应用研究
基于云服务的图书馆IT架构
雷达航迹处理测试环境构建方法研究
基于数据仓库的住房城乡建设信息系统整合研究
网络设备自动化测试设计与实现
WebGIS架构下的地理信息系统构建研究
探析电力系统调度中数据仓库技术的应用