一文还原时序数据库 IoTDB 在 TPCx-IoT 的测试全流程!

news2024/12/24 8:18:19

e50b6214846b52c8c8daee6c0e134d4c.png

在云服务硬件环境下,IoTDB 写入、查询、利用资源能力均表现出色!

之前,我们为大家介绍了基于 IoTDB 的企业级产品 TimechoDB,在 TPCx-IoT 基准测试中打破世界纪录,取得的双指标第一成绩,和选择 TPCx-IoT 的原因解读。

今天我们来完成之前的 flag 啦!我们将根据发表的论文《Performance Evaluation of TimechoDB using TPCx-IoT Benchmark》,完整“复盘” IoTDB 在 TPCx-IoT 的测试运行过程,并进行结果分析。

IoTDB 低成本、高可用的出色性能表现,将完整体现!

01

测试细节解读:实验设置

  • 数据库版本:本次测试的是基于 Apache IoTDB 的 TimechoDB,版本为 1.3.2.2。

  • 硬件配置:在 5 个阿里云弹性计算服务实例(ECS)上进行了实验,其中 2 个作为 Cluster Node,3 个作为 Client Node。下表展示了 Cluster Node 的系统配置。Client Node 配置与Cluster Node 相似,唯一的区别是磁盘容量(Client Node 仅使用 1 个 128 GB 的 SSD,不同节点之间的带宽为 64 Gbps)。

0da3bc5de2dc52838d2aef31eb61df6e.png

  • 数据负载:实验设置总写入的数据点数分别为 18,000,000,000 和 21,000,000,000,将模拟 120 个变电站的数据,其中每个变电站有 200 个设备,每个设备有 1 个测量点,每个测点的数据是一个 1k 字节的字符串。这些数据点在所有 Cluster Node 的所有进程中平均分配。

  • 实验设置:使用 TPCx-IoT Benchmark(后文简称 Benchmark)对上述数据负载进行压测,压测每个 Client Node 会开启 40 个进程来运行 Benchmark,其中每个进程会启动 10 个线程。每个进程将以 100 毫秒的间隔独立生成数据点,每个数据点来自一个随机设备(符合均匀分布)。

02

测试细节解读:实验部署

我们在两个的 Cluster Node 上部署了 IoTDB 集群,这两个 Cluster Node 保障了两路复制,并通过实时通信确保高可用性。然后,我们在另外 3 个 ECS 实例上部署了 TPCx-IoT Client Driver,这些实例作为 Client Node 向 Cluster Node 发送插入或读取请求。

下图展示了一个典型物联网系统在现实世界中的双层架构,以及映射到 Benchmark 所对应的实际物理部署,由此将现实世界的生产场景与 TPCx-IoT Benchmark 工作负载进行了等价映射。

横向来看,左侧是边缘层,由不同电力变电站的传感器生成数据,而右侧是网关层,负责数据接收和持久存储。

纵向来看,在模拟的“真实世界”中,每个电力变电站在 Benchmark 层面上都直接对应一个 TPCx-IoT 工作负载驱动程序的实例;一个驱动程序实例会从一个电力变电站生成传感器数据以及相应的查询语句;数据写入和查询请求会发送到 IoTDB 集群,这些集群充当网关侧的数据库管理系统。

2137c04a45916745cc04f917fb42e58d.png

在 IoTDB 中,时间序列标识符以树状结构组织,分为三个层级:database、device 和 sensor。在 TPCx-IoT 场景中,一个时间序列的例子可能表示为 “root.tpcxiotclient102.cent_9_Humidity.field0”。

其中,“root” 作为公共前缀,“tpcxiotclient1” 代表 Client Node 编号,而 “02” 表示进程编号,三者共同构成 database 标识符。“cent_9_Humidity” 在 IoTDB 中作为 device 标识符,而 “field0” 则作为 sensor 标识符。

03

测试细节解读:实验结果

在 TPCx-IoT 官方网站发布的排行榜上,我们注意到一些系统在测试时启用了 WAL,而另一些则没有。我们更倾向于启用 WAL,因为它可以增强数据的可靠性和一致性,而禁用 WAL 则可能降低存储成本并提高性能。因此,每种方法适合不同的应用场景。

