IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Apache IoTDB介绍 -> 正文阅读

[大数据]Apache IoTDB介绍

什么是时序数据库

时序数据库-为万物互联插上一双翅膀 – 有态度的HBase/Spark/BigData

总体介绍

Apache IoTDB 始于清华大学软件学院,是一款时序数据库。主要使用场景是在物联网相关行业,如:车联网、风力发电、地铁、飞机监控等等,具体应用案例及公司详情可以查看:IoTDB在实际公司中的使用信息收集。它采用了列式存储、数据编码、预计算和索引技术,具有类 SQL 的接口,可支持每秒每节点写入数百万数据点,可以秒级获得超过数万亿个数据点的查询结果。它还可以很容易地与 Apache Hadoop、MapReduce 和 Apache Spark 集成以进行分析。

物联网数据采集的特点

物联网的特点是都会存在一个或多个设备,他们以各种各样的形式组织到一起,用来观测或记录同一时间里相同环境所产生的数据。

Apache IoTDB 的前世今生

2012年,三一重工在实际业务中,20 万设备保存了 3 年的数据,TB级别的数据使得 Oracle 被拖的根本吃不消。关键的问题点还不仅仅是存量数据大,新增数据依然以非常快的速度在增长。后来公司联系到了 IoTDB 的第一批开发者,但是当时的方案还是基于 Cassandra 来做设计,当时规划了 5 台机器的集群,性能刚满足,但随着时间推移设备总量在增加,业务系统的查询请求量在增加。

2015年,开始基于Cassandra研发分布式时序数据库,但由于并非完全自研,有点受制于人,而且Cassandra 在经过大量的努力之后,最后发现如果再改可能就需要大面积的重构 Cassandra 数据的代码了,最终决定重新设计一个存储方式,来解决物联网场景下的时序数据高效写入、低延迟读取、高压缩比持久化。IoTDB项目开始诞生,走向了自主研发的道路。后来将IoTDB项目捐献给Apache基金会项目进行孵化,后来毕业,才发展成现在的Apache IoTDB。

系统架构

IoTDB 套件由若干个组件构成,共同形成“数据收集-数据写入-数据存储-数据查询-数据可视化-数据分析”等一系列功能。如下图展示了使用 IoTDB 套件全部组件后形成的整体应用架构。下文称所有组件形成 IoTDB 套件,而 IoTDB 特指其中的时间序列数据库组件。

?在上图中,用户可以通过 JDBC 将来自设备上传感器采集的时序数据、服务器负载和 CPU 内存等系统状态数据、消息队列中的时序数据、应用程序的时序数据或者其他数据库中的时序数据导入到本地或者远程的 IoTDB 中。用户还可以将上述数据直接写成本地(或位于 HDFS 上)的 TsFile 文件。

可以将 TsFile 文件写入到 HDFS 上,进而实现在 Hadoop 或 Spark 的数据处理平台上的诸如异常检测、机器学习等数据处理任务。

对于写入到 HDFS 或者本地的 TsFile 文件,可以利用 TsFile-Hadoop 或 TsFile-Spark 连接器允许 Hadoop 或 Spark 进行数据处理。

对于分析的结果,可以写回成 TsFile 文件。

IoTDB 和 TsFile 还提供了相应的客户端工具,满足用户查看和写入数据的 SQL 形式、脚本形式和图形化形式等多种需求

性能对比

测试工具使用的是由清华大学大数据实验室开发的

1.写入性能对比

数据集2客户端存储组设备变量batchsizeLOOP数据量写入速度(point/s)硬盘数据大小
IoTDB10101010100010000001.00E+1124750321.9338306092
InfluxDB10101010100010000001.00E+11304682932
TimescaleDB10101010100010000001.00E+11737689.221610219064
数据集1客户端存储组设备变量batchsizeLOOP数据量写入速度(point/s)硬盘数据大小
IoTDB1010101010001000001000000000020706345.153599732
InfluxDB101010101000100000100000000001729907.8130546560
TimescaleDB10101010100010000010000000000715857161026468
KairosDB1010101010000100001000000000024924.9776263380

上面一组数据可以看出写入性能高于同款数据库10倍有余,单机写入速度高达到每秒2千万。且硬盘占用是最小的,这在数据比较大的线上业务中,可能每个月会差出来1到2块硬盘。

2. 查询性能对比

原始数据查询

客户端存储组设备序列-数据量变量查询点数LOOP速度(point/s)AVGMIN
IoTDB1010101.00E+091100000010012942984.85740.27457.04
InfluxDB1010101.00E+09110000001001779606.455914666.39
TimescaleDB1010101.00E+09110000001003781467.522345.691193.78

聚合数据查询

客户端存储组设备序列-数据量变量LOOP范围速度(point/s)AVGMIN
IoTDB-11010101.00E+0911000.000149.7527.8718.03
IoTDB-21010101.00E+0911000.00149.7549.1419.87
IoTDB-31010101.00E+0911000.0149.7648.6922.32
IoTDB-41010101.00E+0911000.148.6899.1425.56
IoTDB-51010101.00E+091100114595.6145.54
InfluxDB-11010101.00E+0911000.0001234.3240.2821.63
InfluxDB-21010101.00E+0911000.00128.88341.9238.1
InfluxDB-31010101.00E+0911000.013.073226.872664.86
TimescaleDB-11010101.00E+0911000.000142.39220.57120.5
TimescaleDB-21010101.00E+0911000.0015.81502.9754.15
TimescaleDB-31010101.00E+0911000.011.029711.557148.69

3. 对比图

整体来看 IoTDB 无论在写入、原始数据查询还是聚合查询,都几乎是10倍的性能于竞品数据库,而且硬盘占用又小于同款数据库10倍。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:10:56  更:2022-05-08 08:13:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:17:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码