CN114968748B - 一种数据库测试方法、系统及装置 - Google Patents

一种数据库测试方法、系统及装置 Download PDF

Info

Publication number
CN114968748B
CN114968748B CN202210902052.2A CN202210902052A CN114968748B CN 114968748 B CN114968748 B CN 114968748B CN 202210902052 A CN202210902052 A CN 202210902052A CN 114968748 B CN114968748 B CN 114968748B
Authority
CN
China
Prior art keywords
partition
database
tested
data
instruction
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.)
Active
Application number
CN202210902052.2A
Other languages
English (en)
Other versions
CN114968748A (zh
Inventor
马文豪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Oceanbase Technology Co Ltd
Original Assignee
Beijing Oceanbase Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Oceanbase Technology Co Ltd filed Critical Beijing Oceanbase Technology Co Ltd
Priority to CN202210902052.2A priority Critical patent/CN114968748B/zh
Publication of CN114968748A publication Critical patent/CN114968748A/zh
Application granted granted Critical
Publication of CN114968748B publication Critical patent/CN114968748B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3409Recording 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书实施例公开了一种数据库测试方法、系统及装置,旨在提高数据库测试效率。所述数据库测试方法包括:获取用户输入的测试参数;所述测试参数包括表结构描述信息;基于所述表结构描述信息生成分区表元数据;所述分区表元数据反映一个或多个分区表的结构信息,所述一个或多个分区表能够组成一张完整的数据表;基于分区表元数据生成表创建指令;获取一条或多条实例数据;与待测试数据库通信,将所述表创建指令以及一条或多条实例数据传输给待测试数据库,以使得待测试数据库基于实例数据创建一个或多个分区表,其中,所述一个或多个分区表用于测试所述待测试数据库的性能。

Description

一种数据库测试方法、系统及装置
技术领域
本说明书涉及信息技术领域,特别涉及一种数据库测试方法、系统及装置。
背景技术
在计算机内部,一般以硬盘为数据存储空间资源,从而保证计算机内的数据(Data)能够持续保存。数据库(DB,Database)是计算机数据管理的有效技术,是由一批数据构成的有序集合,具有一定的结构形式并存放于存储介质(如硬盘)内,并可被各个计算机中应用程序所共享。
随着大数据场景的复杂化以及现在越来越复杂的分析类需求,数据库存储的数据量、访问量越来越大,对数据库的性能提出了更高的要求。数据库性能测试是确保数据库性能正常、可靠的有效手段。
通过人工测试(如人工抽检)实现对数据库的检测,测试效率低下且精度较差。因此,需要一种自动化测试数据库的方法,用户只需要配置较少的信息便能完成数据库的自动测试。
发明内容
本说明书实施例之一提供一种数据库测试方法,该方法由处理器执行,包括:获取用户输入的测试参数;所述测试参数包括表结构描述信息;基于所述表结构描述信息生成分区表元数据;所述分区表元数据反映一个或多个分区表的结构信息,所述一个或多个分区表能够组成一张完整的数据表;基于分区表元数据生成表创建指令;获取一条或多条实例数据;与待测试数据库通信,将所述表创建指令以及一条或多条实例数据传输给待测试数据库,以使得待测试数据库基于实例数据创建一个或多个分区表,其中,所述一个或多个分区表用于测试所述待测试数据库的性能。
本说明书实施例之一提供一种数据库测试系统,该系统包括:输入模块,用于获取用户输入的测试参数;所述测试参数包括表结构描述信息;元数据生成模块,用于基于所述表结构描述信息生成分区表元数据;所述分区表元数据反映一个或多个分区表的结构信息,所述一个或多个分区表能够组成一张完整的数据表;创建指令模块,用于基于分区表元数据生成表创建指令;实例数据获取模块,用于获取一条或多条实例数据;通信模块,用于与待测试数据库通信,将所述表创建指令以及一条或多条实例数据传输给待测试数据库,以使得待测试数据库基于实例数据创建一个或多个分区表,其中,所述一个或多个分区表用于测试所述待测试数据库的性能。
本说明书实施例之一提供一种数据库测试装置,包括处理器以及存储介质,存储介质存储有计算机指令,处理器用于执行计算机指令以实现所述数据库测试方法。
附图说明
本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1是根据本说明书一些实施例所示的一种数据库测试方法的示例性流程图;
图2是根据本说明书一些实施例所示的数据库测试系统与待测试数据库通信的示例图;
图3是根据本说明书一些实施例所示的数据库测试系统与多个待测试数据库通信的示例图;
图4是根据本说明书一些实施例所示的数据库测试系统的示例性模块图。
具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本文使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
数据库是计算机数据的有效管理技术。在数据库中,数据常常被存放在结构化的数据表中。进一步,数据表通常被描述为具有二维结构,其列对应字段,其行对应记录。字段,或称为数据项,标记实例数据的可以命名的最小信息单位,字段名一般采用实例属性的描述性名称,因此有时候字段也可以与属性互换。记录,或称为元组,一条记录能够表示一条具体的实例数据。以员工表为例,其包括工号、姓名、性别、年龄、部门、联系方式等字段,其中的记录可以具体包括“202101,张三,男,35岁,技术部,135***”、“202102,李四,女,32岁,运营部,185***”、…。
表分区是数据库产品的基础功能。它主要是指根据一定规则,将数据库中的一张数据表分解成多个更小的容易管理的部分,即分区表。从逻辑上看只有一张数据表,但是底层却是由多个分区组成。分区表可以帮助用户提升业务性能或者工作效率。例如,一张数据表中的记录很多,达到百万条,这很可能使得数据查询缓慢,然而经常使用的又只是其中较近几年(如2020年到2022年)的记录,此时,将数据表按照年限分区,针对较近几年的数据所在分区表进行查询,由于分区表中数据量显著减少,则能有效提高查询效率。这使得分区表在大数据场景中十分常用。
市面上已有的数据库产品(在不引起混淆的情况下,也可以简称为数据库)包括TiDB、Oracle、MySQL等,不同的数据库产品支持的数据库功能略有不同,例如,不同的数据库产品支持的分区类型不同,关于分区类型的更多内容可以在说明书其他地方找到,在此不再赘述。由于数据库是对批量数据进行管理,涉及的数据量都较大,数据库的性能至关重要。一般使用稳定性、功能性以及正确性衡量数据库的性能。其中,稳定性是指当数据库接收到高并发的操作请求时,能否稳定、正常的响应这些操作。功能性主要指数据库的系统性能力是否正确、可靠。以分区功能为例,如果请求将一张大表的记录按时间进行range分区,且将2000年~2010内的数据分在分区表p1中,然而数据库生成的分区表p1包含的却是1999年到2009年的数据,这意味着数据库的range分区功能存在功能性异常。正确性是指数据库在个别实例数据上的处理能力是否正确、可靠。续前例,如果分区表p1包含的数据除了2000年~2010年的数据外,还出现了一些1999年的实例数据(记录实例),这意味着数据库的正确性存在问题。
为了确保数据库能够正常、可靠的进行数据管理,可以对数据库/数据库产品的性能进行测试。在一些实施例中,主要依赖工作人员基于数据库的处理结果确定数据库的性能,效率低下。为此,本说明书一些实施例提出了一种数据库的自动测试方法,通过该方法自动测试数据库的稳定性、功能性和正确性等性能。
图1是根据本说明书一些实施例所示的数据库测试方法的示例性流程图。
在一些实施例中,图1所示的流程100可以由处理设备执行,进一步,可以由部署于处理设备之上的数据库测试系统400实现,其包括:
步骤110,获取用户输入的测试参数。在一些实施例中,步骤110可以由输入模块410实现。
在一些实施例中,数据库测试系统400可以提供用户界面,用户通过用户界面输入测试参数。其中,测试参数可以包括表结构描述信息,用于对待创建的表的结构进行指定。示例性的,表结构描述信息可以包括字段数和/或字段类型。字段数指定表中具有几个字段(或列),字段类型指定各字段的数据类型,如整型int、字符char、单精度float等。可以理解的是,当确定了字段数以及字段类型后,不论表中具有多少记录,描述每条记录的数据项的数量就确定了。
在一些实施例中,表结构描述信息还可以包括分区指示,如包括分区键、分区类型以及分区条件等信息。当表结构描述信息中不含有分区信息时,可以认为无需对数据表进行分区,当具有分区信息时,则认为需要对数据表进行分区。其中,分区键是指分区所依赖的字段,如基于“年”字段进行分区、又如基于表中“ID号”进行分区。分区类型可以包括range分区、list分区、hash分区、key分区等。Range分区是指将分区键所对应的字段值按照连续区间进行划分,每个区间对应一个数据表,进而将各记录分配给不同分区表。List分区则是指将分区键对应的字段值匹配到枚举型数据集中的某个值,数据集中的每个值对应一个分区表,进而将各记录分配给不同分区表。Hash分区是指将分区键对应的字段值计算hash值,在按照预设规则基于其hash将记录分配到对应的额分区表,其中,预设规则可以是将hash值对分区数取模,不同的模值对应不同的分区,进而将各记录划分给不同分区表。Key分区与hash分区类似,区别主要在于hash值的计算函数由数据库产品指定。在一些实施例中,可以对数据表进行多级分区,如二级分区。二级分区相对一级分区而言,例如,基于数据表中的“年份”字段进行range分区,得到多个一级分区表,此时若针对一级分区表再次进行分区,则称为二级分区,进一步得到一级分区表下的多个二级分区表。二级分区的分区类型可以是基本分区类型的组合,如包括hash list分区、hash hash分区、range hash分区等,其中,第一个分区类型为一级分区类型,第二个分区类型为二级分区类型。分区条件直接决定某记录被划分到哪一分区表,其可以条件表达式等方式描述,对于每一个分区表可以对应有自身的分区条件,使用时,当某记录分区键的值满足某分区表的分区条件时,则将该记录划分到对应的分区表。以“年份”分区键、range分区类型为例,分区条件可以表示为partition p0 less than(1991),这意味着将表中“年份”字段值小于1991的记录划分到分区表p0中。
可见,通过表结构描述信息基本可以确定数据表包含的列数、是否分区、分区的数量等,基于表结构描述信息至少可以构建空的数据表或者空的一张或多张分区表。在本说明书一些实施例中,一张分区表可以理解为无需对数据表分区的情形,例如,当表结构描述信息不包含分区信息时,则意味着只需要创建一张分区表,或不分区的数据表。
在一些实施例中,测试参数还可以包括实例描述信息,用于指定实例数量或实例数据的内容。具体的,实例描述信息可以包括表名称、字段名、实例数量等。其中,表名称可以用于描述表的基本内容,如“员工表”、“学生表”等。字段名为字段的名称,可以反映字段内容,如“年份”、“年龄”、“职位”等。实例数量则用于指定数据表包含的记录数量,如1000、10万、100万等。数据库测试系统400可以基于实例描述信息获取将导入构建的空表中的实例数据。
在一些实施例中,用户可以将测试参数写入配置文件,再传输给数据库测试系统400,或者用户可以在用户界面上通过下拉菜单、复选框等形式填入各测试参数。本说明书实施例提供的数据库测试方法,仅需要用户给出简单的测试配置信息,便可自动的完成后续测试。
步骤120,基于表结构描述信息生成分区表元数据。在一些实施例中,步骤120可以通过元数据生成模块420实现。
分区表元数据在内容上类似于表结构描述信息,区别主要在于表征形式上。分区表元数据为计算机能够识别的表达形式,例如,分区类型在分区表元数据中表达为对应的编码,如hash list分区类型(属于二级分区类型)被表达为“00001”、range分区类型被表达为“01111”,数据库测试系统400可以通过预设的映射表,将测试参数中的分区类型映射为对应的编码。
在一些实施例中,分区表元数据可以是将表结果描述信息进一步对应到各分区表上,具体可以反映分区表的结构信息。例如,对于每一张分区表,分区表元数据可以描述其分区类型、分区键、分区条件、字段数、字段类型等结构信息。
进一步,分区表元数据还可以包含字段名、表名、实例数量等信息,如果用户未在测试参数中指定这些数据,数据库测试系统400可以根据用户自定的字段数以及字段类型,随机确定适宜的字段名、表名等信息。例如,用户指定了字段数为3,字段类型包括字符型、字符型以及整型,则可以随机确定表名为“员工表”,字段名分别为“姓名”、“性别”以及“年龄”。对于实例数量,数据库测试系统400也可以随机生成。这种智能化的设置,可以进一步减少需要用户指定或配置的信息,同时增加了测试的机动性。
步骤130,基于分区表元数据生成表创建指令。在一些实施例中,步骤130可以通过创建指令模块430实现。
分区表元数据具体描述了分区表的结构信息,因此可以基于此生成表创建指令。表创建指令用于指示待测试数据库根据分区表元数据生成一个或多个空分区表。由前述内容可知,数据库产品丰富多样,需要针对具体的待测试数据生成使用其可以识别的数据库编程语言编写的指令。仅作为示例,表创建指令可以表达为如下形式:
create table /表名/(
[字段名1] 字段类型,
[字段名2] 字段类型,
…;
[字段名n] 字段类型)。
在需要进行分区的情形下,表创建指令可以表达为如下形式:
[字段名1] 字段类型,
[字段名2] 字段类型,
…)
Partition By Range (字段名2)(
Partition p0 Values less than (1991),
Partition p1 Values less than (1996),
Partition p2 Values less than Maxvalue)。
其中,Range表示分区类型,字段名2指示了分区键,Partition p0 Values lessthan (1991)等表示分区条件。
需要说明的是,以上表达形式仅为示例目的,在实际应用时,可以基于不同数据库产品识别的数据库编程语言或相关语法要求编写对应的表创建指令。
步骤140,获取一条或多条实例数据。在一些实施例中,步骤140可以由实例数据获取模块440实现。
实例数据为数据表的内容,对应其中一条条记录。
在一些实施例中,实例数据获取模块440可以随机生成实例数据,或者从已有的数据集中选取实例数据。在随机生成实例数据时,可以基于表结构描述信息中的字段类型生成适宜的实例数据。如表结构描述信息指定了3个字段,字段类型分别为字符型、字符型以及整型,则实例数据获取模块440可以自动生成“张三,男,25”、“李四,女,27”等实例数据。实例数据获取模块440还可以根据字段类型选择适宜的已有数据集,并从中选取实例数据。类似前例,实例数据获取模块440可以从“用户数据集”中选取实例数据“张三,男,25”、“李四,女,27”等。
在一些实施例中,测试数据还包括实例描述信息,此时,实例数据获取模块440可以结合示例描述信息获取更符合用户要求的实例数据。作为示例,实例描述信息指定了表名为“员工表”,字段名包括“姓名”、“年龄”、“部门”,实例数量为1000。实例数据获取模块440可以随机生成“张三,32,技术部”、“王五,33,市场部”等1000条实例数据。当然,实例数据获取模块440也可以从已有的员工数据集中选择符合实例描述信息的实例数据。
数据库测试系统400能够自动获取实例数据,或者基于用户配置自动获取更符合用户需求的实例数据,避免用户自行编撰或搜寻大量实例数据,在很大程度上节省了人力成本。
步骤150,与待测试数据库通信,将表创建指令以及一条或多条实例数据传输给待测试数据库。在一些实施例中,步骤150可以通过通信模块450实现。
通信模块450用于与待测试数据库进行交互,将数据库测试系统400生成的指令或实例数据传输待测试数据库。通信模块450可以兼容多种待测试数据库的通信接口标准,进而可以适配不同的待测试数据库。
将表创建指令以及实例数据传输给待测试数据库后,待测试数据库会执行表创建指令,并将实例数据导入数据表或者对应的分区表,得到一个或多个分区表。生成的分区表可以被分析,确定是否符合用户指定的测试参数,进而确定待测试数据库的性能。
在一些实施例中,待测试数据库首先执行表创建指令,生成一个或多个空的分区表。之后,待测试数据库再将实例数据导入到空的分区表中。
在一些实施例中,实例数据可以通过导入实例指令传输给待测试数据库,即实例数据作为导入实例指令的输入参数,被包含在指令中传给待测试数据库。此时,流程100还可以包括基于所述一条或多条实例数据,生成实例导入指令的步骤。在一些实施例中,该步骤可以由导入指令模块460实现。示例性的,实例导入指令可以为以下形式:
Insert /表名/([字段名1],[字段名2],…,[字段名n])values(’字段值1’,’字段值2’,…,’字段值n’);
上述指令可以用于将一条记录插入到数据表或分区表中。对于分区表而言,逻辑上为一张大表,在对其插入数据时,无需分区进行,只要将记录通过上述指令传输给待测试数据库,待测试数据库会自动按照预设的分区条件,将当前记录分发到对应的分区表中。数据库测试系统400可以针对每一条实例数据生成一条导入实例指令,依次将各条实例数据导入到数据表或分区表中。在一些实施例中,数据库测试系统400也可以先将实例数据写入批处理文件,通过批处理形式的实例导入指令高效的将多条实例数据批量导入数据表或分区表中。
分区表创建完成以后,数据库测试系统400还可以对分区表进行管理测试,检测待测试数据库的分区管理性能。
因此,在一些可选的实施例中,流程100还包括生成分区管理指令,与待测试数据库通信,将所述分区管理指令传输给待测试数据库。在一些实施例中,该步骤可以由分区管理模块470实现。
分区管理指令初略可以分为增加分区、删除分区、修改分区等不同类型的指令。其中,增加分区指令用于指示待测试数据库在已有数据表的分区基础上增加新的分区。作为示例,员工表具有3个分区p0、p1以及p2(基于员工入职年份进行分区),执行增加分区指令后,员工表新增p3分区。示例性的分区管理指令可以是:
Alter员工表add partition p3 values less than (2000);
其中,add partition为增加分区指令,2000对应新增分区的分区边界值。
类似的,删除分区指令用于指示待测试数据库删除已有的分区。续前例,现员工表具有4个分区,执行删除分区指令后,减少一个分区。示例性的分区管理指令可以是:
Alter员工表drop partition p0;或者,Alter员工表truncate partition p0。
修改分区指令用于对数据表的分区进行修改,可以进一步包括修改分区表的名称、融合(merge)分区以及拆分(split)分区等。
待测试数据库收到分区管理指令后,会执行得到响应结果,例如数据表新增了分区、分区表中的数据被修改等,通过分析响应结果便可了解待测试数据库的分区管理性能。
在一些可选的实施例中,流程100还包括生成实例数据管理指令,与待测试数据库通信,将所述实例数据管理指令传输给待测试数据库。在一些实施例中,该步骤可以由实例数据管理模块480实现。
实例数据管理指令可以分为增加实例数据、删除实例数据、修改实例数据以及查询实例数据等指令。增加实例数据指令用于在数据表或分区表中增加实例数据,具体增加的可以包括记录或字段等,示例性的增加实例数据指令可以包括前述的insert指令。删除实例数据指令用于在数据表或分区表中删除实例数据,具体删除的可以包括记录或字段等,示例性的删除实例数据指令可以是:delete from 员工表where 年份< 1990,即删除员工表中1990年前入职的记录。修改实例数据指令用于对数据表或分区表中某字段进行替换、修改字段数据类型等,示例性的字段替换指令可以是:replace into /表名/ values(字段值)。查询实例数据指令用于在数据表或分区表中通过查询条件查找相应的数据,如记录。在一些实施例中,由于分区表在逻辑上为一张表,待测试数据库会根据查询指令自动到对应的分区表进行查询。因此,数据表查询指令同样适用于分区表查询。示例性的查询指令可以是:
select姓名from员工表where年份> 2000;
上述指令用于从员工表中查询2000年以后入职的员工姓名。
在一些实施例中,通过分区管理指令与实例数据管理指令结合使用,可以极大丰富分区管理的测试场景,支持对数据库的深度测试。
应当注意的是,上述有关流程的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程进行各种修正和改变。例如,从流程100中省略可选的步骤。然而,这些修正和改变仍在本说明书的范围之内。
图2是根据本说明书一些实施例所示的数据库测试系统与待测试数据库通信的示例图。
如前文所述,数据库测试系统400与待测试数据库具有信号连接,以便通过通信模块450将前述各类指令和/或实例数据传输给待测试数据库。在图2所示的实施例中,数据库测试系统400通过多线程将指令(如测试指令1-n)或实例数据传输给待测试数据库。线程是操作系统能够进行运算调度的最小单位,包含在进程(正在进行中的程序)之中,是进程中的实际运作单位。多线程,是指从软件或者硬件上实现多个线程并发执行的技术。在一些实施例中,待测试数据库是具备多线程能力的,即能够同时执行多个线程以实现数据管理操作,这些操作包括但不限于创建表、管理分区、管理实例数据等。在大数据场景,常常要求数据库能够适应较大数据吞吐量的情况,具有良好稳定性的数据库能稳定、可靠的同时并发执行多项数据管理操作,而稳定性较差的数据库则可能出现卡顿、甚至宕机。因此,本说明书一些实施例提供的数据库测试系统400具有多线程能力的软硬件支持,能够在同一时间执行多个指令/或实例数据的传输线程(多线程测试),提升整体测试效能的同时能够测试数据库的稳定性。在图2所示的实施例中,数据库测试系统400在同一时间执行了n个线程,分别用于向待测试数据库同时发送n组测试指令,以使得待测试数据库同时并发执行n个数据管理操作。待测试数据库执行这些操作时,可以产生相应的日志文件,记录全部操作的执行过程。数据库测试系统400可以获取这些日志文件,进而得到待测试数据库的响应结果。通过分析响应结果,可以确定待测试数据库在并发执行不同操作时的稳定性。
图3是根据本说明书一些实施例所示的数据库测试系统与多个待测试数据库通信的示例图。
在一些实施例中,可以控制不同的数据库执行同样的数据管理操作,进而对比各数据库的响应结果,交叉验证数据库的正确性。为此,本说明书一些实施例提供的数据库测试系统400具备同时与多个待测试数据库通信的能力(多通道测试)。如图3所示,数据库测试系统400可以与待测试数据库1、待测试数据库2同时通信,并通过通信模块450向两个数据库发送相同的测试指令(如测试指令1-n),如表创建指令以及实例导入指令(发送给两个数据库的实例数据相同),待测试数据库1、待测试数据库2分别执行测试指令分别得到响应结果1和响应结果2,如两个响应结果分别包含多个分区表,通过对比两个响应结果,可以测试待测试数据库的正确性。具体的,在测试指令完全相同的情况下,两个数据库得到了不同的响应结果,则可以说明其中一个数据库的正确性存在异常。在一些实施例中,同时测试的多个数据库可以包括可靠性较好或已经过测试的数据库(如作为参考数据库),以及性能未知的数据库,当性能未知的数据库的响应结果与参考数据库的响应结果不同,则可以确定性能未知的数据库的正确性存在问题。在一些实施例中,同时测试的多个数据库可以来自不同的数据库生厂商,或者是同一数据库产品的不同版本。
本说明书前述实施例提供的数据库测试方法或系统能够支持多线程测试以及多通道测试,进一步丰富数据库测试场景,能够满足灵活多样的数据库深度测试需求。
图4是根据本说明书一些实施例所示的数据测试系统的模块图。
如图4所示,数据库测试系统400可以包括:
输入模块410,用于获取用户输入的测试参数;所述测试参数包括表结构描述信息。
元数据生成模块420,用于基于所述表结构描述信息生成分区表元数据;所述分区表元数据反映一个或多个分区表的结构信息,所述一个或多个分区表能够组成一张完整的数据表。
创建指令模块430,用于基于分区表元数据生成表创建指令。
实例数据获取模块440,用于获取一条或多条实例数据。
以及,通信模块450,用于与待测试数据库通信,将所述表创建指令以及一条或多条实例数据传输给待测试数据库,以使得待测试数据库基于实例数据创建一个或多个分区表,其中,所述一个或多个分区表用于测试所述待测试数据库的性能。
在一些可选的实施例中,所述表创建指令用于指示待测试数据库根据分区表元数据生成一个或多个空分区表;所述数据库测试系统400还包括导入指令模块460,用于基于所述一条或多条实例数据,生成实例导入指令。相应的,所述通信模块450还用于与待测试数据库通信,将所述实例导入指令传输给待测试数据库,所述实例导入指令用于指示待测试数据库将实例数据填入对应的空分区表中以形成所述一个或多个分区表。
在一些可选的实施例中,数据库测试系统400还可以包括分区管理模块470,用于生成分区管理指令,相应的,所述通信模块450还用于与待测试数据库通信,将所述分区管理指令传输给待测试数据库,以便待测试数据库生成响应结果。类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。面向对象程序设计方法是尽可能模拟人类的思维方式,使得软件的开发方法与过程尽可能接近人类认识世界、解决现实问题的方法和过程,也即使得描述问题的问题空间与问题的解决方案空间在结构上尽可能一致。类对应解决方案空间,具有属性和方法。属性又称为成员变量,而方法则是建立在成员变量基础之上的,又称为成员函数。在一些实施例中,可以将面向对象编程的思想引入本说明书实施例,将分区管理模块封装成类的形式。其中,类的属性包括分区表元数据,类的方法则包括各种分区管理操作。进一步,分区管理模块可以封装成父类和子类。父类对应大部分数据库通用的分区管理操作,子类继承父类的属性和方法,同时包括针对某一些小众数据库特有的分区管理操作。例如,B数据库和C数据库支持的分区类型相同,A数据库支持的分区类型包含了B数据库支撑的分区类型,除此,A数据库还支持hash list 类型、hash hash类型等,则父类包含对应于B数据库或C数据库支持的分区类型的属性及分区管理方法(或分区管理指令),子类继承父类的属性及方法,还额外包括hash list 类型、hash hash类型对应的属性及分区管理方法(或分区管理指令)。
将分区管理模块封装成不同的类,可以实例化不同分区类型的分区管理方法。针对不同的待测试数据库,可以使用不同的类进行分区管理测试。具体的,对于通用数据库的分区管理指令,可以通过父类产生,专有数据库的分区管理指令,则可以通过子类产生。其中,可以将市面上各种数据库按照功能(如支持的分区类型)进行分类,功能近似(如支持的分区类型相同或近似)的数据库归为通用数据库(如B数据库、C数据库),功能与通用数据库差异较大的则归为专有数据库(如A数据库)。
在一些可选的实施例中,数据库测试系统400还可以包括实例数据管理模块480,用于生成实例数据管理指令,相应的,所述通信模块450还用于与待测试数据库通信,将所述实例数据管理指令传输给待测试数据库,以便待测试数据库生成响应结果。
关于图4中各模块的详细功能描述可以参见图1~图3中的相关内容。应当理解,图4所示的系统及其模块可以利用各种方式来实现。例如,在一些实施例中,系统及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的系统及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
需要注意的是,以上对于系统及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解系统的原理后,可能在不背离这一原理的情况下,对系统中的模块进行合并、或拆分以及进一步构成子系统与其他模块连接。例如,实例数据获取模块440和导入指令模块460可以合并为一个模块。诸如此类的变形,均在本说明书的保护范围之内。
本说明书实施例可能带来的有益效果包括但不限于:(1)实现了数据库的自动化测试,有效节省了人力成本、提高了测试效率;(2)分区管理测试结合实例数据管理测试,且支持多线程测试、多通道测试,能够构造多样的测试场景,实现数据库的深度测试;(3)将面向对象编程的思想引入分区管理模块,实例化不同分区类型的分区管理方法,进一步提高测试效率、丰富了测试场景。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书实施例的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书实施例进行各种修改、改进和修正。该类修改、改进和修正在本说明书实施例中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本说明书实施例的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书实施例的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书实施例的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。
本说明书实施例各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、VisualBasic、Fortran2003、Perl、COBOL2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或处理设备上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本说明书实施例所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书实施例流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的处理设备或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本说明书实施例披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书实施例对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本申请权利要求最广范围有限制的文件(当前或之后附加于本申请中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书实施例的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。

Claims (14)

1.一种数据库测试方法,所述方法由处理器执行,包括:
获取用户输入的测试参数;所述测试参数包括表结构描述信息;所述表结构描述信息包括以下中的一种或多种:字段数、字段类型、分区键、分区类型以及分区条件;
基于所述表结构描述信息生成分区表元数据;所述分区表元数据反映一个或多个分区表的结构信息,所述分区表的结构信息包括以下中的一种或多种:分区表对应的分区类型、分区表对应的分区条件、分区表对应的分区键、分区表中的字段数、分区表中的字段类型,所述一个或多个分区表能够组成一张完整的数据表;
基于分区表元数据生成表创建指令;
获取一条或多条实例数据;
与待测试数据库通信,将所述表创建指令以及一条或多条实例数据传输给待测试数据库,以使得待测试数据库基于实例数据创建一个或多个分区表,其中,所述一个或多个分区表用于被分析,以确定是否符合用户指定的测试参数进而确定所述待测试数据库的性能。
2.如权利要求1所述的方法,所述表创建指令用于指示待测试数据库根据分区表元数据生成一个或多个空分区表;
所述方法还包括:基于所述一条或多条实例数据,生成实例导入指令;以及与待测试数据库通信,将所述实例导入指令传输给待测试数据库;所述实例导入指令用于指示待测试数据库将实例数据填入对应的空分区表中以形成所述一个或多个分区表。
3.如权利要求1所述的方法,所述实例数据为随机生成或从已有数据集中选取。
4.如权利要求1所述的方法,所述测试参数还包括实例描述信息,所述实例描述信息包括以下中的一种或多种:表名称、字段名、实例数量;所述实例数据为基于所述实例描述信息随机生成或从已有数据集中选取。
5.如权利要求1所述的方法,还包括:
生成分区管理指令和/或实例数据管理指令;
与待测试数据库通信,将所述分区管理指令和/或所述实例数据管理指令传输给待测试数据库,以便待测试数据库生成响应结果;所述响应结果用于确定所述待测试数据库的性能。
6.如权利要求1或5所述的方法,与待测试数据库通信,以向待测试数据库传输指令和/或实例数据时采用多线程传输方式,以使得待测试数据库并行的执行多项操作,进而获得待测试数据库的稳定性。
7.如权利要求1或5所述的方法,与待测试数据库通信,以向待测试数据库传输指令和/或实例数据时包括向两个以上待测试数据库传输相同的指令和/或实例数据,使得两个以上待测试数据库执行相同的操作,以便通过对比两个以上待测试数据库的响应结果,确定待测试数据库的正确性。
8.如权利要求5所述的方法,所述分区管理指令包括以下中的一种或多种:增加分区、删除分区以及修改分区;所述实例数据管理指令包括以下中的一种或多种:增加实例数据、删除实例数据、修改实例数据以及查询实例数据。
9.如权利要求5所述的方法,所述分区管理指令通过分区管理模块生成;所述分区管理模块被封装成父类以及子类;其中,
父类具有属性以及方法,用于生成通用数据库的分区管理指令;子类继承父类的属性以及方法、且具有专有的属性以及方法,用于生成专有数据库的分区管理指令。
10.一种数据库测试系统,包括:
输入模块,用于获取用户输入的测试参数;所述测试参数包括表结构描述信息;所述表结构描述信息包括以下中的一种或多种:字段数、字段类型、分区键、分区类型以及分区条件;
元数据生成模块,用于基于所述表结构描述信息生成分区表元数据;所述分区表元数据反映一个或多个分区表的结构信息,所述分区表的结构信息包括以下中的一种或多种:分区表对应的分区类型、分区表对应的分区条件、分区表对应的分区键、分区表中的字段数、分区表中的字段类型,所述一个或多个分区表能够组成一张完整的数据表;
创建指令模块,用于基于分区表元数据生成表创建指令;
实例数据获取模块,用于获取一条或多条实例数据;
通信模块,用于与待测试数据库通信,将所述表创建指令以及一条或多条实例数据传输给待测试数据库,以使得待测试数据库基于实例数据创建一个或多个分区表,其中,所述一个或多个分区表用于被分析,以确定是否符合用户指定的测试参数进而确定所述待测试数据库的性能。
11.如权利要求10所述的系统,所述表创建指令用于指示待测试数据库根据分区表元数据生成一个或多个空分区表;
所述系统还包括:导入指令模块,用于基于所述一条或多条实例数据,生成实例导入指令;所述通信模块还用于与待测试数据库通信,将所述实例导入指令传输给待测试数据库;所述实例导入指令用于指示待测试数据库将实例数据填入对应的空分区表中以形成所述一个或多个分区表。
12.如权利要求10所述的系统,还包括分区管理模块和/或实例数据管理模块,所述分区管理模块用于生成分区管理指令,所述实例数据管理模块用于生成实例数据管理指令;
所述通信模块还用于:与待测试数据库通信,将所述分区管理指令和/或所述实例数据管理指令传输给待测试数据库,以便待测试数据库生成响应结果;所述响应结果用于确定所述待测试数据库的性能。
13.如权利要求12所述的系统,所述分区管理模块被封装成父类以及子类;其中,
父类具有属性以及方法,用于生成通用数据库的分区管理指令;子类继承父类的属性以及方法、且具有专有的属性以及方法,用于生成专有数据库的分区管理指令。
14.一种装置,包括处理器以及存储介质,存储介质存储有计算机指令,处理器用于执行计算机指令以实现如权利要求1~9中任一项所述的方法。
CN202210902052.2A 2022-07-29 2022-07-29 一种数据库测试方法、系统及装置 Active CN114968748B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210902052.2A CN114968748B (zh) 2022-07-29 2022-07-29 一种数据库测试方法、系统及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210902052.2A CN114968748B (zh) 2022-07-29 2022-07-29 一种数据库测试方法、系统及装置

Publications (2)

Publication Number Publication Date
CN114968748A CN114968748A (zh) 2022-08-30
CN114968748B true CN114968748B (zh) 2022-10-21

Family

ID=82970196

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210902052.2A Active CN114968748B (zh) 2022-07-29 2022-07-29 一种数据库测试方法、系统及装置

Country Status (1)

Country Link
CN (1) CN114968748B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105653732A (zh) * 2016-02-02 2016-06-08 优品财富管理有限公司 一种基于元数据自动建立表方法及系统
CN109657009A (zh) * 2018-12-21 2019-04-19 北京锐安科技有限公司 数据预分区存储周期表创建方法、装置、设备和存储介质
CN110727656A (zh) * 2019-09-25 2020-01-24 贝壳技术有限公司 一种数据的分表方法、装置、电子设备以及可读存储介质
CN113505073A (zh) * 2021-07-15 2021-10-15 北京金山云网络技术有限公司 一种数据库的性能测试方法、装置、设备及介质
CN114416721A (zh) * 2021-12-14 2022-04-29 杭州安恒信息技术股份有限公司 自动建表方法、系统、可读存储介质及计算机设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210034586A1 (en) * 2019-08-02 2021-02-04 Timescale, Inc. Compressing data in database systems using hybrid row/column storage representations

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105653732A (zh) * 2016-02-02 2016-06-08 优品财富管理有限公司 一种基于元数据自动建立表方法及系统
CN109657009A (zh) * 2018-12-21 2019-04-19 北京锐安科技有限公司 数据预分区存储周期表创建方法、装置、设备和存储介质
CN110727656A (zh) * 2019-09-25 2020-01-24 贝壳技术有限公司 一种数据的分表方法、装置、电子设备以及可读存储介质
CN113505073A (zh) * 2021-07-15 2021-10-15 北京金山云网络技术有限公司 一种数据库的性能测试方法、装置、设备及介质
CN114416721A (zh) * 2021-12-14 2022-04-29 杭州安恒信息技术股份有限公司 自动建表方法、系统、可读存储介质及计算机设备

Also Published As

Publication number Publication date
CN114968748A (zh) 2022-08-30

Similar Documents

Publication Publication Date Title
US11544099B2 (en) Analytic model execution engine with instrumentation for granular performance analysis for metrics and diagnostics for troubleshooting
US10162612B2 (en) Method and apparatus for inventory analysis
US11106861B2 (en) Logical, recursive definition of data transformations
US8832125B2 (en) Extensible event-driven log analysis framework
US10684966B1 (en) Orchestrating dataflows with inferred data store interactions
US10452628B2 (en) Data analysis schema and method of use in parallel processing of check methods
US20210209098A1 (en) Converting database language statements between dialects
Coelho Jug: Software for parallel reproducible computation in python
US11615076B2 (en) Monolith database to distributed database transformation
Pandey Performance benchmarking and comparison of cloud-based databases MongoDB (NoSQL) vs MySQL (Relational) using YCSB
CN117421302A (zh) 一种数据处理方法及相关设备
US20200356885A1 (en) Service management in a dbms
US20180203900A1 (en) Transforming a user-defined table function to a derived table in a database management system
CN114968748B (zh) 一种数据库测试方法、系统及装置
EP3657351A1 (en) Smart data transition to cloud
US20190303460A1 (en) Transaction-based pseudo-script generation for scheduling and implementing database schema changes
US11720553B2 (en) Schema with methods specifying data rules, and method of use
Nakabasami et al. Querying mongodb with linq in a server-side javascript environment
Püroja LDBC Social Network Benchmark Interactive v2
Klein et al. Quality attribute-guided evaluation of NoSQL databases: an experience report
US20240176646A1 (en) Analytic model execution engine with instrumentation for granular performance analysis for metrics and diagnostics for troubleshooting
CN116339755A (zh) 数据库对象的安装方法、装置、设备和介质
US20190303461A1 (en) Transaction-based psuedo-script configuration for scheduling and implementing database schema changes
CN115564048A (zh) 一种医疗大数据共享分析方法及系统
Chen et al. ParaLite: A Parallel Database System for Data-Intensive Workflows

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant