`

InfluxDB和IotDB介绍与性能对比

阅读更多

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万行 查询受限(表达能力低)如下:
水平、垂直分表;分库 按时间维度的查询,按值维度的查询,多序列的时间对齐查询

时序数据库

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

InfluxDB和IotDB性能测试

测试配置
总数据量 1500 亿 points
client 10
group num 10
device num 100
sensor num 100
每个 sensor 1500 万 points
encoding RLE
持续高压力写入测试。  
测试结果
  elapseTime(h) elapseRate(points/s) accuTime(h) accuRate(points/s)
IoTDB 25.5 1632058.82 13.2 3156988.07
InfluxDB 38.7 1077684.22 25.8 1617748.51

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

压缩性能
  占磁盘空间(G) 平均每个 point(B)
InfluxDB 627 4.49
IoTDB 180 1.29

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

监控项
  CPU usage(%) 系统盘 wRate(M/s) 数据盘 wRate(M/s) net 流量(M/s)
InfluxDB 21.78 18.62 69.15 32.33
IoTDB 15.29 27.58 69.01 37.15

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

  Q2C 平均耗时 (ms) D2C 占比 BLKavg IOPS %util
InfluxDB 1.12 93.83% 521 88 4.4%
IoTDB 0.33 96.09% 207 1097 13.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开发者的博客地址

<audio controls="controls" style="display: none;"></audio>

分享到:
评论

相关推荐

    Windows下jmeter+influxdb+telegraf+grafana性能数据实时监控平台部署安装运用

    **JMeter** 是一款强大的负载和性能测试工具,由Apache开源组织开发。它能够模拟大量用户并发访问,以测试服务器的响应时间和稳定性。在Windows上,你需要下载JMeter的最新稳定版本,并解压缩到任意目录。通过其直观...

    JMeter+InfluxDB+Grafana在性能测试中的综合应用与监控解决方案

    内容概要:本文详细介绍了使用JMeter、InfluxDB和Grafana进行性能测试的方法和技巧,涵盖了性能测试的基本概念、指标及其测量方法。文章还提供了具体的JMeter脚本生成、优化和完善过程,以及如何通过InfluxDB和...

    docker-statsd-influxdb-grafana, 带有 Telegraf ( StatsD ),InfluxDB和Grafana的Docker 映像.zip

    docker-statsd-influxdb-grafana, 带有 Telegraf ( StatsD ),InfluxDB和Grafana的Docker 映像 带有 Telegraf ( StatsD ),InfluxDB和Grafana的 Docker 映像

    InfluxDBStudio-0.2.1

    总结,InfluxDB Studio 0.2.1作为InfluxDB的客户端工具,以其丰富的功能、友好的界面和高效的性能,成为了InfluxDB管理员和开发者的得力助手。无论是在日常的数据管理,还是在数据分析和监控方面,都能显著提高工作...

    centos influxdb安装 详细!Centos7.X搭建Grafana+Jmeter+Influxdb性能实时监控

    首先,我们要介绍的是JMeter,这是一个用Java语言开发的压力测试工具,广泛用于接口测试和性能评估。尽管它的聚合报告功能强大,但在大量测试数据面前,报告可能显得不够直观。因此,我们通常寻求更美观、直观的展示...

    InfluxDB数据库管理工具InfluxDBStudio

    - **实时监控**:可以实时监控InfluxDB的运行状态,包括性能指标和存储情况。 - **模板和工作台**:预设的模板和自定义的工作台布局,帮助用户快速构建个性化的数据分析界面。 3. **使用InfluxDB Studio的益处** ...

    时序数据库 IoTDB 在 360 的落地实践.pdf

    在选型方面,作者比较了 InfluxDB 和 IoTDB 两种时序数据库的差异。在数据模型方面,InfluxDB 使用松散的标签值模型,对于数据的约束力非常弱,而 IoTDB 的元数据约束力更强,业务建模时固定层级使得业务之间更容易...

    InfluxDB可视化工具

    InfluxDB是一款高性能、专为时间序列数据设计的开源数据库。在大数据时代,尤其是在物联网(IoT)、监控系统、性能指标收集以及实时分析等领域,InfluxDB因其高效、易用的特点,得到了广泛应用。InfluxDB可视化工具...

    实用的influxdb连接工具

    InfluxDB是一款高性能、专为时间序列数据设计的开源数据库,广泛应用于监控、物联网(IoT)、实时分析等领域。而“实用的InfluxDB连接工具”则是一款针对InfluxDB设计的图形化管理工具,旨在简化用户与InfluxDB之间的...

    Windows 下的 influxdb 客户端 Windows连接influxdb客户端

    在Windows操作系统中,InfluxDB是一个流行的时序数据库系统,常用于存储和分析大量时间序列数据,例如监控数据、物联网(IoT)设备数据或性能指标。为了与InfluxDB进行交互,我们需要一个客户端工具,这正是“Windows...

    iotdb集群版本安装包

    iotdb集群版本安装包,支持linux和windows...也是一款开源时序数据库,为用户提供数据收集、存储和分析等服务,经基准测试表明 IoTDB 的读写性能均优于现有的时序数据库 KairosDB,InfluxDB,TimescaleDB、OpenTSDB 等

    influxDBStudio

    5. 性能监控:该工具可以实时显示InfluxDB的CPU使用率、内存占用、磁盘I/O等系统资源状态,帮助用户及时发现和解决性能问题。 6. 配置管理:允许用户查看和修改InfluxDB的配置参数,优化数据库性能。 三、Go语言...

    influxdb_c_influxdbc++11_influxDBC++_influxdb_influxdb接口c_C++_

    InfluxDB是一款开源的时间序列数据库,专为处理大量的实时数据而设计,广泛应用于监控、物联网(IoT)、性能分析和大数据应用等领域。C++接口是InfluxDB为C++开发者提供的API,允许用户在C++应用程序中方便地与...

    influxdb linux 安装包 2.0.8

    这个版本提供了许多改进,包括对数据可视化、数据治理和性能的优化。如果你的压缩包文件名为`influxdb2-2.0.8-linux-amd64`,它可能包含二进制文件,可以手动解压并按照上述步骤进行安装,而不是通过包管理器。手动...

    java使用influxDB数据库的详细代码

    Java 使用 InfluxDB 数据库的详细代码介绍 ...本文介绍了 Java 使用 InfluxDB 数据库的详细代码,包括 pom.xml 中引入 InfluxDB 依赖项、编写 InfluxDB 工具类、连接 InfluxDB 数据库和创建保留策略等。

    InfluxDBStudio-0.2.0.zip

    InfluxDB Studio是一款高效、易用的InfluxDB数据库管理和数据可视化工具,旨在提供全面的InfluxDB操作体验。在了解这个压缩包文件"**InfluxDBStudio-0.2.0.zip**"之前,我们需要先熟悉InfluxDB的基础知识。 ...

    windows influxdb时序数据库

    Windows 上的 InfluxDB 是一款专门用于处理时序数据的开源数据库系统,尤其适用于监控、分析和存储时间序列数据,如物联网(IoT)设备的数据、性能监控指标或日志事件。InfluxDB的设计目标是高吞吐量、低延迟,以支持...

    influxdb-1.8.3_windows_amd64

    InfluxDB是一款高性能、专为时间序列数据设计的开源数据库。这款数据库被广泛应用于监控、物联网(IoT)、实时分析等领域。InfluxDB 1.8.3是该软件的一个稳定版本,专为Windows 64位操作系统设计。在这个版本中,用户...

    InfluxDB查询 导出数据 mybatis SpringBoot

    InfluxDB具有高写入和查询性能,支持复杂的查询语言(InfluxQL),允许用户执行实时分析。在描述中提到的"InfluxDB查询 导出数据",意味着我们需要了解如何通过InfluxDB的API或者InfluxQL来检索并导出数据,这对于...

    InfluxDB数据库管理工具

    InfluxDB是一款高性能、专为时间序列数据设计的开源数据库,广泛应用于监控、物联网(IoT)、实时分析等领域。其强大的查询语言InfluxQL使得数据处理变得简单,而InfluxDB的管理工具则进一步提升了数据库的管理和操作...

Global site tag (gtag.js) - Google Analytics