当前位置:   article > 正文

IOTDB介绍

iotdb

IoTDB介绍

Apache IOTDB logo

全球最大的开源软件基金会 Apache 软件基金会于北京时间 2020 年 9 月 23 日宣布 Apache IoTDB 毕业成为 Apache 顶级项目!

2020 年 9 月 23 日 Apache IoTDB 成为 Apache 顶级项目 官方证明

简介

IoTDB (Internet of Things Database) 是由清华大学主导的 Apache 孵化项目,是一款聚焦工业物联网、高性能轻量级的时序数据管理系统,也是一款开源时序数据库,为用户提供数据收集、存储和分析等服务。作为一款时序数据库,IoTDB的相关竞品有 KairosDB,InfluxDB,TimescaleDB等。

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

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

经基准测试表明 IoTDB 的读写性能均优于现有的时序数据库 KairosDB,InfluxDB,TimescaleDB、OpenTSDB 等。

不同数据库遇到的问题

不同数据库遇到的问题

磁盘空间占用&摄取率对比

IoTDB和其他时序数据库磁盘空间占用&摄取率对比图

查询延迟对比

IoTDB和其他时序数据库查询延迟对比图

什么是时序数据?

转载于:https://my.oschina.net/u/3374539/blog/3163843

个人理解时序数据就是基于时间维度的同一个物体或概念的值构成的一个序列数据。

在传统关系型数据库中,例如 MySQL,我们通常会放置一个自增的 id 列作为主键标识,如下:

Id 人名 体温 测量时间
1 张三 36.5 2022-03-16 9:00:10
2 李四 36.9 2022-03-16 9:00:10
3 王五 36.2 2022-03-16 9:00:10
4 张三 36.3 2022-03-16 9:22:50
5 张三 36.9 2022-03-16 10:45:23

上面的表结构就是一个时序数据,将表结构做个变形更容易理解:

时间戳 人名 体温
1647392410 张三 36.5
1647392410 李四 36.9
1647392410 王五 36.2
1647393770 张三 36.3
1647398723 张三 36.9

如果把时间作为一个唯一键对齐展示,能够更像时序数据一些,这也是 IoTDB 中查询结果的展示方式:

时间戳 张三 李四 王五
1647392410 36.5 36.9 36.2
1647393770 36.3 NULL NULL
1647398723 36.9 NULL NULL

IoTDB 功能特点

IoTDB 功能特点cisdi

IoTDB 完成了上述问题中的几乎所有功能,而且可以灵活对接多生态,高性能优势等。

基本框架

应用

Apache IoTDB 的架构图

其中,灰色部分是IotDB的组件,数据可以通过JDBC/Native API 写入IoTDB,多个IoTDB之间的数据通过TsFile Sync来实现同步,IotDB Egine通过TsFile的API讲数据写成TsFile的格式,支持的存储方式有本地存储和HDFS。TsFile支持hadoop、Hive、Spark直接进行大数据分析。可以看到IoTDB的核心部分就是TsFile,承载了IoTDB多个实例间的数据同步和数据分析。

上面的图,在逻辑上被分为三部分,其中:

  1. Engine 是完整的数据库进程,负责 sql 语句的解析,数据写入、查询、元数据管理等功能。
  2. Storage 是底层存储结构,类似于Mysql 的 idb 文件
  3. Analyzing Layer 是各种连接器。

Engine 和 Storage 中主要包含:

  1. IoTDB Engine,也就是代码中的 Server 模块.
  2. Native API,他是高效写入的基石,代码中的 Session 模块
  3. JDBC,传统的 JDBC 连接调用方式,代码中的 JDBC 模块
  4. TsFile,这是IoTDB整个数据库的一个特色所在,传统的数据库如果使用 Spark 做离线分析,或者 ETL 都需要通过数据库进
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号