Apache IoTDB vs InfluxDB 开源版,架构性能全面对比!

e14cef628f4d8cf7ea540e9a6b625320.png

分布式、端边云同步、读写查询性能,Apache IoTDB 与 InfluxDB 开源版的详尽对照!

在物联网(IoT)领域,数据的采集、存储和分析是确保系统高效运行和决策准确的重要环节。随着物联网设备数量的增加和数据量的爆炸式增长,开发者和决策者们需要选择合适的时序数据管理系统。Apache IoTDB 和 InfluxDB 是两款广泛应用的原生时序数据库,它们在架构设计、性能和功能方面各具特色。

为了帮助用户在具体应用场景中做出最适合的时序数据库选择。本文将从:分布式架构、端边云同步能力和性能表现三个方面对 Apache IoTDB 和 InfluxDB 开源版进行详细对比。下面,跟随我们来一探究竟!

01

基本概述

Apache IoTDB(Internet of Things Database)是起源于清华大学的 Apache 顶级项目,也是专为物联网和工业大数据场景设计的高效可扩展时序数据库。IoTDB 旨在提供高吞吐量和低延迟的数据写入和查询能力,支持海量设备和传感器的数据采集。其核心优势在于轻量级、高压缩比和便捷的时间序列数据管理。此外,IoTDB 提供端边云一体化的解决方案,并能够与 Apache Hadoop、Spark、Flink 等大数据系统无缝集成。IoTDB 的分布式架构能够应对大规模物联网数据的存储需求,并提供高可用性和数据一致性。

InfluxDB 是由 InfluxData 开发的一款被广泛应用的时序数据库,以其高性能和灵活性在开发者社区中享有盛誉。InfluxDB 专为高并发的时间序列数据写入和查询而优化,提供了强大的查询语言 InfluxQL,以及兼容 SQL 的 Flux 查询语言,使数据分析更加灵活。InfluxDB 强大的数据压缩和持久化策略有效降低了存储成本。同时,InfluxDB 还支持丰富的生态系统扩展,包括 Telegraf 作为数据采集代理,以及 Chronograf 和 Kapacitor 用于数据可视化和实时处理。

02

分布式架构

在物联网和大数据应用中,分布式架构是处理海量数据和保证系统高可用性的关键技术之一。分布式架构不仅能提高系统的吞吐量和性能,还能提供良好的扩展性和容错能力。接下来,我们将深入探讨 Apache IoTDB 和 InfluxDB 开源版在分布式架构上的设计理念、实现方式及其优缺点。

Apache IoTDB

Apache IoTDB 原生支持分布式,并针对物联网场景做了大量优化,以最大化分布式集群的可用性、可扩展性和性能。

  • Apache IoTDB 针对大部分时序场景中近期数据操作频繁、历史数据操作较少的特点,设计了专门的数据分区和负载均衡策略:Apache IoTDB 管理数据和元数据,以数据分片为例,如下图所示,所有设备的读写流量都会通过哈希算法均匀分配到 SeriesSlot ,再通过时间区间计算得到 TimeSlot 及其对应的 DataPartition,而各层映射通过负载均衡算法确保均匀分配,从而使数据的读写可以并行均匀利用集群所有节点的资源。

通过该方案,不论设备数量是万级还是亿级,时间范围的跨度是 1 年还是 10 年,IoTDB 分片路由信息的维护成本依然是非常轻量的,而具体的时序数据管理又可以分散到集群中,这使得 IoTDB 在面对大规模时序数据时具有很高的可扩展性,目前最大测试过 PB 级别的时序数据存储。

d5c6310f3b341d66528deacdb5354a25.png

  • 与业界其他时序数据库相比,Apache IoTDB 是第一个也是唯一一个提出并应用共识协议统一框架的系统。用户可以根据性能、可用性、一致性和存储成本等需求,灵活选择不同的共识算法。在共识协议统一框架下,Apache IoTDB 拥有强一致性共识协议 RatisConsensus、 专为 IoT 时序场景设计的高性能弱一致性共识协议 IoTConsensus、轻量级单副本共识协议 SimpleConsensus,为用户不同的业务需求提供了丰富灵活的配置选择。

  • 提供丰富可观测性指标。Apache IoTDB 在分布式架构的全链路中内置了上千种监控指标,覆盖读写流程、共识算法、负载均衡、系统资源等,可以为用户提供可靠的实时监控。

