InfluxDB和IotDB介绍与性能对比

2023-05-16

InfluxDB简介

InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。用于存储和分析时间序列数据的开源数据库。
适合存储设备性能、日志、物联网传感器等带时间戳的数据,其设计目标是实现分布式和水平伸缩扩展。
InfluxDB 包括用于存储和查询数据,在后台处理ETL或监视和警报目的,用户仪表板以及可视化和探索数据等的API。

InfluxDB是一个由InfluxData开发的开源时序型数据。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。

类似的数据库有Elasticsearch、Graphite、IotDB等。

InfluxDB优点
  • 专为时间序列数据编写的自定义高性能数据存储。 TSM引擎允许高摄取速度和数据压缩
  • 完全用 Go 语言编写。 它编译成单个二进制文件,没有外部依赖项
  • 简单,高性能的写入和查询HTTP API
  • 插件支持其他数据提取协议,如Graphite,collectd和OpenTSDB
  • 专为类似SQL的查询语言量身定制,可轻松查询聚合数据
  • 标签允许对系列进行索引以实现快速有效的查询
  • 保留策略有效地自动使过时数据过期
  • 连续查询自动计算聚合数据,以提高频繁查询的效率
InfluxDB缺点
  • InfluxDB 的开源版本只支持一个节点。
  • 开源版本没有集群功能,集群版本需要收费
  • 存在前后版本兼容问题
  • 存储引擎在变化

IotDB简介

Apache IoTDB 是用Java语言编写的, 是专为物联网时序数据打造的数据库,提供数据采集、存储、分析的功能。IoTDB 提供端云一体化的解决方案,在云端,提供高性能的数据读写以及丰富的查询能力,针对物联网场景定制高效的目录组织结构,并与 Apache Hadoop、Spark、Flink 等大数据系统无缝打通;在边缘端,提供轻量化的 TsFile 管理能力,端上的数据写到本地 TsFile,并提供一定的基础查询能力,同时支持将 TsFile 数据同步到云端。

IotDB优点
  • 国产项目,现在国家大力推行自主研发,国产化. IotDB是清华自研时间序列数据库,Apache 孵化项目,2014年项目启动,2018年11月18号 iotdb 正式进入 apache 孵化器,成为中国高校首个进入 apache 孵化器的项目。
  • 为用户提供数据收集、存储和分析等特定的服务
  • 轻量级的结构、高性能和可用的特性,以及与Hadoop和Spark生态的无缝集成,满足了工业IoTDB领域中海量数据存储、高吞吐量数据写入和复杂数据分析的需求。
  • 灵活的部署策略。IoTDB为用户提供了一个在云平台或终端设备上的一键安装工具,以及一个连接云平台和终端上的数据的数据同步工具。
  • 硬件成本低。IoTDB可以达到很高的磁盘存储压缩比。
  • 高效的目录结构。IoTDB支持智能网络设备对复杂时间序列数据结构的高效组织,同类设备对时间序列数据的组织,海量复杂时间序列数据目录的模糊搜索策略。
  • 高吞吐量读写。IoTDB支持数以百万计的低功耗设备的强连接数据访问、高速数据读写,适用于上述智能网络设备和混合设备。
  • 丰富的查询语义。IoTDB支持跨设备和测量的时间序列数据的时间对齐、时间序列字段的计算(频域转换)和时间维度的丰富聚合函数支持。
  • 学习成本非常低。IoTDB支持类似sql的语言、JDBC标准API和易于使用的导入/导出工具。
  • 与先进的开放源码生态系统的无缝集成。IoTDB支持分析生态系统,如Hadoop、Spark和可视化工具(如Grafana)。
IotDB缺点
  • 目前只有单节点版本,不过集群版本马上要发布了
  • IoTDB TsFile 的结构,目前仅有 java 版本,资源占用方面对边缘轻量级设备不友好,限制了其在端/设备侧的应用。
  • 存储上支持使用 HDFS 或 本地盘,通过使用 HDFS 来存储可保证存储层高可用,但计算层没有进一步的高可用保障。

关系数据库VS键值数据库

关系数据库键值数据库
单表列数上限: MySQL InnoDB 为1017列可管理海量条时间序列
单表行数不易过多:小于1000万行查询受限(表达能力低)如下:
水平、垂直分表;分库按时间维度的查询,按值维度的查询,多序列的时间对齐查询

时序数据库

