TSBS 是什么?为什么时序数据库 TDengine 会选择它作为性能对比测试平台?

news/2024/7/4 7:37:37 标签: 时序数据库, tdengine, 数据库

TSBS 是一个时序数据处理(数据库)系统的性能基准测试平台,提供了 IoT、DevOps 两个典型应用场景,它由 Timescale 开源并负责维护。作为一个性能基准测试平台,TSBS 具有便捷、易用、扩展灵活等特点,涵盖了时序数据的生成、写入(加载)、多种类别的典型查询等功能,并能够自动汇总最终结果。由于其开放开源的特点,得到了众多数据库厂商的支持,作为专业的产品性能基准测试平台被若干数据库厂商广泛使用。

以下的性能基准报告均使用了 TSBS 作为基础 Benchmark 平台,我们从时间跨度和发布厂商的知名度同时来看,就能发现,基础测试平台 TSBS 已经具备了很高的认可度:

  • 2018 年 11 月,VictoriaMetrics 的创始人 Aliaksandr Valialkin 发布 《High-cardinality TSDB benchmarks: VictoriaMetrics vs TimescaleDB vs InfluxDB》,将 VictoriaMetrics 与 TimescaleDB、InfluxDB 进行性能对比。

  • 2018 年 11 月,文章《ClickHouse Crushing Time Series》中对比了 TimescaleDB, InfluxDB, ClickHouse 在时序数据场景下的性能。

  • 2020 年 3 月,Cloudera 在网站博客中发布《Benchmarking Time Series workloads on Apache Kudu using TSBS》,在 DevOps场景 中对比了 Apache Kudu, InfluxDB, VictoriaMetrics, ClickHouse 等整体性能表现。

  • 2020 年 3 月, Redis 发布了基于 TSBS 的性能报告《RedisTimeSeries Version 1.2 Benchmarks》。

  • 2020 年 8 月,Timescale 在其官方博客发布了性能对比报告《TimescaleDB vs. InfluxDB: Purpose Built Differently for Time-Series Data》。

  • 2021 年 8 月,QuestDB 发布了 QuestDB 与 TimescaleDB 的性能对比报告——《QuestDB vs. TimescaleDB》。

为了客观、准确、有效地评估 TDengine 3.0 的性能指标,TDengine决定将 TSBS(Time Series Benchmark Suite)作为基准性能测试平台,针对 DevOps 场景的数据集对 TDengine 3.0 展开整体(包括写入、查询、存储、资源消耗等)性能评估。

DevOps 场景是一个典型的时序数据应用场景,TSBS DevOps 场景提供了 CPU 状态的模拟数据,针对每个设备(CPU)记录其 10 个测量值(metric),1 个时间戳(纳秒分辨率),10 个标签值(tag)。生成的数据每 10 秒间隔一条记录,具体的内容和示例数据如下:

TSBS 测试可以简单划分为两个主要部分——数据写入和数据查询。在本次整个基准性能评估中,共涉及以下五个场景,每个场景的具体数据规模和特点见下表:

通过上表可以看到,五个场景的区别主要在于数据集所包含的设备记录数量、设备数的不同,数据时间间隔均维持在 10 sec。整体来看,五个场景的数据规模都不算大,数据规模最大的是场景五,数据达到了 1.8 亿,数据规模最小的是场景一,只有 2678 万条记录。在场景四和场景五中,由于设备数量相对较多,所以数据集仅覆盖了 3 分钟的时间跨度。

为了保证测试结果的公正可靠及可复制性,我们选用了公共 IaaS 平台来搭建 Benchmark 基础硬件环境,采用了大多数性能对比报告中使用的场景——亚马逊 EC2 服务环境下 r4.8xlarge 类型的实例作为基础运行平台,区域为北美地区,包括 1 台服务器、1 台客户端。客户端与服务器硬件配置完全相同,两者使用 10 Gbps 网络连接。配置简表如下:

本次测试的对比软件为 InfluxDB1.8.10 及 Timescale 2.6.0,在这里要着重说明一下,由于 InfluxDB 最新的 2.0 版本并没有纳入 TSBS 的主干分支,因此在这次测试中我们暂且使用了 TSBS 主干分支所支持的 InfluxDB 最新版本,即 1.8.10。

整个 TSBS 测试流程相对比较简单,在进行写入性能对比时,配置完成参数后直接运行 TSBS 框架脚本,等待结果输出即可。对于查询处理,我们选择了批量自动化去运行,对每个查询语句运行 5000 次,统计查询延迟的算数平均作为最后的查询延迟结果。此外我们还全程监控并记录了整个过程中服务器与客户端节点的系统资源开销与负载情况。