InfluxDB

InfluxDB 开源版的分布式特性较为有限,只支持单节点部署,适用于中小规模的数据处理需求。

  • 在开源版本中,InfluxDB 通过时间分片和数据压缩技术来提高数据写入和查询的性能,但不支持原生分布式存储和处理功能。

  • 为了解决单节点的局限性,用户通常需要依赖外部工具和方案,例如使用 Telegraf 进行数据分发,或者通过 InfluxDB 企业版来获得完整的分布式支持。

03

端边云同步

随着物联网数据采集技术的发展与云计算服务的兴起,端边云架构在数据管理中的作用愈发重要。越来越多的业务系统在工厂等靠近数据源的地方部署端侧边侧数据库进行数据采集,并将采集数据汇总到城市数据中心来实现海量数据的存储与分析。接下来,我们将对比 Apache IoTDB 和 InfluxDB 开源版的端边云同步能力。

Apache IoTDB

Apache IoTDB 原生内置流处理引擎,支持端边云同步功能,并拥有良好的性能、可拓展性和可用性等。

991e7c0315bbad6d90cbcac9e5fc46d3.png

  • 近存储计算,以最小 IO、CPU 和网络代价利用数据进行计算,可对核心场景充分优化。Apache IoTDB 充分利用了时序数据库中存储文件的高压缩率特点,将存储引擎  IoTLSM-Tree 中的数据存储文件 TsFile 作为传输单位,降低传输的网络流量并减小云端负载。

  • Apache IoTDB 端边云同步框架允许用户实现自定义的流处理逻辑,可以实现对存储引擎数据变更的监听和捕获、完成对变更数据的处理、实现对变形后数据的向外推送等逻辑。基于自定义流处理插件编程接口,用户可以轻松编写数据抽取插件、数据处理插件和数据发送插件,从而使得流处理功能灵活适配各种工业场景,相比 ETL 或用户手动实现的 CDC 更好用易用。

  • 提出一种基于日志与文件混合传输的时序数据库数据同步方法。通过动态选择利用日志文件和数据文件进行同步,可以在保证较低延迟的同时,尽量增大数据吞吐量。

  • 支持分布式高可用。流处理引擎原生支持进度记录、出错自动重试、断点重算等特性,同时支持 at-least-once 传输语义,保证端到端 100% 一致性。

fd62cc4bfcc4e5cee798c0adee8594c1.png

InfluxDB

InfluxDB 开源版在端边云同步方面的功能相对有限。虽然 InfluxDB 开源版可以通过 Telegraf 代理从边缘设备收集数据,但其本身并不提供专门的同步工具或协议来实现端边云同步。

开发者通常需要依赖第三方工具或定制解决方案来实现数据的同步和传输。例如,可以使用 Kapacitor 进行数据处理和传输,或者借助 MQTT、HTTP 等协议手动实现数据同步。这种方式虽然灵活,但也增加了实现的复杂性和维护成本。InfluxDB 企业版提供了更多的同步和集成选项,但这些功能在开源版中并不包含。

04

性能

性能无疑是时序数据库选型中最重要的指标之一。接下来,本文将基于 benchANT 对 Apache IoTDB 和 InfluxDB 开源版进行性能对比。

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

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

  • Apache IoTDB 的写入吞吐量(Write Throughput)通过导入 2,617,920,000 个数据点并计算所需的耗时得到, InfluxDB 测试结果为 52 万点/秒,而 Apache IoTDB 可达到 363 万点/秒,为 InfluxDB 的 7 倍

  • Apache IoTDB 的查询延迟(Read Latency)通过查询“1 个设备的 1 个测点在 1 个小时内按照 1 分钟进行分段聚合的值”这一场景计算得到,InfluxDB 测试结果约为 45 毫秒,而 Apache IoTDB 可达到 2 毫秒,响应速度比 InfluxDB 快 20 倍以上

  • Apache IoTDB 的存储占用(Storage Comsumption)通过在测试结束时记录存储空间占用得到, InfluxDB 测试结果为 3 GiB,而 Apache IoTDB 仅占用 2 GiB,存储成本比 InfluxDB 减少 33%

  • benchANT 使用读取吞吐量(Read Throughput)/ 月成本(Monthly Costs),计算出的成本效益(Operations Per Cost),也就是代表“每一美元能够置换多少的读取性能”,进而评估时序数据库的投入性能比。在这一指标中, InfluxDB 成本效益为 12.37 ops/$,而 Apache IoTDB 则达到 64.59 ops/$,约为 InfluxDB 的 5 倍