基于关系数据库基于键值数据库原生时序数据库轻量级时序数据库
TimescaleopentsdbKairosDBinfluxdbIodDB
基于PG开发的插件基于Hbase/Cassandra基于LSM机制的时序库工业领域千万条量级时间序列管理
时序数据自动分区时序分区键专属文件结构单节点万亿数据点管理
查询计划做优化定时任务构建索引专属查询优化单节点数十TB级时间序列数据管理
定制并行查询支持Hadoop、Spark、Matlab、Grafana等多种生态
随着导入时间的增加导入速率不断下降压缩比低,查询慢长期历史数据查询性能下降高效的数据持久化,丰富/低延迟的数据查询

InfluxDB和IotDB性能测试

测试配置
总数据量1500 亿 points
client10
group num10
device num100
sensor num100
每个 sensor1500 万 points
encodingRLE
持续高压力写入测试。
测试结果
elapseTime(h)elapseRate(points/s)accuTime(h)accuRate(points/s)
IoTDB25.51632058.8213.23156988.07
InfluxDB38.71077684.2225.81617748.51

测试共生成 1500 亿个 points,InfluxDB 总耗时 38.7 小时,IoTDB 总耗时 25.5 小时。测试 过程中,InfluxDB 和 IoTDB 都保持了平稳的插入速度,中途没有出现异常。

压缩性能
占磁盘空间(G)平均每个 point(B)
InfluxDB6274.49
IoTDB1801.29

InfluxDB 占磁盘空间为 IoTDB 的 3.5 倍。

监控项
CPU usage(%)系统盘 wRate(M/s)数据盘 wRate(M/s)net 流量(M/s)
InfluxDB21.7818.6269.1532.33
IoTDB15.2927.5869.0137.15

对于系统盘(SSD)的 IO 使用 blktrace 工具做的更详细的统计。在 benchmark 平稳运行时, 采样 1 分钟的 IO 数据,统计结果如下:

Q2C 平均耗时 (ms)D2C 占比BLKavgIOPS%util
InfluxDB1.1293.83%521884.4%
IoTDB0.3396.09%207109713.7%

其中:
Q2C:平均每个 IO 请求所消耗的时间;
D2C:IO 请求在 driver 和硬件上所消耗的时间;
Q2C = Q2I + I2D + D2C
BLKavg:平均每个 IO 请求处理的 block 数量;
IOPS:平均每秒处理的 IO 请求数;
%util:IO 设备的繁忙程度。
从上面的监控数据可以看到,对于每个 IO 请求的处理效率,IoTDB 是要优于 InfluxDB;但是
IoTDB 每秒钟处理了大量的 IO 请求,IOPS 过高。

可以关注IotDB开发者博客:https://blog.csdn.net/qiaojialin
IotDB开发者的博客地址

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