为了全面而有说服力地验证 IoTDB 的性能,我们进行了两次测试:一次启用 WAL,另一次禁用 WAL。此外,我们每种场景都进行了 5 次测试,以确保实验结果的一致性和可重复性,而不是偶然的

我们提交给 TPC 的最终结果如下。

outside_default.png

开启 WAL

我们首先在开启 WAL 的情况下,使用上面描述的默认系统资源配置进行了测试。下表展示了 Run 1 和 Run 2 的测试指标。我们使用 8,260,764.81(较小的值)作为最终的 IoTps。由于 ECS 实例和数据库软件的总购买价为 288,471.48 美元,最终的性价比指标是 34.92 $/kIoTps

30e8eacce5e46a9c116199dcc57102e5.png

outside_default.png

关闭 WAL

我们随后在关闭 WAL 并增加数据写入总量的情况下进行了测试。下表展示了 Run 1 和 Run 2 的测试指标。我们将 10,671,241.41(较小的值)作为最终的 IoTps。由于 ECS 实例和数据库软件的总购买价格为 297,835.08 美元,最终的性价比指标为 27.91 $/kIoTps

add076416d99bbbeda6ea15caed998d9.png

outside_default.png

结果对比

截至 2024 年 7 月 24 日,性能排名第一的是 Machbase 7.0.6,IoTps 为 5,739,514。而在性价比方面,排名第一的是 Lindorm 3.4.10,Price/kIoTps 为 $35.66。通过比较,我们可以确认,无论是否开启 WAL,IoTDB 的性能和性价比都将超越所有提交的结果,成功达到榜首

下图展示了在官方 TPC 网站上发布的 TPCx-IoT 结果和排名,可以看到基于 IoTDB 的 TimechoDB 目前排名第一。

85dea18cf73e6270f2c9b50e9727162e.png

下图展示了在两种不同场景下系统资源的利用情况。我们观察到无论是否启用 WAL,平均 CPU 利用率都是比较低的,这表明 Benchmark 主要是一个 I/O 密集型的工作负载。

641d1c6461242dbb1355130a0de33d8b.png

相比开启 WAL 时,关闭 WAL 后 CPU 利用率从 8% 上升至 44%,而磁盘繁忙率和磁盘吞吐量则相应下降了约 40%。关闭 WAL 后,I/O 资源消耗显著减少,系统的瓶颈从磁盘转移到内存访问,因此虽然写入吞吐量有所提升,但增幅未能与 CPU 利用率的提升相匹配。

尽管 WAL 会增加磁盘 I/O 开销,往往成为性能瓶颈,但它能够显著提升数据库写操作的安全性和可靠性。在大多数场景中,开启 WAL 仍然是更优的选择,因此我们建议用户始终开启 WAL 以确保系统的可靠性。

04

结论与分析

通过上面的测试我们可以确认,IoTDB 在 TPCx-IoT Benchmark 中表现出色,无论是性能还是性价比均达到了第一,说明它能够在成本相对较高的云服务硬件环境下,最大限度利用资源,实现海量时序数据的高吞吐写入与低延迟查询

这次测试也对消费者用户和物联网厂商在数据库选型时提供了参考价值,证明了 IoTDB 是物联网时序场景下的一款不错的产品选择。而它的优异性能得益于其先进的设计思想和实现技术,下面列举了若干影响性能的关键因素,但不限于此。

  • 基于 IoT-LSM 的存储引擎:IoTDB 自研的 IoT-LSM(日志结构合并树)存储引擎经过深度优化,特别适合写入负载较重的场景,尤其是像 TPCx-IoT 这样的海量时间序列数据。它将排序和编码压缩的过程推迟到数据刷写到磁盘之前,从而创建了一个充分利用 CPU 和磁盘资源的流水线。

  • 高性能批量化写入接口:IoTDB 原生支持高性能批量写入接口,能够缓存数据减少函数调用与数据结构的频繁申请。通过攒批,能够在 TPCx-IoT 中将多个设备在一段时间内产生的数据一次性发送给服务端,提升吞吐。

  • 紧凑的 Apache TsFile 格式:TsFile 基于列式存储的格式,对每一列数据采用高效的编码压缩算法,这对于 TPCx-IoT 场景下的大 test 类型数据十分有效,大大减少了磁盘文件的大小,节省了 IO 开销对性能的负担。

  • 多层次的统计信息:IoTDB 在内存中和 TsFile 中都维护了多层次的统计信息,这些信息非常适合 TPCx-IoT 中的范围查询,可以提前过滤掉不匹配的数据块,从而加快查询处理速度。

