代码编织梦想

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开发者的博客地址

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yinjl123/article/details/129674026

influxdb vs timescaledb 功能/性能对比 (一)_siven_的博客-爱代码爱编程_timescaledb 性能

本篇主要对InfluxDB和TimeScaleDB进行功能和性能对比。 目录 目的及最终结论 对比InfluxDB与TimeScaleDB的功能 对比InfluxDB与TimeScaleDB数据写入性能 对比InfluxDB与TimeScaleDB数据存储空间占用 对比InfluxDB与TimeScaleDB数据读取性能 功能对比 性能对比

时序数据库dolphindb和timescaledb 性能对比测试报告_weixin_33922670的博客-爱代码爱编程

在本文中,我们对 TimescaleDB 和 DolphinDB在时间序列数据集上进行了性能对比测试。测试涵盖了 CSV 数据文件的导入导出、磁盘空间占用、查询性能等三方面。 在我们进行的所有测试中,DolphinDB 表现得更出色,主要结论如下: 数据导入方面,小数据集情况下 DolphinDB 的导入性能是 TimescaleDB 的 10多 倍

时序数据库 Apache-IoTDB源码解析之前言(一)-爱代码爱编程

IoTDB 是一款时序数据库,相关竞品有 Kairosdb,InfluxDB,TimescaleDB等,主要使用场景是在物联网相关行业,如:车联网、风力发电、地铁、飞机监控等等,具体应用案例及公司详情可以查看:IoTDB在实际公司中的使用信息收集 IoTDB 模块主要分为Client,JDBC,Server,TsFile,Grafana,Distribu

spring boot使用IoTDB的两种方式-爱代码爱编程

InfluxDB和IotDB介绍与性能对比 Linux MacBook Docker安装IoTDB及使用 方式一: session方式访问IotDB (推荐使用,自带连接池) maven依赖iotdb-session <dependency> <groupId>org.apache.iotdb</gro

IOTDB介绍-爱代码爱编程

IoTDB介绍 全球最大的开源软件基金会 Apache 软件基金会于北京时间 2020 年 9 月 23 日宣布 Apache IoTDB 毕业成为 Apache 顶级项目! 简介 IoTDB (Internet of Things Database) 是由清华大学主导的 Apache 孵化项目,是一款聚焦工业物联网、高性能轻量级的时序数据管

IoTDB学习笔记-爱代码爱编程

IoTDB IoTDB简介 IoTDB (Internet of Things Database) 是一款时序数据库管理系统,可以为用户提供数据收集、存储和分析等服务。IoTDB由于其轻量级架构、高性能和高可用的特性,以及与 Hadoop 和 Spark 生态的无缝集成,满足了工业 IoT 领域中海量数据存储、高吞吐量数据写入和复杂数据查询分析的需求。

Apache IoTDB介绍-爱代码爱编程

什么是时序数据库 时序数据库-为万物互联插上一双翅膀 – 有态度的HBase/Spark/BigData 总体介绍 Apache IoTDB 始于清华大学软件学院,是一款时序数据库。主要使用场景是在物联网相关行业,如:车联网、风力发电、地铁、飞机监控等等,具体应用案例及公司详情可以查看:IoTDB在实际公司中的使用信息收集。它采用了列式存储、数据编码

时序数据库apache iotdb单元与多元时间序列写入与查询性能对比——田原_apache iotdb的博客-爱代码爱编程

本次分享来自社区贡献者田原 。 随着物联网的普及和工业技术的不断发展,高效管理海量时间序列的需求越来越广泛,数据量越来越庞大。时间序列主要分为两种,即单元时间序列和多元时间序列。单元时间序列是指一个具有单个时间相关变量的序列,单元时间序列只包含一列时间戳和一列值。多元时间序列是指一个具有多个时间相关变量的序列,多元时间序列包含多个一元时间序列作为

三种常用时序数据库对比调研-influxdb、prometheus、iotdb_xuruilll的博客-爱代码爱编程

1、引言 时序数据治理是数据治理领域核心、打通IT与OT域数据链路,是工业物联网基石、大数据价值创造的关键、企业管理提升的发动机、是数字化转型的重要支撑。 工业企业在生产经营过程中,会运用物联网技术,采集大量的数据并进行实时处理,这些数据都是时序的,而且具有显著的特点,比如带有时间戳、结构化、没有更新、数据源唯一等。 时序数据处理应用于智慧城市、物联

tdengine 入门教程①——时序数据库简单介绍和产品对比_小康师兄的博客-爱代码爱编程

文章目录 一、前文二、时序数据库特点三、产品对比 一、前文 TDengine 入门教程——导读 二、时序数据库特点 时序数据库主要应用在物联网场景中,存储物联网设备上报的数据。 物联网中的设备

「经验汇总」基于tdengine的时序数据解决方案_涛思数据(tdengine)的博客-爱代码爱编程

为实现发电、输电、变电、配电、用电的实时智能联动,电力行业开始在传统业务之上构建信息网络、通讯网络、能源网络,运用云计算、物联网等新兴技术,大力发展数字化、信息化、智能化。在应对海量时序数据处理需求时,如关系型数据库、工业实时库、Hadoop 大数据平台在内的传统数据库解决方案问题重重,严重阻碍数字化进程。在此背景下,一些企业开始尝试进行数据架构改造,选择

时序数据库选型、对比iotdb与influxdb-爱代码爱编程

为什么要用时序数据库 首先时序数据库是一种针对时序数据高度优化的垂直型数据库,在各行各业有着广泛的应用。 通常情况设备产生的过程数据有一个非常明显的特点就是和时间有关,一般来说,工业数据、设备数据的典型特点包括 产生频率