IoTDB 在国际数据库性能测试排行榜中位居第一?测试环境复现与流程详解第一弹!...

news2024/11/25 0:26:07

最近我们得知,Apache IoTDB 多项性能表现位居 benchANT 时序数据库排行榜(Time Series: DevOps)性能排行第一名!(榜单地址:https://benchANT.com/ranking/database-ranking)

benchANT 位于德国,是一家专门做云设施和数据库性能评估的测试机构。在用户对数据库选型很难找到以性能、功能表现为参考基准榜单的情况下,benchANT 致力于在统一的硬件资源和系统配置下对各类主流数据库系统做性能测试,并依据各项指标进行排名。

0ece301d719f11a35ef700c189747f9d.png

benchANT 时序数据库排行榜的评估标准基于 TSBS 基准测试套件的 DevOps 场景,在统一的 AWS(Amazon Web Services,是亚马逊公司提供的一套云计算服务)环境中进行测试,并得出了 IoTDB 的写入吞吐、存储占用、查询延迟等性能结果。

那么,这些结果是在什么样的测试环境下得出的?测试过程又应该是什么样的?最终的性能结果是排行榜上面的样子吗?

既然 TSBS 是开源的测试工具,我们决定用这套标准化测试工具进行反推,尝试还原出 benchANT 时序数据库排行榜测评数据的“产出”过程!

此篇会总结榜单的数据对比结果,并介绍 benchANT 排行榜的背景与写入、查询测试环境。下篇我们将展示我们复现的命令集脚本与 IoTDB 建模。

1

结论总结

基于 benchANT 排行榜的评估结果与其提供的测试环境、条件,Apache IoTDB 团队试图还原了 benchANT 排行榜针对 Apache IoTDB 性能与成本指标的测试流程,并与 benchANT 排行榜中囊括的其他时序数据库,InfluxDB、TimescaleDB、QuestDB 等的数据表现进行了对比。

在写入、查询与存储性能方面,Apache IoTDB 均表现优异。Apache IoTDB 的写入吞吐量(Write Throughput)通过导入 2,617,920,000 个数据点所需的耗时计算得到,测试结果可达到 363 万点/秒,与 benchANT 排行榜中的 InfluxDB、TimescaleDB 、QuestDB 对比,IoTDB 的写入吞吐量最多是其 6.9 倍,最少也可达到 1.4 倍

Apache IoTDB 的查询延迟(Read Latency)通过查询“1 个设备的 1 个测点在 1 个小时内按照 1 分钟进行分段聚合的值”这一场景计算得到,测试结果可达到 2 毫秒。与 benchANT 排行榜中的 InfluxDB、TimescaleDB、QuestDB 对比,IoTDB 的查询响应速度最多是其 96.5 倍,最少也可达到 3 倍

Apache IoTDB 的存储占用(Storage Comsumption)通过在查询测试结束时记录存储空间占用得到,测试结果可达到仅占用 2 GiB。与 benchANT 排行榜中的 InfluxDB、TimescaleDB、QuestDB 对比,IoTDB 的存储占用最低是其 1/35

同时,benchANT 排行榜中使用读取吞吐量(Read Throughput)/ 月成本(Monthly Costs),计算出的成本效益(Operations Per Cost),也就是代表“每一美元能够置换多少的读取性能”,进而评估时序数据库的投入性能比。在这一指标中,Apache IoTDB 与排行榜中的 InfluxDB、TimescaleDB、QuestDB 对比,成本效益最多是其 22.2 倍,最少也可达到 1.4 倍,在使用性价比上也存在优势

861beee09d4f289f6996bdce8e3a3543.png

(benchANT 时序数据库排行榜各数据库性能对比)

2

背景介绍

benchANT 是国际知名的数据库评测机构,以可靠、独立及透明的方法对各种数据库进行性能评测。

benchANT 榜单收录了常见的关系型数据库、NoSQL 数据库、NewSQL 数据库及时序数据库等,通过使用固定的测试负载、相同的测试机器来保证测试结果的公平性。

当前 benchANT 收录了如下三种测试场景:

  • "CRUD: General Purpose":该场景主要测试数据库 CRUD 操作的性能,使用的测试工具为 YCSB。benchANT 在该场景测试了 MySQL、PostgreSQL 及 Cassandra 等数据库在不同负载下的性能对比(读写延迟、吞吐等指标)。

  • "OLTP: Mix":该场景主要测试数据库在事务方面的性能,使用的测试工具为 Sysbench。benchANT 在该场景测试了 MySQL 及 PostgreSQL 等数据库在不同负载下的性能对比(每秒执行的事务数量、查询延迟等指标)。

  • "Time Series: DevOps":该场景主要测试时序数据库的读写性能,使用的测试工具为 TSBS,TSBS 是 Timescale 开源的一款时序数据性能基准测评工具,它提供了时序数据生成、数据导入、查询生成、查询执行等功能,并可以自动化统计测试的结果。Apache IoTDB 参与的评测便属于该类别,benchANT 针对时序场景的测试均基于相同的硬件资源和测试负载,性能评估使用的指标具体如下:

    • WRITE THROUGHPUT:写入吞吐,单位时间内处理的写入数据点数量,该数值越高表明数据库写入性能越高。

    • READ THROUGHPUT:查询吞吐,单位时间内处理的查询请求的数量,该数值越高表明数据库处理查询请求的能力越强。

    • READ LATENCY:查询延迟,单个查询的响应时间,该数值越低表明数据库处理单个查询的速度越快。

    • STORAGE CONSUMPTION:存储空间占用,记录测试运行过程中的磁盘平均使用量。

    • MONTHLY COSTS:月度开销,仅与使用的AWS机器费用有关。

    • OPERATIONS PER COST:成本效益,记录单位开销内能够执行的操作数量,该数值越高表明数据库的成本效益越大。

e0a70dffd9f4cacfc9f17da249d9e39b.png

3

测试环境

3.1

写入性能测试

benchANT 的测试选取了 TSBS 中的 DevOps 场景,该场景模拟了服务器运行时的监控数据,每个运行的服务器(设备)均采集 9 大项监控指标(cpu、diskio、disk、kernel、mem、net、nginx、postgresl、redis),其中每项指标下采集不同的测量值,以 cpu 为例,cpu 指标下记录了 10 个测量值,分别为 usage_user、usage_system、usage_idle、usage_nice、usage_iowait、usage_irq、usage_softirq、usage_steal、usage_guest 和usage_guest_nice。9 大项监控指标一共会记录 101 项测量值。

benchANT 生成的测试数据集便基于上文所述的 Devops 场景,共生成 1000 个设备(服务器)、数据范围为 3 天(2022-07-25T00:00:00Z ~ 2022-07-28T00:00:00Z)、数据采集间隔为 10 秒,所以一共包含 1000 * 3 * 24 * 60 * 6 * 101 = 2,617,920,000 个数据点。benchANT 榜单里的写入吞吐,便是通过导入 2,617,920,000 个数据点所需的耗时计算得到。

数据写入阶段包含大量的可调参数,参数不同,数据库的性能也可能有很大不同。为保证测试的公平性,benchANT 测试采用的关键参数如下:

  • "workers": benchANT用于数据导入的并发客户端数量,当数据库部署在 2C8GB 实例时,该值设置为 50;当数据库部署在 4C16GB 实例时,该值设置为 100。

  • "hashWorkers": 控制数据的写入转发规则,当该值设置为 true 时,可以保证相同设备的数据均由同一个客户端进行写入,保证了数据库服务端不会接收到乱序数据;当该值设置为 false 时,则每个设备的数据都会由随机的客户端进行写入,数据库服务端会接收到一定程度的乱序数据。benchANT 在时序场景下的测试,针对所有数据库的测试该值均设置为 false。

  • "batchSize": 单次写入包含的数据点数量,针对所有时序数据库的测试该值均设置为 1000。

3.2

查询性能测试

在数据导入阶段完成后,benchANT 会执行查询性能测试,查询测试用例依然由 TSBS 工具生成,针对 DevOps 场景,TSBS 提供了"single-groupby-1-1-1"、"single-groupby-1-1-12"等多种查询类型,而在 benchANT 的测试框架里,目前只基于最具代表性的"single-groupby-1-1-1"查询类型进行评测。

"single-groupby-1-1-1"查询类型表示的含义是“查询 1 个 metric 中的 1 个 host 在 1 个小时内按照 1 分钟进行分段聚合的值”,针对该类型的 IoTDB 查询示例 SQL 语句为:

SELECT MAX_VALUE(usage_user) FROM root.cpu.host_1 GORUP BY ([2022-07-25 00:00:00, 2022-07-25 01:00:00), 1h)

在 benchANT 的测试中,一共生成了 100000 个"single-groupby-1-1-1"类型的查询语句,每个查询语句会从Metric "CPU"下的1000个设备里随机选择1个设备、从"2022-07-25T00:00:00Z"至"2022-07-28T00:00:00Z"的时间区间内随机选择1个小时作为查询条件。执行完 100000 次查询后,记录整个查询阶段的查询吞吐、查询延迟信息。

查询测试中的关键参数是"workers",表示执行查询测试时并发客户端的数量,该参数与数据写入时指定的"workers"参数保持一致。

3.3

benchANT 运行环境

为保证公平性及可复测性,benchANT 针对数据库的测试均运行在 AWS EC2 上,通过标准化的流程一键评测并生成测评结果。其中针对时序场景的测试,benchANT 通过 Scaling 属性进行区分不同的测试规模,该属性描述了实例规格和测评数据库集群规格的对应关系,集群 small(即 1 节点)+ 实例大小 small = xSmall scaling,集群 small (即1节点)+ 实例大小 medium = small scaling。其中 small, medium 实例的配置如下:

bdb3ff654127cc51ee2074ea85c90677.jpeg

如下图所示:

在 xSmall scaling 下,benchANT 客户端使用 AWS EC2 c5.4xlarge 实例,客户端机器的规格为 16 核 32GB;IoTDB Server 使用 AWS EC2 m5.large 实例,Server 的规格为 2 核 8GB,IoTDB 的部署形态为 1ConfigNode 1DataNode。

在 small scaling 下,benchANT 客户端使用 AWS EC2 c5.4xlarge 实例,客户端机器的规格为 16 核 32GB;IoTDB Server 使用 AWS EC2 m5.xlarge 实例,Server 的规格为 4 核 16GB,IoTDB 的部署形态为 1ConfigNode 1DataNode。

通过构建不同的规模,可以更全面的评测数据库在不同资源下的性能表现。需要说明的是,benchANT 是第三方国外评测机构,其在时序测试场景下构建了 xSmall 与 small 两种规模,这两种规模均非大规模集群,在我们实际的测试中,随着机器规格的提升,IoTDB 对机器资源的调度可以更加精细、具有更大的发挥空间。

26fd4d1837b02c139eeeb24f49e72cbd.png

在接下来的章节,我们将重点介绍基于以上 benchANT 场景,我们复现的测试步骤,分析并对比 Apache IoTDB 及其它时序数据库的性能表现。具体的命令集脚本以及建模方法详见第二弹,敬请关注!

da749ac5c4a10bd68f5365c2cb7c61a6.gif

6f791d3b31c5aa79bff3a1c1ad7c10d2.png

1bcca6aae3418e04abcd767985bddd7e.png

1a57fd9d9189cdda52224d49d9b46d62.png

8dcd2e7f2633b87dbda2b69e1956a9a9.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1043981.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机竞赛 深度学习卫星遥感图像检测与识别 -opencv python 目标检测

文章目录 0 前言1 课题背景2 实现效果3 Yolov5算法4 数据处理和训练5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **深度学习卫星遥感图像检测与识别 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐…

【Vue】动态树与数据表格分页查询实现

目录 一、动态树 1.1 准备工作 1.1.1 准备数据库 1.1.2 准备好后台服务接口,Moudel查询,和Book查询(支持分页) 1.1.3 修改mock.js测试环境 1.1.4 配置请求路径 1.2 构建导航菜单 1.2.1 通过接口获取数据 1.2.2 通过后台获…

【LFU缓存机制】+双哈希表解法+排序解法

文章目录 Tag题目来源题目解读解题思路方法一:排序解法方法二:双哈希表 知识回顾双向链表的操作 写在最后 Tag 【LFU缓存】【哈希表】【设计数据结构】【2023-09-25】 题目来源 460. LFU 缓存 题目解读 为 LFU 缓存算法设计并实现数据结构。 LRU 缓存…

k8s集群安装v1.20.9后-2-改造部署自己的服务k8sApp,增加istio

1.环境准备: K8s集群,已经实现了k8s-app小例子,可以正常访问。(已包含docker) 在此基础上对项目进行改进,实现istio流量切换。 2.安装部署istio 2.1 安装go 官网下载go和istio的安装包,上传到k8s集群虚拟机上(三个机器都安装) [root@node1 ~]# cd /root/Public/i…

CSS实现围绕按钮边框转圈的光线效果

CSS实现围绕按钮边框转圈的光线效果&#xff0c;可以自由改变按钮的光线渐变颜色和按钮边框颜色&#xff0c;背景色等。 效果图&#xff1a; 实现完整代码&#xff1a; <template><view class"btnBlock"><view class"btnBian"></vi…

MySQL MHA 高可用

目录 1 MySQL MHA 1.1 什么是 MHA 1.2 MHA 的组成 1.3 MHA 的特点 2 搭建 MySQL MHA 2.1 Master、Slave1、Slave2 节点上安装 mysql5.7 2.2 修改 Master、Slave1、Slave2 节点的主机名 2.3 修改 Master、Slave1、Slave2 节点的 Mysql主配置文件/etc/my.cnf 2.4 在 Mast…

现代架构设计:构建可伸缩、高性能的分布式系统

文章目录 第1节&#xff1a;引言第2节&#xff1a;架构设计的关键原则2.1 微服务架构2.2 异步通信2.3 数据分区和复制2.4 负载均衡 第3节&#xff1a;代码示例3.1 创建产品服务3.2 创建消息队列3.3 创建产品更新服务 第4节&#xff1a;性能优化和监控4.1 建立性能基准4.2 水平扩…

国内大语言模型的相对比较:ChatGLM2-6B、BAICHUAN2-7B、通义千问-6B、ChatGPT3.5

一、 前言 国产大模型有很多&#xff0c;比如文心一言、通义千问、星火、MOSS 和 ChatGLM 等等&#xff0c;但现在明确可以部署在本地并且开放 api 的只有 MOOS 和 ChatGLM。MOOS 由于需要的 GPU 显存过大&#xff08;不量化的情况下需要80GB&#xff0c;多轮对话还是会爆显存…

Spring整合RabbitMQ——生产者(利用配置类)

1.生产者配置步骤 2.引入依赖 3.编写配置 配置RabbitMQ的基本信息&#xff0c;用来创建连接工厂的 编写启动类 编写配置类 4. 编写测试类

C#(CSharp)入门教程

目录 C#的第一个程序 变量 折叠代码 变量类型和声明变量 获取变量类型所占内存空间&#xff08;sizeof&#xff09; 常量 转义字符 隐式转换 显示转换 异常捕获 运算符 算术运算符 布尔逻辑运算符 关系运算符 位运算符 其他运算符 字符串拼接 …

unity lua开发体系搭建

在前面的文章里面我们已经介绍了怎么样在unity里面配置lua的开发环境&#xff0c;我们可以通过C#代码装载lua的脚本并执行相应的处理&#xff0c;这次我们一步步搭建下lua的开发体系。 1.基于c#体系所有的类都继承MonoBehaviour在这里lua环境下我们也需要创建一个类似于这个类的…

Stm32_标准库_呼吸灯_按键控制

Stm32按键和输出差不多 PA1为LED供给正电&#xff0c;PB5放置按键&#xff0c;按键一端接PB5,另一端接负极 void Key_Init(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //APB2总线连接着GPIOBGPIO_InitStructur.GPIO_Mode GPIO_Mode_IPU;GPIO_InitStructur.…

@vitejs/plugin-legacy 为你的 Vite 项目提供对旧版浏览器的支持

vitejs/plugin-legacy 是 Vite 生态系统中的一个插件&#xff0c;它的作用是为你的 Vite 项目提供对旧版浏览器的支持。 具体而言&#xff0c;该插件会根据你在项目配置中指定的目标浏览器列表&#xff08;通过 browserslist 字段&#xff09;&#xff0c;自动生成兼容旧版浏览…

FPGA 图像缩放 千兆网 UDP 网络视频传输,基于RTL8211 PHY实现,提供工程和QT上位机源码加技术支持

目录 1、前言版本更新说明免责声明 2、相关方案推荐UDP视频传输--无缩放FPGA图像缩放方案我这里已有的以太网方案 3、设计思路框架视频源选择ADV7611 解码芯片配置及采集动态彩条跨时钟FIFO图像缩放模块详解设计框图代码框图2种插值算法的整合与选择 UDP协议栈UDP视频数据组包U…

面试题08.05.递归算法

递归乘法。 写一个递归函数&#xff0c;不使用 * 运算符&#xff0c; 实现两个正整数的相乘。可以使用加号、减号、位移&#xff0c;但要吝啬一些。 示例1: 输入&#xff1a;A 1, B 10输出&#xff1a;10示例2: 输入&#xff1a;A 3, B 4输出&#xff1a;12提示: 保证乘法…

nodejs+vue 大学生就业管理系统

随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;学生就业管理系统也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时代的变化&#xff0c;而…

从MVC到DDD,该如何下手重构?

作者&#xff1a;付政委 博客&#xff1a;bugstack.cn 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; 大家好&#xff0c;我是技术UP主小傅哥。多年的 DDD 应用&#xff0c;使我开了技术的眼界&#xff01; MVC 旧工程腐化严重&#xff0c;…

云HIS 医院综合运营管理系统源码

医院管理信息系统&#xff08;HIS&#xff09;是医院基本、重要的管理系统&#xff0c;是医院大数据的基础。 基于云计算的云医疗信息系统&#xff08;云HIS&#xff09;。以SaaS的方式提供服务&#xff0c;系统遵循服务化、模块化原则开发&#xff0c;具有强大的可扩展性&…

vue实现移动端悬浮可拖拽按钮

需求&#xff1a; 按钮在页面侧边悬浮显示&#xff1b;点击按钮可展开多个快捷方式按钮&#xff0c;从下向上展开。长按按钮&#xff0c;则允许拖拽来改变按钮位置&#xff0c;按钮为非展开状态&#xff1b;按钮移动结束&#xff0c;手指松开&#xff0c;计算距离左右两侧距离…

喜迎中秋国庆双节,华为云Astro Canvas之我的中秋节设计大屏

目录 前言 前提条件 作品展示 薅羊毛 前言 大屏应用华为云Astro Canvas是华为云低代码平台Astro的子服务之一&#xff0c;是以数据可视化为核心&#xff0c;以屏幕轻松编排&#xff0c;多屏适配可视为基础&#xff0c;用户可通过图形化界面轻松搭建专业水准的数据可视化大屏…