InfluxDB和IotDB介绍与性能对比 的相关文章

  • proxmox ve6+influxdb+grafana 集群监控

    pve支持将自身运行状态发送至第三方服务器 0 环境介绍 root 64 pve143 span class token comment pveversion v span proxmox ve 6 2 1 span class token
  • 我的第一次实质性开源贡献——Apache IoTDB

    前言 虽然之前也在Github上尝试提过一些PR 但都是一些doc typo等类型的入门实践 真正算得上有一定实质性工作 xff0c 要数最近在Apache IoTDB上提交的一个功能PR 如果大家对开源感兴趣的话 xff0c 可以看我的一
  • Apache IoTDB’s UDF源码分析(1)

    目录 前言 命令行注册UDF函数 Create Function xxx as 34 全限定类名 34 语法分析 生成物理计划 执行物理计划进行函数注册 Select带有UDF函数的查询 前言 继上个月开始了Apache IoTDB的源码贡
  • Apache IoTDB介绍

    什么是时序数据库 时序数据库 为万物互联插上一双翅膀 有态度的HBase Spark BigData 总体介绍 Apache IoTDB 始于清华大学软件学院 xff0c 是一款时序数据库 主要使用场景是在物联网相关行业 xff0c 如 x
  • Apache IoTDB failed to start RPC ServerService, because Could not create ServerSocket on address

    原因 一般是端口占用 xff0c 可以 jps 检查是不是已经启动了一个 IoTDB
  • InfluxDB 的 InfluxQL 基本介绍与使用

    前言 本文主要介绍 InfluxDB 的 InfluxQL 的基本概念与用法并且包含了一些需要注意的点 由于 InfluxDB 2 x 不使用 InfluxQL 进行查询 如您的版本大于 2 x 请查找其他资料 主要为以下内容 SELECT
  • Influxdb 1.2版本优化之旅(经验证,适用于influxdb1.4版本)

    一 常见异常 1 max series per database exceeded 异常 err max series per database exceeded java lang RuntimeException error max s
  • Prometheus 远程读写 Influxdb

    Prometheus 远程读写 Influxdb Influxdb InfluxDB 是一款开源的时序数据库 是InfluxData 是一个公司 提供时序平台 下的一个产品 使用Go语言开发 时序数据库 Time Series Databa
  • 带有 Influxdb 的 Grafana 世界地图面板不显示点

    我安装了 Grafana 的世界地图面板 但无法在世界地图面板上显示点 我在看Grafana 世界地图 表数据源和其他链接但没有找到答案 我尝试使用country json 添加截屏我的声誉没有 10 所以我无法添加超过 2 个链接 我也尝
  • 我可以为 influxdb 中的不同测量创建不同的保留策略吗?

    是否可以使用不同的保留策略来处理 influxdb 中的不同测量值 这对于 InfluxDB 来说是完全可能的 为此 您需要创建一个具有两个保留策略的数据库 然后将数据写入关联的保留策略 Example influx gt create d
  • 如何使用类似 SQL 的接口 INSERT 到 influxDB 中?

    是否有可能INSERT使用 InfluxDB 上类似 SQL 的接口将数据转换为系列 测量值 是的 您可以简单地INSERT线路协议字符串 https docs influxdata com influxdb v1 6 tools shel
  • 计算 InfluxDB 中开始和结束事件之间的持续时间

    我对 InfluxDB 有两个写入点 一个是开始 另一个是结束 我只需要确定这两个事件之间的持续时间 并围绕它进行查询 InfluxDB有difference 聚合方法 但它不适用于时间元字段 提供自定义时间戳值是实现此目的的唯一方法吗 A
  • 更新与 InfluxDB 中的条件匹配的多个字段值

    在InfluxDB测量中 如何更新与查询匹配的点的字段值 这还是吗从 v1 6 开始不容易实现 https github com influxdata influxdb issues 2575 正如 GitHub 票证中的示例所建议的 实现
  • influxdb python:找不到 404 页面

    我正在尝试使用我找到的 influxdb python 库here https github com influxdata influxdb python 但我什至无法让教程程序运行 当我运行以下示例代码时 python gt gt gt
  • 使用自定义窗口聚合函数进行 Influxdb Flux 查询

    您能否帮助我使用 InfluxDB 2 Flux 查询语法来构建带有自定义聚合函数的窗口查询 我浏览了在线文档 但它们似乎缺乏有关如何从自定义聚合函数中获取实际窗口内容 第一条 最后一条记录 的示例 它也没有立即描述自定义函数的预期签名 我
  • 将带标签的 pandas DF 写入 influxdb

    我有这个 3526 rows x 5 columns DF 其中col0是时间 col1 col3是标签和col4是我的价值 0 1 2 3 4 0 2017 09 29 22 41 51 10 2 95 5 C1195 LF470 SAR
  • 如何使用 influxdb non_negative_derivative 获得一致的值?

    将 grafana 与 influxdb 结合使用 我试图显示某个计数器值的每秒速率 如果我使用non negative derivative 1s 函数中 rate 的值似乎根据 grafana 视图的时间宽度而发生巨大变化 我正在使用l
  • 在将连续查询添加到生产 influxdb 之前测试连续查询的最佳方法是什么?

    将新的连续查询添加到生产数据库 influxdb 的最佳方法是什么 克隆生产 influxdb 吗 我希望避免这种情况 有没有一种好的方法可以通过网络管理界面来测试和尝试它们 我想你可以 创建临时测量 设置 CQ 插入一些示例数据并在 CQ
  • 如何获取测量中的条目数

    我是 influxdb 的新手 我刚刚开始阅读流入文档 我似乎无法得到相当于 从表中选择计数 在 influxdb 中工作 我有一个称为购物车的测量 time status cartid 1456116106077429261 0 A 14
  • 查询 influxdb 的日期

    我在 influxdb 中有一个表 其中有一列名为 expirydate 在专栏中我有一些日期 例如 2016 07 14 或 2016 08 20 我只想选择 2016 07 14 日期 但我不确定如何 目前我的查询是 SELECT FR

