CN103176973A - 用于生成数据库的测试工作负载的***和方法 - Google Patents
用于生成数据库的测试工作负载的***和方法 Download PDFInfo
- Publication number
- CN103176973A CN103176973A CN2011104295291A CN201110429529A CN103176973A CN 103176973 A CN103176973 A CN 103176973A CN 2011104295291 A CN2011104295291 A CN 2011104295291A CN 201110429529 A CN201110429529 A CN 201110429529A CN 103176973 A CN103176973 A CN 103176973A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- predicate
- statement
- row
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
- G06F21/6254—Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3414—Workload generation, e.g. scripts, playback
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了一种用于生成数据库的测试工作负载的***和方法,该***包括:工作负载捕获模块,被配置为捕获源***上包含针对源数据库发出的原数据库语句的工作负载;元信息收集模块,被配置为收集源数据库中的数据模式和数据分布统计特性;数据生成模块,被配置为根据所述收集的源数据库中的数据模式在目标数据库中创建具有相同数据模式的数据对象,以及根据所述收集的数据分布统计特性在目标数据库中生成具有相似数据分布统计特性的数据;以及语句修改模块,被配置为修改所捕获的工作负载中的至少部分原数据库语句,以使得修改后的数据库语句在目标数据库上的执行具有所述原数据库语句在源数据库上的执行的相似的性能特征,从而获得测试工作负载。
Description
技术领域
本发明涉及数据处理领域,具体涉及数据库,更具体涉及一种用于生成数据库的测试工作负载的***和方法。
背景技术
目前,大量的应用运行在数据库管理***中存储的数据之上。随着软件的日益复杂,如何确保这些应用的质量成为一个关键问题。此外,不仅是应用变得更复杂,数据库管理***本身也变得更复杂。这些数据库管理***通常存储着由很多不同应用和成千上万的用户访问的业务关键数据。数据库管理***的中断通常对于核心业务来说具有严重的后果,其可造成企业数百万元的损失,失去用户和业务伙伴的信任,甚至引起法律纠纷。在最坏的情况下甚至使企业倒闭。因此,获得充足的数据库测试方法对于企业来说是必不可少和至关重要的。而且获得这种数据库测试方法不但对于作为数据库最终用户的企业是至关重要的,而且对于应用中间件厂商以及数据库厂商自己也是至关重要的。
以数据库为中心的测试的关键是能够获得“真实世界的”工作负载,这是因为,由于当今的应用和环境的复杂性,极难人工生成充足的生产***的数据和访问模式。
现在也日益需要将这种真实世界的工作负载及相应的测试工具更多地提供给第三方。例如,一个企业可能将其应用数据库测试外包给服务提供商,这也被称为作为服务的测试(Test as a Service)。这产生了数据机密性和安全性的问题。企业很可能不希望将其核心业务数据显露给不可信的第三方。而且,即使在企业内部,数据访问往往也是有着严格限制的。开发和测试应用的人可能无法访问真实的业务数据。
目前已存在几种用于收集和/或生成工作负载的解决方案,但或者由于数据机密性问题,或者由于对真实世界环境的不充分模拟,它们的使用都是有限的。而且,这些解决方案通常缺乏将数据库数据与语句相关联的能力,因此使它们不适合用于真实的端到端测试场景。
应用驱动的测试方法需要在测试环境中重建通常很复杂的生产***。这种方法需要花费大量的时间和资源来重建环境。这种解决方案的移植性较差,因为,生产环境是非常独特和难以重建的。此外,测试数据的生成也会成为问题,因为如果数据来自于生产***,则仍然可能包含机密信息。最后,真实世界工作负载的模拟会成为问题,因为适当的应用驱动器需要被手工创建。
另一种方法是所谓的“捕获和重放”(Capture and Play)解决方案。这里,应用和数据库之间的通信被截获和记录下来。此后,可在开始记录时获取的数据库映像上重放所记录的语句流。然而,该解决方案需要用于重放的数据存储代表与捕获阶段完全相同的状态(包括所有数据)。这使得该解决方案移植性较差,且由于机密性问题而可用性较差,而且这种“锁定”的环境使得很难测试迁移和伸缩的场景。在这种方案中,难以偏离所记录的语句流。此外,这种捕获和重放解决方案无法在人工生成的数据上工作。
目前存在着如下几种生成数据库测试数据的方法:
1)随机测试数据生成。所生成的数据通常没有意义,因此几乎不可能基于这种数据设计出好的工作负载来获得测试目标,无论是从功能角度来看还是从性能角度来看。
2)数据掩蔽(data masking)。很多产品提供了数据掩蔽功能。然而,数据掩蔽通常仅在用户场所内部使用,因为大量数据库对象的存在使得完全确保私密信息是不切实际的,而将掩蔽的数据共享给用户的安全性和私密性边界之外的第三方被认为是不安全的。此外,需要时间和资源来学习和操作掩蔽工具以生成适当的掩蔽。同时,数据掩蔽可能打破数据的顺序,使得原始工作负载中的一些查询无法直接用于测试。
3)简档生成(profiling)和填充脚本。测试者基于预定的测试策略编写其自己的数据生成脚本。例如,测试者通过运行简档生成脚本生成记录了表大小或列不同值的简档,然后根据简档将数据***到目标***中。该方法需要测试者很好地了解应用,并在测试数据生成项目上花费大量时间。
所有这些测试数据生成方法的一个缺点是它们没有将SQL语句和应用工作流考虑进去,这使得它们无法成为一个充足的端到端解决方案。
因此,本领域中需要一种能够容易地生成可移植的和通用的用于数据库测试的端到端工作负载的解决方案。
发明内容
在本发明的一个方面,提供了一种用于生成数据库的测试工作负载的***,包括:工作负载捕获模块,被配置为捕获源***上包含针对源数据库发出的原数据库语句的工作负载;元信息收集模块,被配置为收集源数据库中的数据模式(schema)和数据分布统计特性;数据生成模块,被配置为根据所述元信息收集模块收集的源数据库中的数据模式在目标数据库中创建具有相同数据模式的数据对象,以及根据所述元信息收集模块收集的数据分布统计特性在目标数据库中生成具有相似数据分布统计特性的数据;以及语句修改模块,被配置为修改所述工作负载捕获模块捕获的工作负载中的至少部分原数据库语句,以使得修改后的数据库语句在目标数据库上的执行具有原数据库语句在源数据库上的执行的相似的性能特征,从而获得测试工作负载。
在本发明的另一个方面,提供了一种用于生成数据库的测试工作负载的方法,包括:捕获源***上包含针对源数据库发出的原数据库语句的工作负载;收集源数据库中的数据模式和数据分布统计特性;根据所述收集的源数据库中的数据模式在目标数据库中创建具有相同数据模式的数据对象,以及根据所述收集的数据分布统计特性在目标数据库中生成具有相似数据分布统计特性的数据;以及修改所捕获的工作负载中的至少部分原数据库语句,以使得修改后的数据库语句在目标数据库上的执行具有所述原数据库语句在源数据库上的执行的相似的性能特征,从而获得测试工作负载。
附图说明
所附权利要求中阐述了被认为是本发明的特点的创造性特征。但是,通过参照附图阅读下面对说明性实施例的详细说明可更好地理解发明本身以及其优选使用模式、目标、特征以及优点,在附图中:
图1示出了根据本发明的实施例的用于生成数据库的测试工作负载的***的示意性体系结构图;
图2例示了将数据库语句中的谓词及谓词组合按照所涉及的数据库表的列划分为不同类别的方法;
图3A例示了数据库语句的涉及同一个数据库表的多个列的多个谓词或谓词组合、其各自的过滤因子以及其过滤因子之间的关系;
图3B例示了在目标数据库中生成满足图3所示的多个谓词及谓词组合的过滤因子的数据的示意性过程;
图4示出了一组示例性数据库语句、从该组数据库语句中获得的多个数据库表之间的联结(join)关系、以及表示这些数据库表的列的数据之间的关系的谓词;
图5例示了根据该实施例对包含联结关系的数据库语句进行修改的过程;
图6示出了根据本发明的实施例的用于生成数据库的测试工作负载的方法;以及
图7示出了适于用来实现本发明实施方式的示例性计算***的框图。
具体实施方式
本发明提出了一种基于真实世界的应用工作负载涉及的数据的完全非机密的元信息来生成或克隆测试工作负载的解决方案,其中工作负载是指在应用中针对数据库中的数据执行的一组数据库语句及其流程。所生成的测试工作负载提供了一种可移植的和可访问的端到端解决方案,其没有数据机密性问题,但保持了源环境中的对功能和性能测试来说必需的特性。
由于对工作负载语句和数据的元信息(例如数据模式和统计信息)进行了广泛的分析和关联,因此使所生成的测试数据摆脱了机密性信息,但是在数据分布、频率和联结关系等方面仍然保持了真实世界的特性。此外,SQL语句和参数值被修改或处理,以使得它们能够在所生成的数据之上工作,同时不会失去选择率(selectivity)和访问模式方面的特性。
本发明的解决方案可以与现有的“捕获和重放”解决方案协作。也就是说,可以将现有的“捕获和重放”解决方案所捕获的语句流中的原始语句替换为经本发明的解决方案修改后的对应语句,并针对本发明的解决方案所生成的数据来重放这些语句。
现参照附图描述本发明的实施例。
用于生成数据库的测试工作负载的***
图1示出了根据本发明的实施例的用于生成数据库的测试工作负载的***的示意性体系结构图。如图所示,该用于生成数据库的测试工作负载的***100包括在源***上运行的工作负载捕获模块101和元信息收集模块102,以及在目标***上运行的数据生成模块103和语句修改模块104。
源***通常为企业所实际使用的生产***,且源数据库中通常包含有机密信息。目标***通常为需要进行测试的尚未投入生产运行的***。目标***与源***可以相同,也可以不同。目标***与源***可以包括同一个数据库产品的不同版本,也可以是完全不同的数据库产品。在两者是完全不同的数据库产品的情况下,需要在两者之间进行数据定义语言(DDL)等之间的转换。如本领域中所公知的,这种转换可根据两个***的不同数据模式(schema)定义容易地实现。
工作负载捕获模块101被配置为捕获源***上包含针对源数据库发出的数据库语句的工作负载。工作负载是源***在运行过程中实际使用的工作负载,其包括源***的应用在运行过程中发出的数据库语句。除了数据库语句文本外,在本发明的一些实施例中,工作负载捕获模块101还捕获其他相关信息,例如语句执行频率、语句执行顺序等。此外,在本发明的进一步的一些实施例中,工作负载捕获模块101还捕获诸如语句耗用时间、CPU和I/O资源消耗等信息。所有主要的关系数据库***都具有内置的功能或工具来捕获上述信息。
本发明的***100不仅需要模拟源数据库中的数据,而且需要使生成的测试工作负载模拟源***上的工作负载的性能特性。为实现此目的,还需要捕获源***上运行的工作负载中的语句的性能数据。所述性能数据例如为语句中的谓词的过滤因子。过滤因子是指一数据库表中满足给定谓词的记录占所全部记录的百分比,它是一个反映查询性能的重要指标。在数据库管理***中,通常提供了用于获得过滤因子的函数或工具。过滤因子可包括单个谓词的过滤因子以及一个查询中具有“与”关系的谓词组合的过滤因子。
元信息收集模块102被配置为收集源数据库中的数据模式和数据分布统计特性。根据本发明的一实施例,所述元信息收集模块102被配置为仅收集所述工作负载中包含的数据库语句所涉及的、源数据库中的数据模式和数据分布统计特性。为此,在本发明的该实施例中,该***100还包括一识别模块(未示出),其被配置为通过分析数据库语句,发现这些语句所引用的所有数据库对象。
本发明的一个关键点是在目标***中模拟源***上的数据分布。源***上的数据分布是由数据分布统计特性表示的。数据模式(data schema)描述了数据库中所存储的数据的数据类型及结构,也是在目标***中生成数据所必需的。数据模式和数据分布统计特性存储在数据库的目录(catalog)中,并可以由任何具有足够权限的人收集。
根据本发明的实施例,所述数据分布统计特性包括数据库表的列中的数据的最大值、最小值、基数(cardinality)和大小。也就是说,元信息收集模块102从源数据库中收集数据库表中的各单个列中的数据的最大值、最小值、基数和大小。所述最大值和最小值是指数据库表的列中的用户数据中的最大值和最小值,而不是指在不存在用户数据的情况下***所默认的值(尽管该值可能是最大值或最小值)。所述基数是指一列(或作为其一部分的数据段)中的不同数值的数量。所述大小是指一列(或作为其一部分的数据段)中的相同和不同数值的总数。
根据本发明的其他实施例,所述数据分布统计特性包括数据库表的列中的数据中出现频率最高的若干数值各自的出现频率以及由所述数值划分的每个数据段的最大值、最小值、基数和大小。也就是说,元信息收集模块102从源数据库中收集数据库表中的单个列中的数据中出现频率最高的若干数值各自的出现频率以及由所述数值划分的每个数据段的最大值、最小值、基数和大小。
根据本发明的实施例,由工作负载捕获模块101所捕获的工作负载及其他相关信息被存储在语句简档中,而由元信息收集模块102所收集的数据模式和数据分布统计特性被存储在数据简档中。语句简档包含数据库语句文本、语句执行频率、过滤因子,且可能还包括耗用时间、CPU和I/O消耗等。数据简档包括数据模式和数据分布统计特性。语句简档和数据简档可以是XML格式,也可以是其他格式的。语句简档和数据简档被提供给如下所述的数据生成模块102。在本发明的其他一些实施例中,也可以没有所述语句简档和数据简档,而是工作负载捕获模块101和元信息收集模块102直接将所捕获的工作负载以及所收集的数据模式和数据分布统计特性发送给数据生成模块103进行处理。在本发明的一些实施例中,在语句简档和数据简档被提供给数据生成模块102之前,可以对语句简档和数据简档中的信息进行适当的修改以适应目标***的情况或满足用户的需求。例如,在目标***和源***包括不同数据库产品的情况下,可能需要对数据简档中的数据模式进行适应性修改;再例如,可以根据用户需求对数据简档中的数据分布统计特性进行修改,以缩放将在目标数据库中生成的数据量,等等。
数据生成模块103被配置为根据所述获取的源数据库中的数据模式在目标数据库中创建具有相同数据模式的数据对象(例如,表、表中的每个列等),以及根据所述获取的数据分布统计特性在目标数据库中生成具有相似数据分布统计特性的数据。所述数据模式和数据分布统计特性例如是从数据简档中获取的。根据本发明的实施例,数据生成模块103可根据来自源***的数据简档中包含的数据模式和数据分布统计特性来在目标数据库中创建数据对象并生成数据。
在本发明的一些实施例中,来自源数据库的数据分布统计特性包括数据库表中的列中的数据的最大值、最小值、基数和大小,在这样的实施例中,数据生成模块103将在目标数据库的相应表中的相应列中生成具有相同的最大值、最小值、基数和大小的数据。生成数据的具体方法可以有多种。例如,可以根据最大值、最小值和基数确定最大值、最小值之间的不同数值(这些不同数据例如可以是大体等间隔的),然后不断重复这一系列数值以达到所述大小。
例如,如果一列的最小值是5,最大值是21,基数是5,大小是10,则可以生成如下数值序列:
5,9,13,17,21,5,9,13,17,21。
对于字符串型的数据,可以简单地通过在不同字符串间定义的排序规则,使用与上述方法本质相同的方法生成。
在本发明的另一些实施例中,来自源数据库的数据分布统计特性包括数据库表的列中的数据中出现频率最高的若干数值各自的出现频率以及由所述数值划分的每个数据段的最大值、最小值、基数和大小,在这样的实施例中,数据生成模块103将在目标数据库中的相应表的相应列中首先生成所述出现频率最高的若干数值,且每个数值的个数为其出现频率,然后,根据由这些数值划分的每个数据段的最大值、最小值、基数和大小在该列中生成具有相同最大值、最小值、基数和大小的数据段的数据。
例如,如果在源数据库的一个表的一列中出现频率最高的数值为7和12,其出现频率分别为50和30,该列中的数据由该两个数值划分为两个数据段,第一个数据段最小值为1,最大值为6,基数为5,大小为110;第二个数据段的最小值为7,最大值为11,基数为5,大小为10,则可在该列中生成50个7和30个12,并可按上述方法生成110个最小值为1、最大值为6、基数为5的数值,以及10个最小值为7、最大值为11、基数为5的数值。
根据本发明的实施例,该***101还包括:可选的约束关系获得模块105,其被配置为获得在源***上数据库语句所涉及的数据的与选择率有关的约束关系;且其中所述数据生成模块103进一步被配置为在目标数据库中生成满足或基本满足所述与选择率有关的约束关系且具有相似数据分布统计特性的数据。选择率是指一个查询所选择的记录的比例或者结果集的大小,其可视为过滤因子的上位概念。使用前述方法生成的目标数据库表的各单个列中的数据具有与源数据库表的相应单个列中的数据类似的数据分布特征(包括最大值、最小值、基数、大小、出现频率最高的值等),然而在同一源数据库表的不同列的数据之间以及不同源数据库表的不同列的数据之间等也存在着一定的约束关系,这些约束关系保证了针对这些数据执行的查询具有一定的选择率,因此,在目标数据库中生成的数据在保证单个列中的类似的数据分布特征的同时,还应保证在相应的同一目标数据库表的不同列的数据之间以及不同目标数据库表的不同列的数据之间等同样存在着类似的约束关系,以便针对目标数据库中的这些数据执行的查询具有类似的选择率。可通过分析例如语句简档中存储的所捕获的工作负载中(或以其他方式从源***中获得)的各数据库语句中的谓词、这些谓词之间的关系、各个谓词的过滤因子以及具有“与”关系的谓词组合的过滤因子等,来获得在源***上数据库语句所涉及的数据的与选择率有关的约束关系。然后,这些约束关系可以被存储在数据简档中。
根据本发明的实施例,该***101还包括:可选的谓词分类模块(未示出),其被配置为将数据库语句中的谓词或谓词组合按照所涉及的数据库表的列划分为不同类别;可选的出现频率计算模块(未示出),其被配置为计算不同类别的谓词或谓词组合在数据库语句中的出现频率;且其中,所述约束关系获得模块105被配置为仅获得与属于出现频率较高的类别的谓词或谓词组合的过滤因子有关的约束关系。也就是说,在该实施例中,在目标数据库中生成的数据不需要保证与所有数据库语句中的所有谓词及谓词组合的过滤因子有关的约束关系,而只需要保证与数据库语句中出现频率较高(因而较重要,可给予较大权重)的谓词及谓词组合的过虑因子有关的约束关系。
图2例示了将数据库语句中的谓词及谓词组合按照所涉及的数据库表的列划分为不同类别的方法。如图所示,从所示的一组数据库语句获得了6个谓词类别:Group1、…、Group6,其中Group1类别的谓词为J72.SEC_ISS_ID=?(即表J72的列SEC_ISS_ID等于某个数值),该类谓词可表示为P1;Group2类别的谓词为J72.FINANCIAL_ID=?,可表示为P2;Group3类别的谓词为J72.RIRM_ID=?,可表示为P3;Group4类别的谓词组合为J72.RIRM_ID=?AND J72.SEC_ISS_ID=?,可表示为P1&P3;Group5类别的谓词组合为J72.SEC_ISS_ID=?ANDJ72.FINANCIAL_ID=?,可表示为P1&P2;Group6类别的谓词组合为J72.RIRM_ID=?AND J72.SEC_ISS_ID=?AND J72.FINANCIAL_ID=?,可表示为P1&P2&P3。应注意的是,在该示例中,每个谓词类别仅包含涉及一个数据库表的一个列的谓词,或者涉及一个数据库表的多个列的具有“与”关系的谓词组合,而不包含涉及多个数据表的多个列的谓词组合(这种情况将在后文中所述的实施例中处理)。
下示出了根据图2中所示的每个谓词类别的出现频率给出每个谓词类别的权重。
谓词类别 | 谓词和谓词组合 | 权重 |
Group1 | P1 | 0.1 |
Group2 | P2 | 0.2 |
Group3 | P3 | 0.1 |
Group4 | P1&P3 | 0.3 |
Group5 | P1&P2 | 0.05 |
Group6 | P1&P2&P3 | 0.25 |
可见,这些谓词类别中较不重要的为Group5,即谓词组合P1&P2。因此,当数据生成模块103在目标数据库中生成数据时,可以不考虑与谓词组合P1&P2的过滤因子有关的约束关系,而只考虑与其他5类谓词或谓词组合的过滤因子有关的约束,也就是说,所生成的数据可以不满足谓词组合P1&P2的过滤因子,而只满足其他5类谓词或谓词组合的过滤因子。当然,这只是一个示例,也可以使所生成的数据满足所有的谓词和谓词组合的过滤因子。
根据本发明的实施例,所述数据库语句所涉及的数据的与选择率有关的约束关系包括与数据库语句中涉及同一数据库表的多个列的多个谓词的过滤因子有关的约束关系,且其中,所述数据生成模块103进一步被配置为:首先生成满足或基本满足涉及较多列的谓词或谓词组合的过滤因子的数据,然后生成满足或基本满足涉及较少列的谓词或谓词组合的过滤因子的数据。也就是说,约束关系获得模块105将通过分析例如所捕获的工作负载中的数据库语句获得数据库语句中涉及同一数据库表的多个列的多个谓词,包括单个谓词和具有“与关系”的谓词组合,获得这些谓词和谓词组合的过滤因子,而数据生成模块103生成的数据需要满足或基本满足所有这些谓词和谓词组合的过滤因子;而使数据生成模块103生成的数据满足或基本满足所有谓词和谓词组合的过滤因子的方法是按照谓词或谓词组合所涉及的相关列的数量的顺序,依次地生成满足或基本满足涉及较多列的谓词的过滤因子的数据,以及满足或基本满足涉及较少列的谓词的过滤因子的数据。
图3A例示了来自例如语句简档的数据库语句的涉及同一个数据库表的多个列的多个谓词或谓词组合、其各自的过滤因子以及其过滤因子之间的关系。如图所示,存在如下谓词或谓词组合:P1A,其过滤因子FF=0.5;P2A,其过滤因子FF=0.4;P3A,其过滤因子FF=0.2;P1A&P2A,其过滤因子FF=0.3;P1A&P3A,其过滤因子FF=0.2;P1A&P2A&P3A,其过滤因子=0.1。在该图中,单个谓词排列在最左边,谓词的组合(即谓词的“与”)依次排列在右边,越往右则涉及的谓词越多,且具有组合关系的谓词组合或谓词之间用箭头相连。这种排列方式不仅表明了谓词之间的组合关系,而且更重要的是表明了谓词或谓词组合的过滤因子之间的关系。例如,P1A&P2A&P3A的过滤因子FF=0.1,而其左边相连接的P1A&P2A的过滤因子FF=03,这表明满足P1A&P2A&P3A的记录数占记录总数的10%,而满足P1A&P2A的记录数占记录总数的30%,但在满足P1A&P2A的30%的记录数中实际上包含了满足P1A&P2A&P3A的10%的记录数(以及满足P1A&P2A但不满足P3A的20%的记录数)。基于此,根据本发明的实施例,首先在目标数据库表中生成满足涉及最多列的谓词的过滤因子的数据,然后依次生成满足较少列的谓词或谓词组合的过滤因子的数据,则最终会在目标数据库表中生成满足所有谓词或谓词组合的过滤因子的数据。
图3B例示了在目标数据库中生成满足图3A所示的多个谓词及谓词组合的过滤因子的数据的示意性过程。如图所示,谓词P1A具体为SEC_ISS_IDD=5,谓词P2A具体为FINANCIAL_ID=6,谓词P3A具体为RIRM_ID=7。该图示意性地表示了一数据库表的三个列SEC_ISS_IDD、FINANCIAL_ID、RIRM_ID及每个列中的数据生成过程。从上到下,首先在三个列中生成满足P1A&P2A&P3A的占记录总数10%的记录,然后在SEC_ISS_ID和FINANCIAL_ID两列中生成满足P1A&P2A但不满足P3A的20%的记录(因为,0.3-0.1=0.2),然后在SEC_ISS_ID和RIRM_ID两列中生成满足P1A&P3A但不满足P2A的10%的记录(因为0.2-0.1=0.1),然后在SEC_ISS_ID列中生成满足P1A但不满足P2A也不满足P3A的10%的记录(因为,0.5-0.1-0.2-0.1=0.1),最后在FINANCIAL_ID列中生成满足P2A但不满足P1A也不满足P3A的10%的记录(因为,0.4-0.1-0.2=0.3),而在RIRM_ID列中不再生成新的记录(因为,0.2-0.1-0.1=0)。这样,就在数据库表中生成了既满足每一单个谓词的过滤因子、又满足各谓词组合的过滤因子的数据。当在数据库表中生成了满足各谓词及谓词组合的数据之后,可以接着使用前文中所述的方法在各单个列的其余记录中生成符合源数据库表中的分布统计特性的数据。
根据本发明的实施例,所述数据库语句所涉及的数据的与选择率有关的约束关系包括与数据库语句中涉及具有联结关系的多个数据库表的多个列的谓词的过滤因子有关的约束关系;且其中,所述数据生成模块103进一步被配置为:使在目标数据库中生成的数据满足或基本满足所述谓词的过滤因子。也就是说,约束关系获得模块105将通过分析例如所捕获的工作负载中的数据库语句获得数据库语句中涉及的具有联结关系的多个数据库表及这些数据库表之间的联结关系,并获得涉及这些数据库表的多个列的谓词以及这样的谓词的过滤因子,而数据生成模块103使得在目标数据库中生成的数据满足这样的谓词的过滤因子。根据前文中所述,数据生成模块103在目标数据库中生成的数据首先使得数据库表的单个列中的数据具有与源数据表的相应列中的数据相似的分布统特性,其次使得同一个数据库表中的不同列中的数据满足涉及这些列的谓词和谓词组合的过滤因子,然而,数据库语句中的谓词涉及的具有联结关系的多个数据库表的多个列的数据之间也应当满足或基本满足一定的约束关系,即满足或基本满足这样的谓词的过滤因子。换言之,在目标数据库中生成的数据应使得该涉及具有联结关系的多个数据库表的多个列的谓词在目标数据库中获得的过滤因子类似于该谓词在源数据库中获得的过滤因子。数据生成模块103可通过对所前文中所述已在各数据库表的各列中生成的数据进行适当调整来使得所述数据满足或基本满足这样的谓词的过滤因子,例如通过修改目标数据库表的列中数据的大小来满足或基本满足谓词的过滤因子。
图4示出了一组示例性数据库语句、从该组数据库语句中获得的多个数据库表之间的联结关系、以及表示这些数据库表的列的数据之间的关系的谓词。如图所示,从数据库语句的谓词BP3.FUND_CODE=J72.FUND_CDE,可获得表BP3和J72之间的联结关系①,以及这两个表的列BP3.FUND_CODE和J72.FUND_CDE的数据之间的关系;从谓词FG5.FCS_DTR_ID_1=BP3.FCS_DTR_ID_1和FG5.FCS_DTR_ID_2=BP3.FCS_DTR_ID_2可获得表FG5和BP3之间的联结关系②,以及这两个表的列FG5.FCS_DTR_ID_1与BP3.FCS_DTR_ID_1的数据之间的关系,和列FG5.FCS_DTR_ID_2与BP3.FCS_DTR_ID_2的数据之间的关系;从谓词R11.FUND_CODE=J72.FUND_CDE可获得表R11与J72之间的联结关系③,以及这两个表的列R11.FUND_CODE与J72.FUND_CDE的数据之间的关系;从谓词FG5.F1_GROUP_NBR=R11.F1_GROP_NBR和FG5.FINANCIAL_ID=R11.FINANCIAL_ID可获得表FG5和R11之间的联结关系④,以及这两个表的列FG5.F1_GROUP_NBR和R11.F1_GROP_NBR的数据之间的关系,和列FG5.FINANCIAL_ID和R11.FINANCIAL_ID的数据之间的关系;从谓词R11.FUND_CODE=BP3.FUND_CDE可获得表R11与BP3之间的联结关系⑤,以及两个表的列R11.FUND_CODE和BP3.FUND_CDE的数据之间的关系。所述数据生成模块103可以根据所获得的各表的列之间的关系对数据库表的列中生成的数据进行调整来使得调整后的数据满足或基本满足这些谓词的过滤因子。
语句修改模块104,被配置为修改所捕获的工作负载中的至少部分数据库语句,以使得修改后的数据库语句在目标数据库上的执行具有原数据库语句在源数据库上的执行的相似的性能特征,从而获得测试工作负载。根据本发明的实施例,所述相似的性能特征是指相似的谓词过滤因子。由前文中所述过程在目标数据库中生成的数据具有与源***中的数据相似的数据分布统计特性,但两者并非完全一样。因此,在源数据库上可很好工作的数据库语句未必能够在目标数据库上也很好地工作。为了使测试具有可比较的性能度量,需要对所捕获的工作负载中的至少部分数据库语句进行修改。这些数据库语句中的常量值应当根据在目标数据库中所生成的数据进行替换,以使得这些数据库语句在目标数据库上的执行具有与在原数据库中执行相似的性能特征,也就是说,使这些数据库语句中的谓词在目标数据库上的过滤因子类似于在源数据库上的过滤因子。例如,查询“SELECT...WHERE NAME=’SMITH’”可在源***上返回一些记录,但在具有所生成数据的目标***上可能无法返回记录,因为目录数据库中没有NAME=’SMITH’的记录。为此,需要修改该查询以使其返回相似的结果,例如返回相似数量的记录。所述修改意味着将查询中的常量值替换为与目标数据库中生成的数据匹配的值。例如,对于上述示例,将查询修改为“SELECT...WHERE NAME=‘SSS’”,而目标数据库的表中具有类似数量的NAME=’SSS’的记录。例如,如果源数据库的表中有75%的记录具有NAME=’SMITH’的值,则目标数据库的表中也应当有大约75%的记录具有NAME-‘SSS’的值。
对于包含变量或参数标记(parameter marker)的查询,语句修改模块104也将为这些变量或参数标记生成常量值,并确保包含这些常量值的查询在目标数据库上的执行返回与在源数据库上的执行相似的结果。
根据本发明的实施例,该***还包括一语句验证模块(未示出),其被配置为验证所捕获的工作负载中的数据库表在目标数据库上的执行是否能返回与在源数据库上的执行相似的结果,例如相似的记录数量。在这样的实施例中,所述语句修改模块104被配置为仅修改所捕获的工作负载中无法返回相似的结果的数据库语句,而不必修改能够返回相似的结果的数据库语句。
根据本发明的实施例,所述语句修改模块104进一步包括:语句修改子模块,结果集获得子模块,列值寻找子模块,以及常量值替换子模块。
所述语句修改子模块被配置为针对包含联结关系的数据库语句,通过将其中的本地谓词删除,将本地谓词中涉及的数据库表的列添加到SELECT子句获得修改的数据库语句。
所述结果集获得子模块被配置为通过针对目标数据库执行所述修改的数据库语句获得结果集。由于修改后的数据库语句中的所有本地谓词都被删除,因此,可确保修改后的数据库语句返回记录。
所述常量值寻找子模块被配置为在结果集中寻找选择率与所述本地谓词在源数据库上的单独及组合过滤因子最接近的列值。
所述常量值替换子模块被配置为使用所寻找的列值替换所述包含联结关系的数据库语句中的本地谓词的常量值。经过这样替换修改的数据库语句在目标数据库上的执行将返回与原数据库语句在源数据库上的执行所返回的相近的记录数量。
图5例示了根据该实施例对包含联结关系的数据库语句进行修改的过程。如图所示,针对图中①处所示的包含联结关系的数据库语句,语句修改子模块将把其中的本地谓词“Where J72.SEC_ISS_ID=:H ANDR11.RIRM_NBR=:H”删除,将其中涉及的数据库表的列“J72.SEC_ISS_ID”和“R11.RIRM_NBR”添加到数据库语句的SELECT子句,从而获得如②所示的修改的数据库语句。如图中所示,为了方便后续查找,在该数据库语句中还添加了“GROUP BY J72.SEC_ISS_ID,R11.RIRM_NBR”子句,但这不是必需的。结果集获得子模块通过在目标数据库上执行该修改的数据库语句,获得了如图中下方所示的结果集。常量值寻找子模块在该结果集中寻找到本地谓词所涉及的列的如下一组列值:R11.RIRM_NB=1000,其过滤因子为0.5;J72.SEC_ISS_ID=25000,其过滤因子为0.4;两者组合的过滤因子为0.3。该组列值及其组合的过滤因子与这两个本地谓词在源数据库上执行的单独及组合过滤因子最为接近,因此,该组列值被选定,如图中③处所示。最后,常量值替换子模块用所选择的列值原数据库语句中的本地谓词的常量值,从而获得如④处所示的经替换修改的数据库语句。该经替换修改的数据库语句在目标数据库上的执行将返回与在源数据库上执行所返回的相近数量的记录。
根据本发明的实施例,该***100还包括:可选的测试工作负载执行模块(未示出),其被配置为在目标数据库上执行所述测试工作负载,以针对目标数据库进行测试。该测试工作负载执行模块例如可以为一应用驱动器,其针对目标数据库执行由语句修改模块104所产生的测试工作负载,以模拟源***中的应用的行为。该应用驱动器通常还可以包含用于将测试执行结果与预期结果进行比较的逻辑,所述预期结果例如可以是在工作负载在源***中执行的结果。所述结果比较既可包含功能结果的比较,又可包含性能结果的比较。所述性能结果例如可包括语句执行占用时间、所消耗的CPU和I/O资源等。如果测试执行的结果与预期结果相差较大,则可确定在目标***(例如,数据库管理***)中可能存在问题。并且,应用驱动器可以输出包含比较结果以及所确定的可能存储的问题的报告。
以上参照附图描述了根据本发明的实施例的用于生成数据库的测试工作负载的***100,应指出的是,以上描述仅为示例,而不是对本发明的限制。在本发明的其他实施例中,该***100可具有更多、更少或不同的模块,且各模块之间的包含、连接、功能等关系可以与所描述和图示的不同。例如,所述约束关系获得模块105、谓词分类模块、出现频率计算模块既可以位于源***处,也可以位于目标***处,甚至可以位于数据生成模块103之内,等等。
用于生成数据库的测试工作负载的方法
在本发明的另一个方面,还提供了一种用于生成数据库的测试工作负载的方法。图6示出了根据本发明的实施例的用于生成数据库的测试工作负载的方法。如图所示,该方法包括如下步骤:
在步骤601,捕获源***上包含针对源数据库发出的数据库语句的工作负载。
在步骤602,收集源数据库中的数据模式和数据分布统计特性;
在步骤603,根据所述收集的源数据库中的数据模式在目标数据库中创建具有相同数据模式的数据对象,以及根据所述收集的数据分布统计特性在目标数据库中生成具有相似数据分布统计特性的数据。
在步骤604,修改所捕获的工作负载中的至少部分数据库语句,以使得修改后的数据库语句在目标数据库上的执行具有原数据库语句在源数据库上的执行的相似的性能特征,从而获得测试工作负载。
根据本发明的实施例,该方法还包括如下可选的步骤605:在目标数据库上执行所述测试工作负载,以针对目标数据库进行测试。
根据本发明的实施例,所述收集源数据库中的数据模式和数据分布统计特性包括仅收集所述工作负载中包含的数据库语句所涉及的、源数据库中的数据模式和数据分布统计特性。
根据本发明的实施例,所述相似的性能特征是指相似的谓词过滤因子。
根据本发明的实施例,所述数据分布统计特性包括数据库表的列中的数据的最大值、最小值、基数和大小,或者数据库表的列中的数据中出现频率最高的若干数值各自的出现频率以及由所述数值划分的每个数据段的最大值、最小值、基数和大小。
根据本发明的实施例,该方法还包括:获得在源***上数据库语句所涉及的数据的与选择率有关的约束关系的步骤;且其中,所述在目标数据库中生成具有相似数据分布统计特性的数据进一步包括:在目标数据库中生成满足所述与选择率有关的约束关系且具有相似数据分布统计特性的数据。
根据本发明的实施例,所述数据库语句所涉及的数据的与选择率有关的约束关系包括与数据库语句中涉及同一数据库表的多个列的多个谓词的过滤因子有关的约束关系,且其中,所述生成满足所述与选择率有关的约束关系且具有相似数据分布统计特征的数据进一步包括:首先生成满足或基本满足涉及较多列的谓词或谓词组合的过滤因子的数据,然后生成满足或基本满足涉及较少列的谓词或谓词组合的过滤因子的数据。
根据本发明的实施例,所述数据库语句所涉及的数据的与选择率有关的约束关系包括与数据库语句中涉及具有联结关系的多个数据库表的多个列的谓词的过滤因子有关的约束关系;且其中,所述生成满足所述与选择率有关且具有相似数据分布统计特性的约束关系的数据进一步包括:使在目标数据库中生成的数据满足或基本满足所述谓词的过滤因子。
根据本发明的实施例,该方法还包括以下步骤:将数据库语句中的谓词和谓词组合按照所涉及的数据库表的列划分为不同类别;计算不同类别的谓词和谓词组合在数据库语句中的出现频率;且其中,所述获得源***上数据库语句所涉及的数据的与选择率有关的约束关系的步骤包括仅获得与属于出现频率较高的类别的谓词和谓词组合的过滤因子有关的约束关系。
根据本发明的实施例,所述修改至少部分所捕获的数据库语句进一步包括:针对包含联结关系的数据库语句,通过将其中的本地谓词删除,将本地谓词中涉及的数据库表的列添加到SELECT子句获得修改的数据库语句;通过针对目标数据库执行所述修改的数据库语句获得结果集;在结果集中寻找选择率与所述本地谓词在源数据库上的单独及组合过滤因子相近的列值;以及使用所述列值替换所述包含联结关系的数据库语句中的本地谓词的常量值。
以上参照附图描述了根据本发明的实施例的用于生成数据库的测试工作负载的方法,应指出的是,以上描述仅为示例,而不是对本发明的限制。在本发明的其他实施例中,该方法可具有更多、更少或不同的步骤,且各模块之间的包含、顺序、功能等关系可以与所描述和图示的不同。
根据以上说明可知,本发明的关键点在于,利用基于选择率的数据生成及语句修改来不仅确保语句及所产生的测试工作负载(及测试应用)可以与所生成的数据一起工作,而且保持了原语句/工作负载的相同的选择率和访问模式。语句修改将所生成的数据与所捕获的语句流相关联。
本发明的另一关键点在于,只有元信息被从源***复制到目标***,这样,源工作负载的所有者不必担心泄露机密信息。同时,在目标***上生成的数据在数据分布方面具有与源***上的数据相同的特性,因为目标***上的数据是基于与源工作负载所涉及数据的相同统计特性生成的。
本发明的实施例不仅考虑了数据的元信息,而且考虑工作负载的语句以确定数据结构/表之间的关系。这极大地改善了所生成数据的质量,因此可制订描述数据特征的更多约束。
用于数据生成的元信息以及语句修改的使用实现了工作负载与源环境的完全解耦,但仍保持完整的“端到端”特征。这使得很容易将工作负载打包,并将其转换或应用到其他环境。
与现有的解决方案相比,本发明具有如下优点:
1)该解决方案可确定用户的机密信息的私密性;
2)模拟环境中的查询的选择率保持与用户的生产环境中的相同,这对于帮助确定数据库管理***的优化器中错误(bug)是非常重要的。
3)数据和语句被视为一个整体。不仅生成数据,而且生成驱动应用的语句。
4)所有操作是自动实现的。测试者不需要花费大量时间用于测试工作负载的生成。
图7示出了适于用来实现本发明实施方式的示例性计算***700的框图。如所示,计算机***700可以包括:CPU(中央处理单元)701、RAM(随机存取存储器)702、ROM(只读存储器)703、***总线704、硬盘控制器705、键盘控制器706、串行接口控制器707、并行接口控制器708、显示控制器709、硬盘710、键盘711、串行外部设备712、并行外部设备713和显示器714。在这些设备中,与***总线704耦合的有CPU 701、RAM 702、ROM 703、硬盘控制器705、键盘控制器706、串行控制器707、并行控制器708和显示控制器709。硬盘710与硬盘控制器705耦合,键盘711与键盘控制器706耦合,串行外部设备712与串行接口控制器707耦合,并行外部设备713与并行接口控制器708耦合,以及显示器714与显示控制器709耦合。应当理解,图7所述的结构框图仅仅为了示例的目的而示出的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况而增加或者减少某些设备。
所属技术领域的技术人员知道,本发明的多个方面可以体现为***、方法或计算机程序产品。因此,本发明的多个方面可以具体实现为以下形式,即,可以是完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、或者本文一般称为“电路”、“模块”或“***”的软件部分与硬件部分的组合。此外,本发明的多个方面还可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可用的程序码。
可以使用一个或多个计算机可读的介质的任何组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电的、磁的、光的、电磁的、红外线的、或半导体的***、装置、器件或任何以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括以下:有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任何合适的组合。在本文件的语境中,计算机可读存储介质可以是任何包含或存储程序的有形的介质,该程序被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可包括在基带中或者作为载波一部分传播的、其中体现计算机可读的程序码的传播的数据信号。这种传播的信号可以采用多种形式,包括——但不限于——电磁信号、光信号或任何以上合适的组合。计算机可读的信号介质可以是并非为计算机可读存储介质、但是能发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序的任何计算机可读介质。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者任何合适的上述组合。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者任何合适的上述组合。
用于执行本发明的操作的计算机程序码,可以以一种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++之类,还包括常规的过程式程序设计语言—诸如”C”程序设计语言或类似的程序设计语言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。
以上参照按照本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本发明的多个方面。要明白的是,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得通过计算机或其它可编程数据处理装置执行的这些指令,产生实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能指令计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品。
也可以把计算机程序指令加载到计算机或其它可编程数据处理装置上,使得在计算机或其它可编程数据处理装置上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机或其它可编程装置上执行的指令就提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (20)
1.一种用于生成数据库的测试工作负载的***,包括:
工作负载捕获模块,被配置为捕获源***上包含针对源数据库发出的原数据库语句的工作负载;
元信息收集模块,被配置为收集源数据库中的数据模式和数据分布统计特性;
数据生成模块,被配置为根据所述元信息收集模块收集的源数据库中的数据模式在目标数据库中创建具有相同数据模式的数据对象,以及根据所述元信息收集模块收集的数据分布统计特性在目标数据库中生成具有相似数据分布统计特性的数据;以及
语句修改模块,被配置为修改所述工作负载捕获模块捕获的工作负载中的至少部分原数据库语句,以使得修改后的数据库语句在目标数据库上的执行具有所述原数据库语句在源数据库上的执行的相似的性能特征,从而获得测试工作负载。
2.根据权利要求1的***,还包括:
测试工作负载执行模块,被配置为在目标数据库上执行所述测试工作负载,以针对目标数据库进行测试。
3.根据权利要求1的***,其中,所述元信息收集模块被配置为仅收集所述工作负载中包含的原数据库语句所涉及的、源数据库中的数据模式和数据分布统计特性。
4.根据权利要求1的***,其中,所述相似的性能特征是指相似的谓词过滤因子。
5.根据权利要求1的***,其中,所述数据分布统计特性包括数据库表的列中的数据的最大值、最小值、基数和大小,或者数据库表的列中的数据中出现频率最高的若干数值各自的出现频率以及由所述数值划分的每个数据段的最大值、最小值、基数和大小。
6.根据权利要求1的***,还包括:
约束关系获得模块,被配置为获得在源***上原数据库语句所涉及的数据的与选择率有关的约束关系;
且其中,所述数据生成模块进一步被配置为在目标数据库中生成满足或基本满足所述与选择率有关的约束关系且具有相似数据分布统计特性的数据。
7.根据权利要求6的***,其中,所述原数据库语句所涉及的数据的与选择率有关的约束关系包括与原数据库语句中涉及同一数据库表的多个列的多个谓词的过滤因子有关的约束关系;
且其中,所述数据生成模块进一步被配置为:首先生成满足或基本满足涉及较多列的谓词或谓词组合的过滤因子的数据,然后生成满足或基本满足涉及较少列的谓词或谓词组合的过滤因子的数据。
8.根据权利要求6的***,其中,所述原数据库语句所涉及的数据的与选择率有关的约束关系包括与原数据库语句中涉及具有联结关系的多个数据库表的多个列的谓词的过滤因子有关的约束关系;
且其中,所述数据生成模块进一步被配置为:使在目标数据库中生成的数据满足或基本满足所述谓词的过滤因子。
9.根据权利要求6的***,还包括:
谓词分类模块,被配置为将原数据库语句中的谓词和谓词组合按照所涉及的数据库表的列划分为不同类别;
出现频率计算模块,被配置为计算不同类别的谓词和谓词组合在数据库语句中的出现频率;
且其中,所述约束关系获得模块进一步被配置为仅获得属于出现频率较高的类别的谓词和谓词组合的过滤因子。
10.根据权利要求1的***,其中,所述语句修改模块进一步包括:
语句修改子模块,被配置为针对包含联结关系的原数据库语句,通过将其中的本地谓词删除,将本地谓词中涉及的数据库表的列添加到SELECT子句获得修改的数据库语句;
结果集获得子模块,被配置为通过针对目标数据库执行所述修改的数据库语句获得结果集;
列值查找子模块,被配置为在结果集中寻找选择率与所述本地谓词在源数据库上的单独及组合过滤因子相近的列值;以及
常量值替换子模块,使用所述列值替换所述包含联结关系的数据库语句中的本地谓词的常量值。
11.一种用于生成数据库的测试工作负载的方法,包括:
捕获源***上包含针对源数据库发出的原数据库语句的工作负载;
收集源数据库中的数据模式和数据分布统计特性;
根据所述收集的源数据库中的数据模式在目标数据库中创建具有相同数据模式的数据对象,以及根据所述收集的数据分布统计特性在目标数据库中生成具有相似数据分布统计特性的数据;以及
修改所捕获的工作负载中的至少部分原数据库语句,以使得修改后的数据库语句在目标数据库上的执行具有所述原数据库语句在源数据库上的执行的相似的性能特征,从而获得测试工作负载。
12.根据权利要求11的方法,还包括:
在目标数据库上执行所述测试工作负载,以针对目标数据库进行测试。
13.根据权利要求11的方法,其中,所述收集源数据库中的数据模式和数据分布统计特性包括仅收集所述工作负载中包含的原数据库语句所涉及的、源数据库中的数据模式和数据分布统计特性。
14.根据权利要求11的方法,其中,所述相似的性能特征是指相似的谓词过滤因子。
15.根据权利要求11的方法,其中,所述数据分布统计特性包括数据库表的列中的数据的最大值、最小值、基数和大小,或者数据库表的列中的数据中出现频率最高的若干数值各自的出现频率以及由所述数值划分的每个数据段的最大值、最小值、基数和大小。
16.根据权利要求11的方法,还包括:
获得在源***上原数据库语句所涉及的数据的与选择率有关的约束关系;
且其中,所述在目标数据库中生成具有相似数据分布统计特性的数据进一步包括:在目标数据库中生成满足或基本满足所述与选择率有关的约束关系且具有相似数据分布统计特性的数据。
17.根据权利要求16的方法,其中,所述数据库语句所涉及的数据的与选择率有关的约束关系包括与原数据库语句中涉及同一数据库表的多个列的多个谓词的过滤因子有关的约束关系;
且其中,所述生成满足所述与选择率有关的约束关系且具有相似数据分布统计特征的数据进一步包括:首先生成满足或基本满足涉及较多列的谓词或谓词组合的过滤因子的数据,然后生成满足或基本满足涉及较少列的谓词或谓词组合的过滤因子的数据。
18.根据权利要求16的方法,其中,所述原数据库语句所涉及的数据的与选择率有关的约束关系包括与数据库语句中涉及具有联结关系的多个数据库表的多个列的谓词的过滤因子有关的约束关系;
且其中,所述生成满足所述与选择率有关且具有相似数据分布统计特性的约束关系的数据进一步包括:使在目标数据库中生成的数据满足或基本满足所述谓词的过滤因子。
19.根据权利要求16的方法,还包括:
将数据库语句中的谓词和谓词组合按照所涉及的数据库表的列划分为不同类别;
计算不同类别的谓词和谓词组合在数据库语句中的出现频率;
且其中,所述获得源***上数据库语句所涉及的数据的与选择率有关的约束关系的步骤包括仅获得属于出现频率较高的类别的谓词和谓词组合的过滤因子。
20.根据权利要求11的方法,其中,修改至少部分所捕获的数据库语句进一步包括:
针对包含联结关系的数据库语句,通过将其中的本地谓词删除,将本地谓词中涉及的数据库表的列添加到SELECT子句获得修改的数据库语句;
通过针对目标数据库执行所述修改的数据库语句获得结果集;
在结果集中寻找选择率与所述本地谓词在源数据库上的单独及组合过滤因子相近的列值;以及
使用所述列值替换所述包含联结关系的数据库语句中的本地谓词的常量值。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110429529.1A CN103176973B (zh) | 2011-12-20 | 2011-12-20 | 用于生成数据库的测试工作负载的***和方法 |
US13/647,122 US8924402B2 (en) | 2011-12-20 | 2012-10-08 | Generating a test workload for a database |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110429529.1A CN103176973B (zh) | 2011-12-20 | 2011-12-20 | 用于生成数据库的测试工作负载的***和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103176973A true CN103176973A (zh) | 2013-06-26 |
CN103176973B CN103176973B (zh) | 2016-04-20 |
Family
ID=48611276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110429529.1A Expired - Fee Related CN103176973B (zh) | 2011-12-20 | 2011-12-20 | 用于生成数据库的测试工作负载的***和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8924402B2 (zh) |
CN (1) | CN103176973B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424182A (zh) * | 2013-08-19 | 2015-03-18 | 中国电信股份有限公司 | 数据仓库平台中工作负载仿真性能测试方法与装置 |
CN104657388A (zh) * | 2013-11-22 | 2015-05-27 | 阿里巴巴集团控股有限公司 | 一种数据处理方法和装置 |
CN108255477A (zh) * | 2018-01-15 | 2018-07-06 | 贵州易鲸捷信息技术有限公司 | 一种通过sql编译器模拟优化数据库性能的方法及*** |
CN108334521A (zh) * | 2017-01-19 | 2018-07-27 | 阿里巴巴集团控股有限公司 | 一种数据库容量预测方法及装置 |
CN112486738A (zh) * | 2019-09-12 | 2021-03-12 | 阿里巴巴集团控股有限公司 | 负载测试方法、装置、电子设备及计算机可读存储介质 |
CN112632105A (zh) * | 2020-01-17 | 2021-04-09 | 华东师范大学 | 大规模事务负载生成与数据库隔离级别正确性验证***及方法 |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120041989A1 (en) * | 2010-08-16 | 2012-02-16 | Tata Consultancy Services Limited | Generating assessment data |
CA2823658C (en) | 2011-01-28 | 2018-03-13 | Ab Initio Technology Llc | Generating data pattern information |
US8996915B2 (en) * | 2012-06-29 | 2015-03-31 | International Business Machines Corporation | Test data generation and scale up for database testing |
EP2909746B1 (en) | 2012-10-22 | 2019-12-18 | Ab Initio Technology LLC | Profiling data with source tracking |
US9892026B2 (en) * | 2013-02-01 | 2018-02-13 | Ab Initio Technology Llc | Data records selection |
US10515231B2 (en) * | 2013-11-08 | 2019-12-24 | Symcor Inc. | Method of obfuscating relationships between data in database tables |
US10579599B2 (en) * | 2013-11-21 | 2020-03-03 | Oracle International Corporation | Upgrade of heterogeneous multi-instance database clusters |
US20150169707A1 (en) * | 2013-12-18 | 2015-06-18 | University College Dublin | Representative sampling of relational data |
US9613074B2 (en) * | 2013-12-23 | 2017-04-04 | Sap Se | Data generation for performance evaluation |
US11487732B2 (en) | 2014-01-16 | 2022-11-01 | Ab Initio Technology Llc | Database key identification |
EP3114578A1 (en) | 2014-03-07 | 2017-01-11 | AB Initio Technology LLC | Managing data profiling operations related to data type |
SG11201701822RA (en) * | 2014-09-08 | 2017-04-27 | Ab Initio Technology Llc | Data-driven testing framework |
US10956381B2 (en) * | 2014-11-14 | 2021-03-23 | Adp, Llc | Data migration system |
CN104866425A (zh) * | 2015-05-22 | 2015-08-26 | 国云科技股份有限公司 | 一种数据库压力测试的方法 |
US9535934B1 (en) * | 2015-11-17 | 2017-01-03 | International Business Machines Corporation | Schema lifecycle manager |
US9977728B2 (en) * | 2016-06-30 | 2018-05-22 | International Business Machines Corporation | Visual test workload execution modeling |
US10643168B2 (en) | 2016-09-08 | 2020-05-05 | International Business Machines Corporation | Using customer and workload profiling and analytics to determine, score, and report portability of customer and test environments and workloads |
US10586242B2 (en) | 2016-09-08 | 2020-03-10 | International Business Machines Corporation | Using customer profiling and analytics to understand customer workload complexity and characteristics by customer geography, country and culture |
US10664786B2 (en) | 2016-09-08 | 2020-05-26 | International Business Machines Corporation | Using run time and historical customer profiling and analytics to determine customer test vs. production differences, and to enhance customer test effectiveness |
US10684939B2 (en) | 2016-09-08 | 2020-06-16 | International Business Machines Corporation | Using workload profiling and analytics to understand and score complexity of test environments and workloads |
US10592911B2 (en) | 2016-09-08 | 2020-03-17 | International Business Machines Corporation | Determining if customer characteristics by customer geography, country, culture or industry may be further applicable to a wider customer set |
CN106445763A (zh) * | 2016-09-09 | 2017-02-22 | 中国南方电网有限责任公司电网技术研究中心 | 配用电大数据平台测试方法和*** |
US10628840B2 (en) | 2016-09-14 | 2020-04-21 | International Business Machines Corporation | Using run-time and historical customer profiling and analytics to determine and score customer adoption levels of platform technologies |
US10643228B2 (en) | 2016-09-14 | 2020-05-05 | International Business Machines Corporation | Standardizing customer and test data and information collection for run time and historical profiling environments and workload comparisons |
US10621072B2 (en) | 2016-09-14 | 2020-04-14 | International Business Machines Corporation | Using customer profiling and analytics to more accurately estimate and generate an agile bill of requirements and sprints for customer or test workload port |
CN107133159B (zh) * | 2017-05-10 | 2020-12-01 | 北京亿智云科技有限公司 | 测试数据库创建方法及测试数据库创建*** |
US11068540B2 (en) | 2018-01-25 | 2021-07-20 | Ab Initio Technology Llc | Techniques for integrating validation results in data profiling and related systems and methods |
US11227065B2 (en) * | 2018-11-06 | 2022-01-18 | Microsoft Technology Licensing, Llc | Static data masking |
CN109783391A (zh) * | 2019-01-28 | 2019-05-21 | 浪潮软件集团有限公司 | 一种基于用户大数据行为反馈数据的分布式数据库测试方法和*** |
US11176275B2 (en) | 2019-07-08 | 2021-11-16 | International Business Machines Corporation | De-identifying source entity data |
US11663179B2 (en) | 2020-12-21 | 2023-05-30 | International Business Machines Corporation | Data simulation for regression analysis |
US11645283B2 (en) | 2021-04-26 | 2023-05-09 | International Business Machined Corporation | Predictive query processing |
US11409641B1 (en) * | 2021-08-03 | 2022-08-09 | Fmr Llc | Mutation testing of database functions |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080098003A1 (en) * | 2006-10-20 | 2008-04-24 | Oracle International Corporation | Database workload replay remapping infrastructure |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7299220B2 (en) | 2004-03-31 | 2007-11-20 | Microsoft Corporation | Constructing database object workload summaries |
US7636707B2 (en) | 2004-04-06 | 2009-12-22 | Microsoft Corporation | Query selectivity estimation with confidence interval |
US7840555B2 (en) | 2005-09-20 | 2010-11-23 | Teradata Us, Inc. | System and a method for identifying a selection of index candidates for a database |
US8024339B2 (en) | 2005-10-12 | 2011-09-20 | Business Objects Software Ltd. | Apparatus and method for generating reports with masked confidential data |
US20070250524A1 (en) | 2006-04-19 | 2007-10-25 | Jian Le | Method and apparatus for workload and model based materialized query table or view recommendation technique |
US8024299B2 (en) | 2006-10-20 | 2011-09-20 | Oracle International Corporation | Client-driven functionally equivalent database replay |
US8122066B2 (en) | 2008-10-14 | 2012-02-21 | Hewlett-Packard Development Company, L.P. | Database query profiler |
-
2011
- 2011-12-20 CN CN201110429529.1A patent/CN103176973B/zh not_active Expired - Fee Related
-
2012
- 2012-10-08 US US13/647,122 patent/US8924402B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080098003A1 (en) * | 2006-10-20 | 2008-04-24 | Oracle International Corporation | Database workload replay remapping infrastructure |
Non-Patent Citations (3)
Title |
---|
LEFEVRE等: "Mondrian multidimensional k-anonymity", 《IEEE》, 30 April 2006 (2006-04-30) * |
LEFEVRE等: "Workload-aware anonymization", 《ACM》, 30 August 2006 (2006-08-30) * |
SAMARATI等: "Protecting privacy when disclosing information k-anonymity and its enforcement through generalization and suppression", 《TECHNICAL REPORT, SRI INTERNATIONAL》, 31 December 1998 (1998-12-31) * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424182A (zh) * | 2013-08-19 | 2015-03-18 | 中国电信股份有限公司 | 数据仓库平台中工作负载仿真性能测试方法与装置 |
CN104657388A (zh) * | 2013-11-22 | 2015-05-27 | 阿里巴巴集团控股有限公司 | 一种数据处理方法和装置 |
CN108334521A (zh) * | 2017-01-19 | 2018-07-27 | 阿里巴巴集团控股有限公司 | 一种数据库容量预测方法及装置 |
CN108334521B (zh) * | 2017-01-19 | 2022-04-19 | 阿里巴巴集团控股有限公司 | 一种数据库容量预测方法及装置 |
CN108255477A (zh) * | 2018-01-15 | 2018-07-06 | 贵州易鲸捷信息技术有限公司 | 一种通过sql编译器模拟优化数据库性能的方法及*** |
CN112486738A (zh) * | 2019-09-12 | 2021-03-12 | 阿里巴巴集团控股有限公司 | 负载测试方法、装置、电子设备及计算机可读存储介质 |
CN112632105A (zh) * | 2020-01-17 | 2021-04-09 | 华东师范大学 | 大规模事务负载生成与数据库隔离级别正确性验证***及方法 |
CN112632105B (zh) * | 2020-01-17 | 2021-09-10 | 华东师范大学 | 大规模事务负载生成与数据库隔离级别正确性验证***及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103176973B (zh) | 2016-04-20 |
US8924402B2 (en) | 2014-12-30 |
US20130159353A1 (en) | 2013-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103176973B (zh) | 用于生成数据库的测试工作负载的***和方法 | |
CN112534401B (zh) | 用于数据流图优化的***和方法 | |
WO2021242288A1 (en) | Solution automation | |
Dallachiesa et al. | NADEEF: a commodity data cleaning system | |
Fan | Graph pattern matching revised for social network analysis | |
US8903762B2 (en) | Modeling data exchange in a data flow of an extract, transform, and load (ETL) process | |
Wang et al. | Cleaning structured event logs: A graph repair approach | |
De Leoni et al. | A holistic approach for soundness verification of decision-aware process models | |
US10885034B2 (en) | Data query method and apparatus, and database system | |
US7676453B2 (en) | Partial query caching | |
US8694561B2 (en) | System and method of optimizing performance of schema matching | |
van der Aalst | Distributed process discovery and conformance checking | |
US9679021B2 (en) | Parallel transactional-statistics collection for improving operation of a DBMS optimizer module | |
KR20130095250A (ko) | 관련 데이터세트의 처리 | |
JP5791149B2 (ja) | データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム | |
CN104137095A (zh) | 用于演进分析的*** | |
CN104636130A (zh) | 用于生成事件树的方法和*** | |
Burgueño et al. | On the concurrent execution of model transformations with linda | |
Manousis et al. | Automating the adaptation of evolving data-intensive ecosystems | |
CN111814458A (zh) | 规则引擎***优化方法、装置、计算机设备及存储介质 | |
De Alwis et al. | Microservice remodularisation of monolithic enterprise systems for embedding in industrial IoT networks | |
Diamantopoulos et al. | Engineering for a science-centric experimentation platform | |
Jovanovic et al. | Integrating ETL processes from information requirements | |
Song et al. | Querying process models based on the temporal relations between tasks | |
Calvanese et al. | Extracting event data from document-driven enterprise systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160420 Termination date: 20201220 |
|
CF01 | Termination of patent right due to non-payment of annual fee |