三种时序数据库比较:InfluxDB、Prometheus 与 IotDB

1、引言

时序数据治理是数据治理领域核心、打通IT与OT域数据链路,是工业物联网基石、大数据价值创造的关键、企业管理提升的发动机、是数字化转型的重要支撑。

工业企业在生产经营过程中,会运用物联网技术,采集大量的数据并进行实时处理,这些数据都是时序的,而且具有显著的特点,比如带有时间戳、结构化、没有更新、数据源唯一等。

时序数据处理应用于智慧城市、物联网、车联网、工业互联网领域的过程数据采集、过程控制,并与过程管理建立一个数据链路,属于工业数据治理的新兴领域。

时序数据库的应用场景在物联网和互联网APM等场景应用比较多,下面是列举了一些时序数据库的应用场景,但不是全部:

  • 公共安全:上网记录、通话记录、个体追踪、区间筛选;
  • 电力行业:智能电表、电网、发电设备的集中监测;
  • 互联网:服务器/应用监测、用户访问日志、广告点击日志;
  • 物联网:电梯、锅炉、机械、水表等各种联网设备;
  • 交通行业:实时路况、路口流量监测、卡口数据;
  • 金融行业:交易记录、存取记录、ATM、POS机监测。
  • 2、概述

    2.1时序数据库的定义

    时序数据是随时间不断产生的一系列数据,简单来说,就是带时间戳的数据。时序数据库 (Time Series Database,TSDB) 是优化用于摄取、处理和存储时间戳数据的数据库。此类数据可能包括来自服务器和应用程序的指标、来自物联网传感器的读数、网站或应用程序上的用户交互或金融市场上的交易活动。

    其主要数据属性如下:

  • 每个数据点都包含用于索引、聚合和采样的时间戳。该数据也可以是多维的和相关的;
  • 写多读少,需要支持秒级和毫秒级甚至纳秒级高频写入;查询通常是多维聚合查询,对查询的延迟要求比较高
  • 数据的汇总视图(例如,下采样或聚合视图、趋势线)可能比单个数据点提供更多的洞察力。例如,考虑到网络不可靠性或传感器读数异常,我们可能会在一段时间内的某个平均值超过阈值时设置警报,而不是在单个数据点上这样做;
  • 分析数据通常需要在一段时间内访问它(例如,给我过去一周的点击率数据);
  • 虽然其他数据库也可以在数据规模较小时一定程度上处理时间序列数据,但 TSDB可以更有效地处理随时间推移的数据摄取、压缩和聚合。简而言之,时序数据库是专门用于存储和处理时间序列数据的数据库,支持时序数据高效读写、高压缩存储、插值和聚合等功能。

    2.2时序数据库的概念

    时序数据库是专门处理时序数据的数据库,因此其相关概念是和时序数据紧密联系的,下面是时序数据库的一些基本概念。

  • 度量 Metric:Metric 类似关系型数据库里的表(Table),代表一系列同类时序数据的集合,例如为空气质量传感器建立一个 Table,存储所有传感器的监测数据。
  • 标签 Tag:Tag 描述数据源的特征,通常不随时间变化,例如传感器设备,包含设备 DeviceId、设备所在的 Region 等 Tag 信息,数据库内部会自动为 Tag 建立索引,支持根据 Tag 来进行多维检索查询;Tag 由 Tag Key、Tag Value 组成,两者均为 String 类型。
  • 时间戳 Timestamp:Timestamp代表数据产生的时间点,可以写入时指定,也可由系统自动生成;
  • 量测值 Field:Field描述数据源的量测指标,通常随着时间不断变化,例如传感器设备包含温度、湿度等Field;
  • 数据点Data Point: 数据源在某个时间产生的某个量测指标值(Field Value)称为一个数据点,数据库查询、写入时按数据点数来作为统计指标;
  • 时间线 Time Series :数据源的某一个指标随时间变化,形成时间线,Metric + Tags + Field 组合确定一条时间线;针对时序数据的计算包括降采样、聚合(sum、count、max、min等)、插值等都基于时间线维度进行;
  • 2.3时序数据库的趋势

    时序数据库的发展趋势,可以从DB-engines(Knowledge Base of Relational and NoSQL Database Management Systems)获取获取到,下图是DB-engines收录的数据库近24个月的发展趋势,其中时序数据库的活跃度最高,且随时间呈现越来越活跃的趋势。

     3、常用时序数据库测试

    3.1读写测试

    写入测试

    指标

    InfluxDB

    Prometheus

    IoTDB

    10000

    185ms

    192ms

    183ms

    10000

    186ms

    195ms

    120ms

    20000

    252ms

    268ms

    236ms

    20000

    264ms

    273ms

    219ms

    30000

    385ms

    401ms

    274ms

    查询测试

    指标

    InfluxDB

    Prometheus

    IoTDB

    10000

    14ms

    18ms

    16ms

    20000

    31ms

    32ms

    35ms

    40000

    56ms

    58ms

    54ms

    60000

    75ms

    82ms

    78ms

    90000

    96ms

    99ms

    97ms

    3.2 功能对比

    DB-Engines提供的编辑信息

    名字

    InfluxDBX

    Prometheus

    Apache IoTDBX

    描述

    用于存储时间序列、事件和指标的 DBMS

    开源时间系列DBMS和监控系统

    具有高性能数据管理和分析的物联网原生数据库,可部署在边缘和云端,并与Hadoop,Spark和Flink集成

    主数据库模型

    时间序列数据库管理系统

    时间序列数据库管理系统

    时间序列数据库管理系统

    辅助数据库模型

    空间数据库管理系统

    数据库引擎排名

    得分       29.86

    排    #29    整体

    #1     时间序列数据库管理系统

    得分       6.32

    排    #67    整体

    #3     时间序列数据库管理系统

    得分       0.43

    排    #255         整体

    #20    时间序列数据库管理系统

    网站

    InfluxDB: Open Source Time Series Database | InfluxData

    prometheus.io

    iotdb.apache.org

    技术文档

    docs.influxdata.com/influxdb

    prometheus.io/docs

    开发人员

    Apache Software Foundation

    初始版本

    2013

    2015

    2018

    当前版本

    2.0.8, 八月 2021

    许可证信息

    开源信息

    开源信息

    开源信息

    仅基于云的信息

    DBaaS 产品/服务信息

    实现语言

    Go

    Go

    Java

    服务器操作系统

    Linux

    OS X

    Linux

    Windows

    具有 Java 虚拟机的操作系统(>= 1.8)

    数据方案

    无架构

    类型

    数值数据和字符串

    仅数字数据

    XML支持

    二级索引

    断续器信息

    类似 SQL 的查询语言

    类似 SQL 的查询语言

    API 和其他访问方法

    HTTP API

    JSON over UDP

    RESTful HTTP/JSON API

    JDBC

    Native API

    支持的编程语言

    .Net

    Clojure

    Erlang

    Go

    Haskell

    Java

    JavaScript

    JavaScript (Node.js)

    Lisp

    Perl

    PHP

    Python

    R

    Ruby

    Rust

    Scala

    .Net

    C++

    Go

    Haskell

    Java

    JavaScript (Node.js)

    Python

    Ruby

    服务器端脚本

    触发器

    分布方法

    分片

    分片

    复制方法

    可选复制因子

    地图共享资源

    与Hadoop和Spark集成

    一致性概念

    没有

    最终一致性

    与Raft的强一致性

    外键

    交易概念

    并发

    耐久性

    内存中功能

    用户概念

    通过用户账户进行简单的权限管理

    系统供应商提供的详细信息

    名字

    InfluxDBX

    Prometheus

    Apache IoTDBX

    具体特性

    1. InfluxData是开源时间序列数据库InfluxDB的创建者。 它专门用于处理物联网设备和传感器、应用程序、容器、VM 和网络生成的大量带时间戳的数据。借助 InfluxDB,开发人员可以快速、大规模地为物联网、分析和云原生服务构建实时应用程序。
    2. InfluxData专注于开发人员的幸福感和在开发人员所在的地方与他们会面 – 使用他们喜欢的工具以及无论他们在哪里构建应用程序:在云中,本地还是本地。InfluxData还致力于帮助开发人员更快地启动和运行,以便他们可以专注于其他事情。
    3. InfluxDB的客户范围从初创公司到财富500强企业,其用例跨越了每个垂直行业,例如消费者和工业物联网,安全,金融科技,可再生能源等。目前,全球有超过600,000个InfluxDB OSS的每日活动实例和超过50,000个注册开发人员使用InfluxDB Cloud;社区每年都在迅速发展。

    \

    1. Apache IoTDB(物联网数据库)是一个时间序列数据管理系统,在物联网中集成了数据收集,数据存储,数据管理和数据分析。
    2. Apache IoTDB旨在解决物联网的痛点,即海量数据生成,高频采样,无序数据,特定分析要求,高存储和运维成本,物联网设备的低计算能力等。
    3. 它支持高频数据写入,低成本数据存储,低延迟查询,复杂分析等。
    4. “TsFile”是一种列存储文件格式,用于在Apache IoTDB中访问,压缩和存储时序数据。其结构基于LSM-Tree,减少了计算资源,优化了Apache IoTDB的性能。

    竞争优势

    1. 价值实现时间
  • InfluxDB提供所有流行的语言和框架,使开发人员能够在几分钟内启动并运行,而不是几天或几周。借助易于使用的快速入门和文档,开发人员可以构建开放、可扩展且易于部署的应用程序。
    1. 社区与生态系统
  • InfluxDB拥有最大的云和开源开发人员社区,用于时序数据库解决方案。通过使社区能够为其他生态系统做出贡献并与其他生态系统集成,InfluxDB在所有用例中都具有更高的弹性,质量,使用和可配置性。Telegraf是InfluxDB的开源收集代理,目前拥有300多个插件,使开发人员不仅可以在数百个数据源中读取和写入指标,还可以转换和过滤这些指标。
    1. 实时实际操作
  • InfluxDB 通过实时分析提供可见性,以便开发人员可以快速对其数据采取行动,例如识别模式、预测未来结果以及将见解转化为行动。
  • \

    1. 低成本、高性能
  • 数千万点写入吞吐量
  • 压缩比高(优于1:10无损压缩),可大大节省服务器硬件成本。
    1. 易用性
  • 跨平台部署,仅依靠 JDK/JRE
  • 开箱即用
  • 独立于第三方系统和外部组件,降低运维成本。
    1. 多样化的数据处理和分析方法
  • 与Apache PLC4X、Apache Pulsar、Apache Flink、Apache Spark、Apache Zeppelin、Grafana等集成,构建完整的开源软件生态
  • 丰富的数据分析功能,如触发器、用户定义功能 (UDF)、选择进入、连续查询等。
    1. 物联网原生数据模型
  • 树状结构
  • 在单个节点中处理数百万台设备/数千万个时间序列
  • 自动创建模型。
    1. 通过“TsFile”的终端边缘云协同解决方案
  • 可部署为数据文件(“TsFile”,一种针对时序数据优化的列存储文件格式)、数据库或数据仓库
  • 在终端(例如现场设备),边缘(例如IPC)和云(内部或云服务器)之间同步“TsFile”,这可以避免重复计算和ETL成本。
    1. 低成本迁移
  • 通过适配器与各种TSDB(InfluxDB,Prometheus,KairosDB等)兼容
  • 典型用户场景

    1. 物联网和传感器监控
  • 开发人员正在见证材料世界中每个可用表面的仪器化 – 从机器到人类。这些设备和传感器正在产生前所未有的数据量,软件需要扩展以满足这一需求。使用InfluxDB的开发人员可以利用数据在时间背景下提供的见解,使他们能够识别和预测随时间推移的趋势,确保任务关键型流程更加一致,高效和可靠。
    1. DevOps Monitoring & Tools for Developers
  • 微服务、容器化、弹性存储、软件定义网络、API 性能、身份验证故障、混合云等新兴趋势,都在不断推动 DevOps 监控和开发人员工具的边界。端点的数量和需要监控的指标的多样性迫使人们重新考虑“一刀切”的心态。现代 DevOps 监控和 DevTools 需要足够灵活,以便在通用框架上处理独特的应用程序和基础架构指标。
    1. 实时分析
  • 指标和事件的数量超出了任何人能够现实地解释和采取行动的能力。具有实时分析功能的机器学习对于从噪声中查找信号至关重要。组织是否需要实时分析来买卖股票,在机器发生故障之前对机器进行预测性维护,根据客户行为调整价格:实时处理,分析和处理时间序列数据是要解决的问题。
  • \

    1. 物联网/物联网
    2. 终端-边端-云协作
    3. 实时和历史时间序列分析

    主要客户

    1. InfluxData拥有超过1,300名付费客户,其中客户包括MuleSoft,IBM,PayPal,Siemens,Tesla。

    \

    1. 全球客户超过200家,包括博世、西门子、Komat'su、阿里巴巴等。

    市场指标

    1. 增长最快的数据库可驱动 23,500 颗 GitHub 星
    2. 每天超过 600,000 个活动实例

    \

    1. GitHub 上有 185 多个贡献者和 10,000 多次每月克隆
    2. 在2021年所有351个Apache项目中排名第7。
    3. 在国际会议/峰会上发表,如ICDE,VLDB,ApacheCon,构建物联网等。
    4. 在澳大利亚、巴西、中国、德国、日本、新西兰、美国等地实施。

    许可和定价模式

    1. 具有闭源群集的开源核心,可在本地或云上作为托管服务使用。所有产品均可通过订阅获得。

    \

    1. 开源:Apache License v2.0
    2. 商业/云/边缘版的定价由Timecho提供,并可根据要求提供。

    3.3总结

    系统供应商提供的详细信息

    指标

    InfluxDBX

    Prometheus

    Apache IoTDBX

    优点

    1. Metrics+Tags
    2. 部署简单、无依赖
    3. 实时数据Downsample
    4. 高效存储
    1. Metrics+Tags
    2. 适用于容器监控
    3. 具有丰富的查询语言
    4. 维护简单
    5. 集成监控和报警功能
    1. 国产数据库
    2. 灵活部署策略
    3. 学习成本低
    4. 硬件成本低

    缺点

    1. 开源版本没有集群功能
    2. 存在前后版本兼容问题
    3. 存储引擎在变化
    1. 没有集群解决方案
    2. 聚合分析能力较弱
    3. 它并不是为了解决大容量存储问题,TB级以上数据建议保存到远端TSDB中;
    4. 它是为运行时正确的监控数据准备的,无法做到100%精准,存在由内核故障、刮擦故障等因素造成的微小误差。
    1. 暂时不支持集群
    2. TSFile结构版本单一
    3. 计算层薄弱
    物联沃分享整理
    物联沃-IOTWORD物联网 » 三种时序数据库比较:InfluxDB、Prometheus 与 IotDB

    发表评论