下面可以简单为大家介绍下本次测试结果。如下表所示,在全部五个场景中,TDengine 写入性能均优于 InfluxDB 和 TimescaleDB,写入过程中资源占用最低。对比 InfluxDB,TDengine 写入最优的场景是在 1000 万设备下,达到了 InfluxDB 的 10.6 倍;对比 TimescaleDB ,TDengine 写入最优的场景是在 4000 个设备下,达到了 TimeScaleDB 的 6.7 倍。

在查询测试上,我们将其分为 5 大类、15 小类进行查询对比,从下图结果汇总中可以看到,在全部 15 个查询类型中,TDengine 的性能均优于 InfluxDB 和 TimescaleDB,并且它的所有查询延迟均比 InfluxDB 和 TimescaleDB 更低。亮点数据之一体现在 Double Rollups 查询类型对比中,TDengine 最大达到 InfluxDB 的 34 倍,TimescaleDB 的 24 倍。

以上就是 TDengine 基于 TSBS 测试报告的测试背景介绍,点击《基于 TSBS 标准数据集数据库>时序数据库 TimescaleDB、InfluxDB 与 TDengine 的性能对比测试》可查阅整体报告。


了解更多 TDengine Database的具体细节,可在GitHub上查看相关源代码。


http://www.niftyadmin.cn/n/110508.html

相关文章

Windows Server 2016搭建文件服务器

1:进入系统在服务器管理器仪表盘中添加角色和功能。 2:下一步。 3:继续下一步。 4:下一步。 5:勾选Web服务器(IIS) 6:添加功能。 7:下一步。 8:下一步。 9:下一步。 10&a…

C语言中的strlen()和sizeof()对比

C语言中的strlen()和sizeof()对比 在C语言中,没有字符串这种变量类型,一般用两种方法实现。 一是用双引号生成常量字符串再赋值给一个指针,指针指向的是该常量字符串的首字符地址; 二是利用字符数组,把字符存储在数组…

笔记(七)——queue容器的基础理论知识

queues是队列容器&#xff0c;元素遵循先进先出的顺序。头文件&#xff1a;#include<queue>一、queue容器的对象构造方法queue采用模板类实现默认构造例如queue<T> q&#xff1b;#include<iostream> #include<queue> using namespace std; int main() …

CCRC信息安全服务资质认证证书如何申请?

一、CCRC资质认证申请流程 申请流程主要分为4个阶段&#xff0c;包含准备阶段、审核阶段、认证决定阶段和制证阶段。 1、准备阶段 申请组织根据自身实际情况确定需要申请的服务资质类型&#xff0c;登录中国信息安全认证中心网站&#xff0c;将准备好的材料和文档&#xff0c…

【华为OD机试】 网上商城优惠活动(C++ Java Javascript Python)

文章目录 题目描述输入描述输出描述备注用例题目解析C++JavaScriptJavaPython题目描述 某网上商场举办优惠活动,发布了满减、打折、无门槛3种优惠券,分别为: 每满100元优惠10元,无使用数限制,如100199元可以使用1张减10元,200299可使用2张减20元,以此类推;92折券,1次…

递归算法(recursion algorithm)

递归算法 什么是递归算法 在过程或者函数里调用自身的算法&#xff1b; 递归算法&#xff08;recursion algorithm&#xff09;&#xff0c;通过重复将问题分解为同类的子问题而解决问题的方法&#xff0c; Java中函数可以通过调用自身来进行递归&#xff0c;大多数编程语句…

在Vite项目中接入CSS工程化方案

在上一篇文章使用Vite快速构建前端React项目使用 Vite 初始化了一个 Web 项目,然而能够使用 Vite 官方的脚手架来构建项目是远远不够的,我们还需要考虑诸多的工程化因素,以及和其他第三方插件的融合。接下来,我们将以实战的方式逐个击破Web工程化的各个方面。 首先,前端工…

Arduino IDE启动闪退或者运行中闪退

文章目录一、你中了哪一种&#xff1f;1、安装了不符合规格的库文件2、安装了不符合规范的开发板库文件二、解决方案1、轻方案2、全盘重来Arduino IDE启动闪退或者运行中闪退&#xff0c;出现这样的问题&#xff0c;其实不需要思考了&#xff0c;就是运行库配置的问题&#xff…