IoTDB 的这些设计特点使其在 TPCx-IoT Benchmark 中表现出色,证明了它适合处理复杂的物联网数据管理任务高效的数据处理、强大的并发支持和有效的资源利用相结合,确保了 IoTDB 能够满足物联网环境的严格要求,提供可靠的高性能数据存储和检索解决方案

规上企业应用实例

能源电力:中核武汉|国网信通产业集团|华润电力|大唐先一|上海电气国轩|清安储能|某储能厂商|太极股份|绍兴安瑞思

航天航空:中航机载共性|北邮一号卫星

钢铁冶炼:宝武钢铁|中冶赛迪

交通运输:中车四方|长安汽车|城建智控|德国铁路

智慧工厂与物联:PCB 龙头企业|博世力士乐|德国宝马|京东|昆仑数据|怡养科技

ace650f8ee5816cf253b50482e2c94b9.gif

b11ef4f7db94913565f0e46695ef7216.jpeg

a71055c2a87ab94b1d166995db046764.jpeg

e4110ccb3db18df331630ac6ca204021.jpeg

13f8f2d5995a0908578ad5dc61662b79.gif

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

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

相关文章

【Python机器学习】核心数、进程、线程、超线程、L1、L2、L3级缓存

如何知道自己电脑的CPU是几核的,打开任务管理器(同时按下:Esc键、SHIFT键、CTRL键) 然后,点击任务管理器左上角的性能选项,观察右下角中的内核:后面的数字,就是你CPU的核心数,下图中我的是16个核心的。 需要注意的是,下面的逻辑处理器:32 表示支持 32 线程(即超线…

【爬虫软件】批量采集短视频博主的主页作品

用python开发的DY爬虫采集软件,可自动按博主抓取其已发布视频数据。 软件界面: 采集结果: 日志记录: 软件说明: 演示视频: https://www.bilibili.com/video/BV1Kb42187qf 讲解文章: https://www.bi…

2024数学建模国赛选题建议+团队助攻资料

目录 一、题目特点和选题建议 二、模型选择 1、评价模型 2、预测模型 3、分类模型 4、优化模型 5、统计分析模型 三、white学长团队助攻资料 1、助攻代码 2、成品论文PDF版 3、成品论文word版 9月5日晚18:00就要公布题目了,根据历年竞赛题目…

QT: Unable to create a debugging engine.

1.问题场景: 第一次安装QT,没有配置debug功能 打开控制面板》程序》找到Kit 重启电脑即可 2.问题场景: qt原本一直好好的,突然有天打开运行调试版本,提示Unable to create a debugging engine.错误。这个是指无法创…

CIOE中国光博会&电巢科技即将联办“智能消费电子创新发展论坛”

在科技浪潮汹涌澎湃的当下,从通信领域的高速光传输,到消费电子中的高清显示与先进成像技术,光电技术的应用范围不断拓展且日益深化。而AIGC 凭借其丰富的内容供给与个性化反馈能力,正为新一代消费电子及智能穿戴产品开辟崭新的发展…

具身智能猜想 ——机器人进化

设想一个机器人进化的仿真模拟环境,可以通过 “基因突变” 产生新功能,让机器人逐步进化。以下是这个进化系统的关键要素和可能的实现步骤: 1. 仿真环境 虚拟世界:创建一个包含多样化任务和挑战的虚拟环境,如探索、抓…

uniapp 实现tabbar图标凸起

实现tabbar图标凸起有两种,第一种是自定义tabbar,第二种就是使用官方的tabbar跟api实现,自定义在体验中不如原生的tabbar,所以我下面展示的是使用官方的tabbar跟api实现 效果如图: 左边是未选中中间的凸起&#xff0c…

深入解密 Elasticsearch 查询优化:巧用 Profile 工具/API 提升性能

1、Elasticsearch Profile 工具介绍 在使用 ES 进行检索查询时,我们常常要去优化一些复杂的查询语句,这里 ES 结合 lucene 的生态制作了 Profile API 和图形化的 Profile 分析界面以供用户使用。 这里我们来简单讲解一下这个工具 API,希望能给…

全双工语音交互

文章目录 微软小冰全双工字节大模型语音交互[Language Model Can Listen While Speaking](https://arxiv.org/html/2408.02622v1) 微软小冰全双工 全双工的定义:一路持续的听,upload audio;一路持续的输出,download audio&#xf…

C#中的Graphics类和SetQuality()自定义方法

在 C# 中,Graphics 类是 System.Drawing 命名空间的一部分,它提供了一组方法和属性,用于在 Windows Forms 应用程序中进行二维绘图。Graphics 对象可以绘制文本、线条、曲线、形状和图像,并可以对它们进行变换和剪辑。 Graphics …

【JAVA入门】Day33 - Collections

【JAVA入门】Day33 - Collections 文章目录 【JAVA入门】Day33 - Collections Collections 是集合的工具类。其包含的方法如下表所示,其中前两个方法最为常用。 以下代码演示了如何创建集合并批量添加数据,然后打乱集合元素顺序,然后用二分法…

数据结构:(LeetCode203)移除链表元素

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5]示例 2: 输入&#xff1…

代码随想录:343. 整数拆分

343. 整数拆分 class Solution { public:int integerBreak(int n) {int dp[100]{0};//拆分i的最大乘积为dp[i]dp[1]1;//初始化&#xff0c;主要是为了dp[2]初始for(int i2;i<n;i){for(int j1;j<i;j){ dp[i]max(dp[i],max(j,dp[j])*max(i-j,dp[i-j]));//取最大值&#x…

深入Linux轻量级进程管理:线程创建、线程ID解析与进程地址空间页表探究

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;Linux从入门到进阶 欢迎大家点赞收藏评论&#x1f60a; 目录 &#x1f6b2;Linux线程控制&#x1f40f;POSIX线程库&#x1f415;创建线程&#x1f41f;指令查看轻量级进程指令&#xff1a;ps -a…

Python(TensorFlow)和Java及C++受激发射损耗导图

&#x1f3af;要点 神经网络监督去噪预测算法聚焦荧光团和检测模拟平台伪影消除算法性能优化方法自动化多尺度囊泡动力学成像生物研究多维分析统计物距粒子概率算法 Python和MATLAB图像降噪算法 消除噪声的一种方法是将原始图像与表示低通滤波器或平滑操作的掩模进行卷积。…

汇编伪指令 GNU 风格(24)

先来看看关于标号的内容。 这里的局部标号是需要注意的。 全局标号&#xff0c;以及注释 可以不看。 来看一个例子&#xff1b; 这里的 BSYM 我不知道是什么意思。 在来看看关于伪操作的内容&#xff0c; 一般是以 . 开头的。 这是基本的一些操作。 然后是举例&#xff1a; …

前后端时间正确传递

引言&#xff1a;后端传递给前端去展示时间的时候将时间转化为String类型的时间数据去返回。此时就需要加上 JsonFormat 注解来解决这个问题。 框架环境配置中&#xff0c;时间配置为 情形一&#xff1a; 数据库字段exam_time类型为date 后端实体类中examTime类型为Date 1.前…

搭建VUE+VScode+elementUI环境遇到的问题

手把手教你搭建VUEVScodeelementUI开发环境-CSDN博客 vue : 无法加载文件 C:\Users\xxx\AppData\Roaming\npm\vue.ps1&#xff0c;因为在此系统上禁止运行脚本 vue : 无法加载文件 C:\Users\xxx\AppData\Roaming\npm\vue.ps1&#xff0c;因为在此系统上禁止运行脚本 - 知乎 更…

Django+Vue家居全屋定制系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质创作者&…

虚拟机苹果系统MacOS中XCode的安装

1、背景介绍 主机系统Win11&#xff0c;虚拟机VMWare17&#xff0c;苹果系统MacOS 13.6.7 2、Xcode的在线 点击应用市场&#xff0c;输入Xcode搜索&#xff1a; 看来Xcode无法安装在macOS V13上&#xff0c;直接在线安装失败。 3、采用下载安装包的方法进行安装 解决办法参考链…