一、什么是时序数据库
时序数据库全称为时间序列数据库。时间序列数据库主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。
时序数据库全的特点包括一是多源性获取,数据分散,非结构化数据比例大;二是数据蕴含信息复杂,关联性强;三是持续采集,具有鲜明的动态时空特性;四是采集、存贮、处理实时性要求高;五是与具体工业领域密切相关。
时序数据库采用的技术
时序数据库高压缩比存储技术
时序数据库的列存储技术
时序数据库的时间序列技术
时序数据库支持大数据量吞吐处理技术
时序数据库的高聚合查询技术
本文根据时序数据库的技术特点结合实际业务场景,设计如下测试方法:
时序数据库建库测试方法、时序数据库写入测试方法、时序数据库查询测试方法、时序数据库导入\导出测试方法、时序数据库压缩比测试方法等五方面组成。
二、时序数据库性能测试方法
2.1时序数据库建库测试方法
根据时序数据库的需求规格说明书或设计中要求的最大维度数和最大指标数,通过测试脚本或测试工具创建最大维度数或指标数的时序数据库模型。
评价方式是否可以按需求规格说明书或设计中要求的最大维度数和最大指标数创建。
“数据库模型”的建立依据下述数据特征(图2.1):
1)度量(metric):相当于关系型数据库中的table;
2)时间戳(timestamp):数据均带有时间戳(单位为ms);
3)数据点(data point):相当于关系型数据库中的row;
4)维度列(tag):一般存放的是并不随着时间戳变化的属性信息;
5)指标列(field):一般情况下存放的是会随着时间戳的变化而变化的数据。
图2.1 数据库模型
2.2时序数据库写入测试方法
使用时间序列数据生成工具模拟业务场景数据。在实际数据生成中,时序数据库写入能力要求较高,且并发写入和较大数据包写入较多,业务常用场景,设计不同的写入负载模式包装,形成写入负载,然后对目标数据库的写入性能进行评测,通过调整并发线程数、维度数和指标数量,调整负载模式。
写入负载测试模式有两大类:第一类测试固定维度数和指标数,通过不断增加线程数测试时序数据库在不同线程数下的写入性能表现,负载详情如表5.4所示。
第二类测试固定线程数,不断增加维度数,测试相应的写入性能,负载详情如表5.3所示。
应用场景时序数据库的数据写入响应时间要求往往不高,而对其吞吐量的要求较高,更关注每秒钟能写入的线程数和数据点数,因此,写入性能指标设置为吞吐量,计算公式如下:
2.3时序数据库查询测试方法
实际应用对时序数据库的并发查询请求并不多,更关注的是单个查询请求的响应时间。常用的查询负载包含以下五种:
1)点查询:指定某一字段取值进行查询;例如按设备ID或设备温度等条件查询记录数;
2)范围查询:查询一段时间内,针对单个或多个字段根据时间区间查询数据;例如:查询某段时间内所有设备的所有传感器的所有值;查询一段时间内,指定设备的指定传感器的所有值;
3)精度查询:针对不同的标签维度列进行数据聚合;例如:查询某个维度的某个指标大于某个阈值的维度;
4)聚合查询:是指时序数据库有提供针对字段进行计数、平均值、求和、最大值、最小值、滑动平均值、标准差、归一等聚合类 API支持;例如查询一个月内某一个小时内,指定设备的指定传感器的聚合值(max、min、mean值);
5)经典查询:实际业务中常用的查询,根据实际情况定制查询场景。例如查询某个风场的所有风机的所有传感器在过去某段时间内每个小时的平均值。
在读取数据时,更多的是监控面板和数据分析的场景,对时序数据库服务器的并发要求较低,而对响应时间要求较高,因此,查询场景的评价指标设置为响应时间,计算公式如下:
2.4时序数据库导入\导出测试方法
为开展时序数据库导入测试,首先准备符合业务场景的数据集,数据集为2个,容量大小分别为百万条数据集(MB级)和千万条数据集(GB级);其次为了避免从硬盘读取数据和网络传输成为测试瓶颈,把数据集装载到内存,然后进行Load(避免硬盘I/O瓶颈),并且在一台测试机器上(避免网络瓶颈)运行数据库服务器和客户机测试程序。最后,把数据装载到内存,进行导入,在测试过程中监控CPU的使用情况。
时序数据库导出测试,通过测试脚本将导入的大、小数据集分别导出到本地硬盘,在测试过程中监控CPU的使用情况。
导入\导出测试最终评价指标为成功数据点数、导入\导出的成功率、导入\导出的消耗时间、导入\导出速度等。
2.5时序数据库压缩性能测试方法
数据压缩能力测试是在导入测试结束后,统计数据库文件所占磁盘空间大小,将数据库文件总大小与原始数据进行对比,并计算压缩比:
版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。