一种MongoDB数据库性能测试方法及系统技术方案

技术编号:33733292 阅读:12 留言:0更新日期:2022-06-08 21:29
本发明专利技术提供了一种MongoDB数据库性能测试方法及系统,包括以下步骤:首先确定业务数据的结构,数据定义完成后,校验配置的正确性,解析表结构视图,获取的随机索引值,根据配置的线程数创建线程池,提供预置性能测试报告Word模板。本发明专利技术提出的MongoDB数据库性能测试方法及系统根据业务数据构造测试数据,支持数据事务的处理,能够更加贴近使用场景,测试MongoDB数据库性能;能够图形化的展示测试进度和测试结果;提供了测试报告模板,支持自定义测试报告;能够快捷输出测试结果,直观的了解业务需求和MongoDB数据库性能匹配程度;为MongoDB数据库的选择提供可靠的依据,避免因测试不充分导致的决策错误。测试不充分导致的决策错误。测试不充分导致的决策错误。

【技术实现步骤摘要】
一种MongoDB数据库性能测试方法及系统


[0001]本专利技术涉及数据库的性能指标测试模块
,具体为一种MongoDB数据库性能测试方法及系统。

技术介绍

[0002]MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它的特点是高性能、易部署、易使用,存储数据非常方便。
[0003]现有技术中,MongoDB支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。它支持的查询语言非常强大,其语法类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
[0004]目前对于MongoDB数据线性能测试大多采用开源的NoSQL测试工具YCSB或者Jmeter工具,其中YCSB只支持设置数据的字段长度和数量不能自定义数据结构,不支持数据导入,对索引未做处理。Meter需要编写执行脚本,处理逻辑复杂。

技术实现思路

