用于生成数据库的测试工作负载的系统和方法技术方案

技术编号:8862327 阅读:188 留言:0更新日期:2013-06-28 01:32
公开了一种用于生成数据库的测试工作负载的系统和方法,该系统包括:工作负载捕获模块,被配置为捕获源系统上包含针对源数据库发出的原数据库语句的工作负载;元信息收集模块,被配置为收集源数据库中的数据模式和数据分布统计特性;数据生成模块,被配置为根据所述收集的源数据库中的数据模式在目标数据库中创建具有相同数据模式的数据对象,以及根据所述收集的数据分布统计特性在目标数据库中生成具有相似数据分布统计特性的数据;以及语句修改模块,被配置为修改所捕获的工作负载中的至少部分原数据库语句,以使得修改后的数据库语句在目标数据库上的执行具有所述原数据库语句在源数据库上的执行的相似的性能特征,从而获得测试工作负载。

【技术实现步骤摘要】

本专利技术涉及数据处理领域,具体涉及数据库,更具体涉及一种。
技术介绍
目前,大量的应用运行在数据库管理系统中存储的数据之上。随着软件的日益复杂,如何确保这些应用的质量成为一个关键问题。此外,不仅是应用变得更复杂,数据库管理系统本身也变得更复杂。这些数据库管理系统通常存储着由很多不同应用和成千上万的用户访问的业务关键数据。数据库管理系统的中断通常对于核心业务来说具有严重的后果,其可造成企业数百万元的损失,失去用户和业务伙伴的信任,甚至引起法律纠纷。在最坏的情况下甚至使企业倒闭。因此,获得充足的数据库测试方法对于企业来说是必不可少和至关重要的。而且获得这种数据库测试方法不但对于作为数据库最终用户的企业是至关重要的,而且对于应用中间件厂商以及数据库厂商自己也是至关重要的。以数据库为中心的测试的关键是能够获得“真实世界的”工作负载,这是因为,由于当今的应用和环境的复杂性,极难人工生成充足的生产系统的数据和访问模式。现在也日益需要将这种真实世界的工作负载及相应的测试工具更多地提供给第三方。例如,一个企业可能将其应用数据库测试外包给服务提供商,这也被称为作为服务的测试(Test as a Service) 0这产生了数据机密性和安全性的问题。企业很可能不希望将其核心业务数据显露给不可信的第三方。而且,即使在企业内部,数据访问往往也是有着严格限制的。开发和测试应用的人可能无法访问真实的业务数据。目前已存在几种用于收集和/或生成工作负载的解决方案,但或者由于数据机密性问题,或者由于对真实世界环境的不充分模拟,它们的使用都是有限的。而且,这些解决方案通常缺乏将数据库数据与语句相关联的能力,因此使它们不适合用于真实的端到端测试场景。应用驱动的测试方法需要在测试环境中重建通常很复杂的生产系统。这种方法需要花费大量的时间和资源来重建环境。这种解决方案的移植性较差,因为,生产环境是非常独特和难以重建的。此外,测试数据的生成也会成为问题,因为如果数据来自于生产系统,则仍然可能包含机密信息。最后,真实世界工作负载的模拟会成为问题,因为适当的应用驱动器需要被手工创建。另一种方法是所谓的“捕获和重放”(Capture and Play)解决方案。这里,应用和数据库之间的通信被截获和记录下来。此后,可在开始记录时获取的数据库映像上重放所记录的语句流。然而,该解决方案需要用于重放的数据存储代表与捕获阶段完全相同的状态(包括所有数据)。这使得该解决方案移植性较差,且由于机密性问题而可用性较差,而且这种“锁定”的环境使得很难测试迁移和伸缩的场景。在这种方案中,难以偏离所记录的语句流。此外,这种捕获和重放解决方案无法在人工生成的数据上工作。目前存在着如下几种生成数据库测试数据的方法:I)随机测试数据生成。所生成的数据通常没有意义,因此几乎不可能基于这种数据设计出好的工作负载来获得测试目标,无论是从功能角度来看还是从性能角度来看。2)数据掩蔽(data masking)。很多产品提供了数据掩蔽功能。然而,数据掩蔽通常仅在用户场所内部使用,因为大量数据库对象的存在使得完全确保私密信息是不切实际的,而将掩蔽的数据共享给用户的安全性和私密性边界之外的第三方被认为是不安全的。此外,需要时间和资源来学习和操作掩蔽工具以生成适当的掩蔽。同时,数据掩蔽可能打破数据的顺序,使得原始工作负载中的一些查询无法直接用于测试。3)简档生成(profiling)和填充脚本。测试者基于预定的测试策略编写其自己的数据生成脚本。例如,测试者通过运行简档生成脚本生成记录了表大小或列不同值的简档,然后根据简档将数据插入到目标系统中。该方法需要测试者很好地了解应用,并在测试数据生成项目上花费大量时间。所有这些测试数据生成方法的一个缺点是它们没有将SQL语句和应用工作流考虑进去,这使得它们无法成为一个充足的端到端解决方案。因此,本领域中需要一种能够容易地生成可移植的和通用的用于数据库测试的端到端工作负载的解决方案。
技术实现思路
在本专利技术的一个方面,提供了一种用于生成数据库的测试工作负载的系统,包括:工作负载捕获模块,被配置为捕获源系统上包含针对源数据库发出的原数据库语句的工作负载;元信息收集模块,被配置为收集源数据库中的数据模式(schema)和数据分布统计特性;数据生成模块,被配置为根据所述元信息收集模块收集的源数据库中的数据模式在目标数据库中创建具有相同数据模式的数据对象,以及根据所述元信息收集模块收集的数据分布统计特性在目标数据库中生成具有相似数据分布统计特性的数据;以及语句修改模块,被配置为修改所述工作负载捕获模块捕获的工作负载中的至少部分原数据库语句,以使得修改后的数据库语句在目标数据库上的执行具有原数据库语句在源数据库上的执行的相似的性能特征,从而获得测试工作负载。在本专利技术的另一个方面,提供了一种用于生成数据库的测试工作负载的方法,包括:捕获源系统上包含针对源数据库发出的原数据库语句的工作负载;收集源数据库中的数据模式和数据分布统计特性;根据所述收集的源数据库中的数据模式在目标数据库中创建具有相同数据模式的数据对象,以及根据所述收集的数据分布统计特性在目标数据库中生成具有相似数据分布统计特性的数据;以及修改所捕获的工作负载中的至少部分原数据库语句,以使得修改后的数据库语句在目标数据库上的执行具有所述原数据库语句在源数据库上的执行的相似的性能特征,从而获得测试工作负载。附图说明所附权利要求中阐述了被认为是本专利技术的特点的创造性特征。但是,通过参照附图阅读下面对说明性实施例的详细说明可更好地理解专利技术本身以及其优选使用模式、目标、特征以及优点,在附图中:图1示出了根据本专利技术的实施例的用于生成数据库的测试工作负载的系统的示意性体系结构图;图2例示了将数据库语句中的谓词及谓词组合按照所涉及的数据库表的列划分为不同类别的方法;图3A例示了数据库语句的涉及同一个数据库表的多个列的多个谓词或谓词组合、其各自的过滤因子以及其过滤因子之间的关系;图3B例示了在目标数据库中生成满足图3所示的多个谓词及谓词组合的过滤因子的数据的示意性过程;图4示出了一组示例性数据库语句、从该组数据库语句中获得的多个数据库表之间的联结(join)关系、以及表示这些数据库表的列的数据之间的关系的谓词;图5例示了根据该实施例对包含联结关系的数据库语句进行修改的过程;图6示出了根据本专利技术的实施例的用于生成数据库的测试工作负载的方法;以及图7示出了适于用来实现本专利技术实施方式的示例性计算系统的框图。具体实施例方式本专利技术提出了一种基于真实世界的应用工作负载涉及的数据的完全非机密的元信息来生成或克隆测试工作负载的解决方案,其中工作负载是指在应用中针对数据库中的数据执行的一组数据库语句及其流程。所生成的测试工作负载提供了一种可移植的和可访问的端到端解决方案,其没有数据机密性问题,但保持了源环境中的对功能和性能测试来说必需的特性。由于对工作负载语句和数据的元信息(例如数据模式和统计信息)进行了广泛的分析和关联,因此使所生成的测试数据摆脱了机密性信息,但是在数据分布、频率和联结关系等方面仍然保持了真实世界的特性。此外,SQL语句和参数值被修改或处理,以使得它们能够在所生成的数据之上工作,同时不会失去选择率(selectivi本文档来自技高网
...

【技术保护点】
一种用于生成数据库的测试工作负载的系统,包括:工作负载捕获模块,被配置为捕获源系统上包含针对源数据库发出的原数据库语句的工作负载;元信息收集模块,被配置为收集源数据库中的数据模式和数据分布统计特性;数据生成模块,被配置为根据所述元信息收集模块收集的源数据库中的数据模式在目标数据库中创建具有相同数据模式的数据对象,以及根据所述元信息收集模块收集的数据分布统计特性在目标数据库中生成具有相似数据分布统计特性的数据;以及语句修改模块,被配置为修改所述工作负载捕获模块捕获的工作负载中的至少部分原数据库语句,以使得修改后的数据库语句在目标数据库上的执行具有所述原数据库语句在源数据库上的执行的相似的性能特征,从而获得测试工作负载。

【技术特征摘要】
1.一种用于生成数据库的测试工作负载的系统,包括: 工作负载捕获模块,被配置为捕获源系统上包含针对源数据库发出的原数据库语句的工作负载; 元信息收集模块,被配置为收集源数据库中的数据模式和数据分布统计特性; 数据生成模块,被配置为根据所述元信息收集模块收集的源数据库中的数据模式在目标数据库中创建具有相同数据模式的数据对象,以及根据所述元信息收集模块收集的数据分布统计特性在目标数据库中生成具有相似数据分布统计特性的数据;以及 语句修改模块,被配置为修改所述工作负载捕获模块捕获的工作负载中的至少部分原数据库语句,以使得修改后的数据库语句在目标数据库上的执行具有所述原数据库语句在源数据库上的执行的相似的性能特征,从而获得测试工作负载。2.根据权利要求1的系统,还包括: 测试工作负载执行模块,被配置为在目标数据库上执行所述测试工作负载,以针对目标数据库进行测试。3.根据权利要求1的系统,其中,所述元信息收集模块被配置为仅收集所述工作负载中包含的原数据库语句所涉及的、源数据库中的数据模式和数据分布统计特性。4.根据权利要求1的系统,其中,所述相似的性能特征是指相似的谓词过滤因子。5.根据权利要求1的系统,其中,所述数据分布统计特性包括数据库表的列中的数据的最大值、最小值、基数和大小,或者数据库表的列中的数据中出现频率最高的若干数值各自的出现频率以及由所述数值划分的每个数据段的最大值、最小值、基数和大小。6.根据权利要求1的 系统,还包括: 约束关系获得模块,被配置为获得在源系统上原数据库语句所涉及的数据的与选择率有关的约束关系; 且其中,所述数据生成模块进一步被配置为在目标数据库中生成满足或基本满足所述与选择率有关的约束关系且具有相似数据分布统计特性的数据。7.根据权利要求6的系统,其中,所述原数据库语句所涉及的数据的与选择率有关的约束关系包括与原数据库语句中涉及同一数据库表的多个列的多个谓词的过滤因子有关的约束关系; 且其中,所述数据生成模块进一步被配置为:首先生成满足或基本满足涉及较多列的谓词或谓词组合的过滤因子的数据,然后生成满足或基本满足涉及较少列的谓词或谓词组合的过滤因子的数据。8.根据权利要求6的系统,其中,所述原数据库语句所涉及的数据的与选择率有关的约束关系包括与原数据库语句中涉及具有联结关系的多个数据库表的多个列的谓词的过滤因子有关的约束关系; 且其中,所述数据生成模块进一步被配置为:使在目标数据库中生成的数据满足或基本满足所述谓词的过滤因子。9.根据权利要求6的系统,还包括: 谓词分类模块,被配置为将原数据库语句中的谓词和谓词组合按照所涉及的数据库表的列划分为不同类别; 出现频率计算模块,被配置为计算不同类别的谓词和谓词组合在数据库语句中的出现频率; 且其中,所述约束关系获得模块进一步被配置为仅获得属于出现频率较高的类别的谓词和谓词组合的过滤因子。10.根据权利要求1的系统,其中,所述语句修改模块进一步包括: 语句修改子模块,被配置为针对包含联结关系的原数据库语句,通过将其中的本地谓词删除,将本地谓词中涉及的数据库表的列添加到SELECT子句获得修改的数据库语句; 结果集获得子模块,被配置为通过针对目标数据库执行所述修改的数据库语句获得结果集; 列值查找子模块,被配置为在结果集中寻找选择率与所述本地谓词在源数据库上的单独及组合过滤因子相近的列值;以及 常量值替换子模块,使用所述列值替换...

【专利技术属性】
技术研发人员:傅毓勤魏可伟M·申克尔刘恒李硕杨新颖
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1