cf753d07dd10b40598a534825994bee3.png

05

总结

在选择适合物联网和大数据应用的时序数据库时,了解不同数据库在架构设计、功能和性能方面的差异是至关重要的。本文对 Apache IoTDB 和 InfluxDB 开源版进行了详细对比,重点分析了它们在分布式架构、端边云同步能力和性能方面的表现。通过本文的对比分析,希望能够为开发者和决策者在选择时序数据库时提供有价值的参考,在复杂多变的物联网和大数据环境中做出最优选择!

ac6093ad786980f23ce17e0f8a813794.gif

0c9840a1c2a306e3801ddf77eba0cfd9.jpeg

0d72d1a8af1c7e202da4f8468ac3fc34.jpeg

176dfc25124bac795c6d891c0d838726.jpeg

d437d5f17417786aaa2a798441c39cc6.gif

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mysql安装 /lib64/libc.so.6: version `GLIBC_2.28‘ not found 缺少 glibc-2.28.tar.gz

问题:安装Mysql出现 Error mysql/bin/mysqld: /lib64/libm.so.6: version GLIBC_2.27 not found (required by mysql/bin/mysqld) mysql/bin/mysqld: /lib64/libc.so.6: version GLIBC_2.28 not found (required by mysql/bin/mysqld) mysql/bin/mysqld: /lib64/lib…

【仿真建模-anylogic】INetwork相关接口说明

Author:赵志乾 Date:2024-06-22 Declaration:All Right Reserved!!! 1. 类图 2. 说明 INetwork为辊道网络、路线网路的顶层接口,其组成元素有节点和路径两种,对应的接口为INode、IP…

Android-Android Studio-FAQ

1 需求 2 接口 3 Android Studio xml布局代码补全功能失效问题 最终解决方案就是尝试修改compileSdk 为不同SDK版本来解决问题,将原本34修改为32测试会发现xml代码补全功能有效了! 参考资料 Android Studio xml布局代码补全功能失效问题_android studi…

10.华为路由器使用ospf动态路由连通两个部门网络

目的:实验ospf动态路由协议连通A与B部门 AR1配置 [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0]ip add 1.1.1.1 24 [Huawei]vlan batch 10 [Huawei]int Vlanif 10 [Huawei]int e0/0/0 [Huawei-Ethernet0/0/0]port link-type access [Huawei-Ethernet0/0/0]por…

CubeFS - 新一代云原生存储系统

CubeFS 是一种新一代云原生存储系统,支持 S3、HDFS 和 POSIX 等访问协议,支持多副本与纠删码两种存储引擎,为用户提供多租户、 多 AZ 部署以及跨区域复制等多种特性。 官方文档 CubeFS 作为一个云原生的分布式存储平台,提供了多种访问协议,因此其应用场景也非常广泛,下面…

Apple - Text Attribute Programming Topics

本文翻译整理自:Text Attribute Programming Topics(更新日期:2004-02-16 https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/TextAttributes/TextAttributes.html#//apple_ref/doc/uid/10000088i 文章目录 一、文…

音视频开发—FFmpeg 打开摄像头进行RTMP推流

实验平台:Ubuntu20.04 摄像头:普通USB摄像头,输出格式为YUV422 1.配置RTMP服务器推流平台 使用Nginx 配置1935端口即可,贴上教程地址 ubuntu20.04搭建Nginxrtmp服务器) 2.配置FFmpeg开发环境 过程较为简单,这里不…

【龙晰 离线安装openssl-devel】openssl-devel rpm 离线安装 需要下载哪些安rpm 包

进入龙晰镜像源地址下载 http://mirrors.openanolis.cn/anolis/8/BaseOS/x86_64/os/Packages/(base) [rootAI lib64]# yum install openssl-devel Last metadata expiration check: 14:03:32 ago on Fri 21 Jun 2024 07:26:56 AM CST. Dependencies resolved. Package …

不服 GPT-4o ,就是干?

OpenAI 最大的对手 Anthropic ,深夜发布了他们迄今为止最智能的模型:Claude 3.5 Sonnet。 这俩家公司的竞争愈演愈烈,Anthropic 声称新 Claude AI 超越了 GPT-4o。 通过 Anthropic 发布的测试报告来看,新模型在推理、知识储备、代…

怎么处理整合了shiro的应用的RPC接口鉴权问题

这篇文章分享一下:当一个服务提供者整合了shiro安全框架来实现权限访问控制时,服务消费者通过feign请求服务提供者的接口时的鉴权不通过问题。 问题描述 博主有一个项目pms(权限管理系统),使用了shiro框架来实现鉴权功…

什么是局域网IP?

局域网IP(Local Area Network IP)指的是在局域网内使用的IP地址。局域网是指在某个地理区域内,由一组相互连接的计算机组成的小型网络,常见于家庭、学校、办公室等场所。局域网IP可以用来实现内网穿透,即在复杂的网络环…

http发展史(http0.9、http1.0、http1.1、http/2、http/3)详解

文章目录 HTTP/0.9HTTP/1.0HTTP/1.1队头阻塞(Head-of-Line Blocking)1. TCP 层的队头阻塞2. HTTP/1.1 的队头阻塞 HTTP/2HTTP/3 HTTP/0.9 发布时间:1991年 特点: 只支持 GET 方法没有 HTTP 头部响应中只有 HTML 内容&#xff0…

2.XSS-存储型

储存型XSS 或持久型 XSS 交互的数据会被存在在数据库里面,永久性存储,具有很强的稳定性。 在留言板里面进行测试一下是否有做过滤 "<>?&66666点击提交 查看元素代码&#xff0c;已经提交完成&#xff0c;并且没有做任何的过滤措施 接下来写一个javascrip…

2024年十大数据集成工具和软件应用场景解析

详细阐述了十大数据集成工具及其优缺点&#xff1a; 数据集成的挑战 在当今的商业环境中&#xff0c;企业常常面临着数据分散、系统孤立的难题。传统的数据集成方式&#xff0c;就像一张复杂的蜘蛛网&#xff0c;难以理顺&#xff0c;令人头痛不已。 数据孤岛: 各个业务系统独立…

使用Jetpack Compose为Android App创建自定义页面指示器

使用Jetpack Compose为Android App创建自定义页面指示器 在现代移动应用中&#xff0c;页面指示器在提供视觉导航提示方面发挥着重要作用&#xff0c;帮助用户理解其在应用内容中的当前位置。页面指示器特别适用于顺序展示内容的场景&#xff0c;如图片轮播、图像库、幻灯片放…

在自托管基础设施上使用 GitOps 部署 MinIO

基于MinIO Weaviate Python GitOps探索的见解&#xff0c;本文探讨了如何增强软件部署流程的自动化。 通过将 GitHub Actions 与 Docker Swarm 集成而产生的协同作用&#xff0c;以自托管基础架构的稳健性为基础&#xff0c;标志着 CI/CD 实践的关键进步。这种方法不仅利用了软…

Mybatis缓存测试

实体类 Student Data Table(name "student") public class StudentEntity implements Serializable {private static final long serialVersionUID 1L;IdColumn(name "id")private Long id;Column(name "name")private String name;Column…

网络爬虫设置代理服务器

目录 1&#xff0e;获取代理 IP 2&#xff0e;设置代理 IP 3. 检测代理 IP 的有效性 4. 处理异常 如果希望在网络爬虫程序中使用代理服务器&#xff0c;就需要为网络爬虫程序设置代理服务器。 设置代理服务器一般分为获取代理 IP 、设置代理 IP 两步。接下来&#xff0c;分…

【STM32--Cortex-M3】

STM32-Cortex-M3 ■ Cortex-M3 处理器内核到基于Cortex-M3的MCU■ ARM的各种架构版本■ 指令集■ Cortex-M3简介■ Cortex-M3寄存器组■ Cortex-M3■ Cortex-M3■ Cortex-M3 ■ Cortex-M3 处理器内核到基于Cortex-M3的MCU Cortex-M3处理器内核是单片机的中央处理单元&#xff…

JDK18特性

JDK18特性 一、JAVA18概述 Java 18 在 2022 年 3 月 22 日正式发布,Java 18 不是一个长期支持版本,这次更新共带来 9 个新功能。 https://openjdk.org/projects/jdk/18/ 二、具体新特性 1. 默认UTF-8字符编码 JDK 一直都是支持 UTF-8 字符编码,这次是把 UTF-8 设置为了默…