[0005]本专利技术的目的在于提供一种MongoDB数据库性能测试方法及系统,以解决上述
技术介绍
中提出的问题。
[0006]为实现上述目的,本专利技术提供如下技术方案:一种MongoDB数据库性能测试方法及系统,包括以下步骤:
[0007]首先确定业务数据的结构,如果是其他数据库如HBase、ElasticSearch数据库数据,可利用数据库工具导出小部分数据作为样本数据;提供Web访问页面,可在页面自定义数据或者选择导入数据;
[0008]数据定义完成后,设置性能测试操作数量operationCount、线程数threadCount、插入操作比例insertProportion、读操作比例readProportion、更新操作比例updateProportion、是否读取所有字段readAllFields,默认值true、分布模式requestDistribution,默认值zipfian、测试最大执行时间maxExecutionTime;测试数据库信息:数据库连接mongodb.url,页面提供测试按钮可测试连接可用性、测试集合的名称database、写入策略writeConcern,默认errors_ignored、批量提交数batchSize、是否优先添加索引createIndexBackground,默认true;配置完成后页面点击保存配置;
[0009]后台Java程序收到Web页面传来的表结构视图数据和性能测试配置数据后,校验配置的正确性,根据mongodb.url参数连接数据库,读取数据库信息和当前状态;如果不满足测试条件,返回不满足条件、不满足原因,修改意见列表给页面展示,前端页面确认配置无误后点击开始测试按钮,展示测试进度;
[0010]解析表结构视图,创建初始化文档,MongoDB数据库自动为集合_id建立唯一索引,如果配置为优先添加索引,根据表结构视图建立对应索引;如果存在除_id外索引并且没有设置优先添加索引,在读写操作执行完成后,采用后台添加索引的方式
[0011]准备插入文档,根据要执行的操作比例创建对应的文档对象,如果是插入操作,需要查询当前集合的索引值db.getCollectioncollection_name.totalIndexSize;根据插叙结果生成当前文档对象的_id值index_当前最大索引值;如果是读取操作,则在零至当前索引最大值范围内随机取索引值,设置读操作文档对象_id值为index_获取的随机索引值;
[0012]根据配置的线程数创建线程池,根据读写操作比例创建读写任务,放入线程池中执行;定义各类操作执行数量,通过synchronized方法对操作执行数量加锁,统计所有线程各类操作执行数量;启动定时任务,定时记录操作执行数量和执行时间;计算吞吐率Throughputops/sec,平均操作延迟AverageLatencyus存入Redis缓存中功能前端页面获取展示;
[0013]利用Apache POI技术,提供预置性能测试报告Word模板,支持上传符合要求的Word模板;测试完成时,可选择报告模板,在线预览PDF版本报告;选择报告,可导出为Word或者PDF格式报告。
[0014]优选的,自定义数据时需要指定表名、字段的名称、长度、类型、是否创建索引;点击保存后,生成表结构视图。可在表结构视图直接修改字段;提供插入测试按钮,点击后插入自定义结构数据,执行完成后显示集合状态和数据结构。
[0015]优选的,吞吐率的计算
[0016]定义线程数量n
t
,插入操作执行数量n
w
,读取操作执行数量n
r
,执行时间t,
[0017][0018]定义读操作平均延迟为RAL
[0019][0020]定义写操作平均延迟为WAL
[0021][0022]一种MongoDB数据库性能测试系统,包括数据导入模块、数据配置模块、数据测试模块、索引创建模块、索引值获取模块、线程池创建模块以及报告选择模块;
[0023]数据配置模块分配数据导入模块导入的数据信息,数据测试模块测试数据配置模块分配的数据信息,索引创建模块对数据测试模块的数据信息创建索引,索引值获取模块对索引创建模块的索引配置索引值,线程池创建模块对索引值获取模块的数据创建线程池,报告选择模块对线程池创建模块处理后的数据导入报告。
[0024]优选的,所述数据导入模块用于首先确定业务数据的结构,如果是其他数据库如HBase、ElasticSearch数据库数据,可利用数据库工具导出小部分数据作为样本数据;提供Web访问页面,可在页面自定义数据或者选择导入数据;自定义数据时需要指定表名、字段的名称、长度、类型、是否创建索引;点击保存后,生成表结构视图。可在表结构视图直接修改字段;提供插入测试按钮,点击后插入自定义结构数据,执行完成后显示集合状态和数据
结构;
[0025]优选的,数据配置模块用于数据定义完成后,设置性能测试操作数量operationCount、线程数threadCount、插入操作比例insertProportion、读操作比例readProportion、更新操作比例updateProportion、是否读取所有字段readAllFields,默认值true、分布模式requestDistribution,默认值zipfian、测试最大执行时间maxExecutionTime;测试数据库信息:数据库连接mongodb.url,页面提供测试按钮可测试连接可用性、测试集合的名称database、写入策略writeConcern,默认errors_ignored、批量提交数batchSize、是否优先添加索引createIndexBackground,默认true;配置完成后本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种MongoDB数据库性能测试方法及系统,其特征在于,包括以下步骤:首先确定业务数据的结构,如果是其他数据库如HBase、ElasticSearch数据库数据,可利用数据库工具导出小部分数据作为样本数据;提供Web访问页面,可在页面自定义数据或者选择导入数据;数据定义完成后,设置性能测试操作数量operationCount、线程数threadCount、插入操作比例insertProportion、读操作比例readProportion、更新操作比例updateProportion、是否读取所有字段readAllFields,默认值true、分布模式requestDistribution,默认值zipfian、测试最大执行时间maxExecutionTime;测试数据库信息:数据库连接mongodb.url,页面提供测试按钮可测试连接可用性、测试集合的名称database、写入策略writeConcern,默认errors_ignored、批量提交数batchSize、是否优先添加索引createIndexBackground,默认true;配置完成后页面点击保存配置;后台Java程序收到Web页面传来的表结构视图数据和性能测试配置数据后,校验配置的正确性,根据mongodb.url参数连接数据库,读取数据库信息和当前状态;如果不满足测试条件,返回不满足条件、不满足原因,修改意见列表给页面展示,前端页面确认配置无误后点击开始测试按钮,展示测试进度;解析表结构视图,创建初始化文档,MongoDB数据库自动为集合_id建立唯一索引,如果配置为优先添加索引,根据表结构视图建立对应索引;如果存在除_id外索引并且没有设置优先添加索引,在读写操作执行完成后,采用后台添加索引的方式准备插入文档,根据要执行的操作比例创建对应的文档对象,如果是插入操作,需要查询当前集合的索引值db.getCollectioncollection_name.totalIndexSize;根据插叙结果生成当前文档对象的_id值index_当前最大索引值;如果是读取操作,则在零至当前索引最大值范围内随机取索引值,设置读操作文档对象_id值为index_获取的随机索引值;根据配置的线程数创建线程池,根据读写操作比例创建读写任务,放入线程池中执行;定义各类操作执行数量,通过synchronized方法对操作执行数量加锁,统计所有线程各类操作执行数量;启动定时任务,定时记录操作执行数量和执行时间;计算吞吐率Throughputops/sec,平均操作延迟AverageLatencyus存入Redis缓存中功能前端页面获取展示;利用Apache POI技术,提供预置性能测试报告Word模板,支持上传符合要求的Word模板;测试完成时,可选择报告模板,在线预览PDF版本报告;选择报告,可导出为Word或者PDF格式报告。2.根据权利要求1所述的一种MongoDB数据库性能测试方法,其特征在于:自定义数据时需要指定表名、字段的名称、长度、类型、是否创建索引;点击保存后,生成表结构视图。可在表结构视图直接修改字段;提供插入测试按钮,点击后插入自定义结构数据,执行完成后显示集合状态和数据结构。3.根据权利要求1所述的一种MongoDB数据库性能测试方法,其特征在于:吞吐率的计算定义线程数量n
t
,插入操作执行数量n
w
,读取操作执行数量n
r
,执行时间t,
定义读操作平均延迟为RAL定义写操作平均延迟为WAL4.一种MongoDB数据库性能测试系统,其特征在于:包括数据导入模块、数据配置模块、数据测试模块、索引创建模块、索引值获取模块、线程池创建模块以及报告选择模块;数据配置模块分配数据导入模块导入的数据信息,数据测试模块测试数据配置模块分配的数据信息,索引创建模块对数据测试模块的数据信息创建索引,索引值获取模块对索引创建模块的索引配置索引值,线程池创建模块对索引值获取模块的数据创建线程池,报告选择模块对线程...

【专利技术属性】
技术研发人员:赵春蕾王阳赵山
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

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

1