随机推荐

  • 图论-路径优化算法总结

    知乎主页 https www zhihu com people shuang shou cha dai 53 目录 1 xff1a Dijkstra算法 1 1 xff1a 算法思想 1 2 xff1a 算法步骤 1 3 xff1a 代码演
  • uORB发布订阅实例

    PX4SITL仿真 uORB实例 飞控串口读取外部传感器数据 xff1a 飞控开启一个进程读取外部传感器数据 xff0c 发布一个uORB主题 xff1b 另一个进程订阅前一个进程发布的主题 xff0c 订阅到的主题通过mavlink消息发
  • PX4仿真环境搭建

    PX4 SITL Simulation 前提准备 xff1a Ubuntu16 04 LTS 安装ROS kinetic 题外话 xff1a 如果连的是有IPV6的校园网 xff0c 在update时可能会访问IPV6地址出错 xff0c
  • PX4-Gazebo仿真学习笔记

    PX4 Gazebo仿真 xff1a http bbs amovauto com forum php mod 61 viewthread amp tid 61 486 amp extra 61 page 3D1 Simulator仿真器 x
  • C语言strtok函数

    1 strtok 语法 include lt string h gt char strtok char str const char delimiters 参数 xff1a str xff0c 待分割的字符串 xff08 c string
  • 终于把大数据类产品全流程解释清楚了

    你点开这文章 xff0c 说明你清晰知道了数据才是一切的基础 人工智能 机器学习 大数据等应用的基础都是基于这样的一个流程 xff0c 只是说运用领域不同 xff0c 那么偏重点不同 本文从数据采集到数据报告 xff0c 详细说明了大数据运
  • 关于slam

    什么是SLAM 机器人在未知环境中 xff0c 要实现智能化需要完成三个任务 xff0c 第一个是定位 Localization xff0c 第二个是建图 Mapping xff0c 第三个则是随后的路径规划 Navigation 之前地平
  • Linux(Ubuntu系统)同网段SSH连接不上,网络能ping通

    问题描述 测试以下命令同样连接不上 span class token function ssh span localhost 问题原因 Ubuntu系统自带 openssh client xff0c 但是没有自带 openssh serve
  • 本地进程间通信(二)--套接字socket

    目录 一 什么是Socket xff1f 二 socket通信流程 Server端 一 创建socket 二 命名socket 三 绑定 四 监听 五 关闭 Client端 一 创建socket 二 connect 三 发送数据 四 关闭s
  • debain服务器搭建之虚拟机安装(一)

    debain服务器虚拟机搭建系列 xff08 一 xff09 xff08 一 xff09 下载debain系统 xff08 二 xff09 搜索下载安装 vmware xff08 三 xff09 开始安装debain系统 xff08 四 x
  • 企业私有云技术设计方案

    1 概述 1 1 文档内容 本文档为某企业私有云技术路线设计文档 1 2 背景描述 1 2 1 某企业私有云业务线规划 近些年由于国内IDC市场发展迅速 xff0c 某企业从战略层面考虑 xff0c 建造了自己的高等级数据中心 xff0c
  • Qt的主窗口背景设置

    主界面设置背景一般有设置背景图片和背景颜色的需求 xff0c 其实二者之间设置方法类似 目录 主界面设置背景一般有设置背景图片和背景颜色的需求 xff0c 其实二者之间设置方法类似 方法一 xff1a 最简单的方式是通过ui界面来设置 xf
  • 7.使用码云

    使用GitHub时 xff0c 国内的用户经常遇到的问题是访问速度太慢 xff0c 有时候还会出现无法连接的情况 xff08 原因你懂的 xff09 如果我们希望体验Git飞一般的速度 xff0c 可以使用国内的Git托管服务 码云 xff
  • git diff命令之后,如何退出

    git diff命令是对比两次文件修改了什么 但如何退出呢 xff1f 输入q 按enter键盘
  • Float类型出现舍入误差的原因

    首先是float累加产生误差的原因 xff0c 该部分转自 xff1a http blog csdn net zhrh0096 article details 38589067 1 浮点数IEEE 754表示方法 要搞清楚float累加为什
  • React之antd Form回显数据

    转自 xff1a https blog csdn net welkin qing article details 110004969 文章目录 一 antd4如何回显数据 1 定义变量2 保存接口数据到form变量中3 form显示数据4
  • equals()方法和hashCode()方法

    1 hashCode 简介 该方法主要是利用一定的规则生成对象的哈希码 xff0c 也称散列码 它是是由对象导出的一个整数值 xff0c 是没有规律的 关于hashCode 使用的哈希算法 xff0c 越糟糕的哈希算法越容易产生哈希碰撞 产
  • 手把手教你基于STM32的BootLoader的OTA远程升级

    本文系21ic论坛蓝V作者小叶三千原创撰写 上次发过SD卡的Bootloader离线升级后 xff0c 应大家的要求 xff0c 这次就讲一下STM32的OTA远程升级 OTA又叫空中下载技术 xff0c 是通过移动通信的空中接口实现对移动
  • 转知乎,感觉非常棒,适合普通人c++学习路线图

    作者 xff1a 刘凯新 链接 xff1a https www zhihu com question 23447320 answer 39322848 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业
  • InfluxDB和IotDB介绍与性能对比

    InfluxDB简介 InfluxDB 是用Go语言编写的一个开源分布式时序 事件和指标数据库 xff0c 无需外部依赖 用于存储和分析时间序列数据的开源数据库 适合存储设备性能 日志 物联网传感器等带时间戳的数据 其设计目标是实现分布式和