其他分享
首页 > 其他分享> > iotdb背景优势简单分析

iotdb背景优势简单分析

作者:互联网

IoTDB 是一个用于管理大量时间序列数据的数据库,它采用了列式存储、数据编码、预计算和索引技术,具有类 SQL 的接口,可支持每秒每节点写入数百万数据点,可以秒级获得超过数万亿个数据点的查询结果。它还可以很容易地与 Apache Hadoop、MapReduce 和 Apache Spark 集成以进行分析。

iotdb 存储能力

0.12及以前版本:1G内存管理15万条时间序列
1个存储组管理不超过 50 万条时间序列

iotdb 的优势

我根据官方文档提出了iotdb相对其他时序数据库的一些主要优势:

schema

IoTDB:IoTDB 提出了一种 基于树的 schema (opens new window)。这和其它时间序列数据库很不一样。这种 schema 有以下优点:

order by time

iotdb 不仅支持order by time 而且能够很好的支持align by time。

考虑一个新的例子:这里有两条时间序列,一条是风场 1 中的风速,一条是风场 1 中的风机 1 产生的电能。如果我们想要研究风速和产生电能之间的关系,我们首先需要知道二者在相同时间戳下的值。也就是说,我们需要按照时间戳对齐这两条时间序列。因此,结果应该是:
iot和influx对时间查询
其中iotdb的查询结果是图1,influx查询结果是图2

downsampling

fill

IoTDB 目前支持 previous , linear, value 三种空值填充方式,数据类型和支持的填充方法如下表所示:
在这里插入图片描述
注意:在 Fill 语句中只能指定一种填充方法

latest value

用户可以通过 select last 指定查询最新点。由于最新点数据表征了当前状态,因此在物联网数据分析场景中尤为重要。为了提供毫秒级的返回速度,Apache IoTDB 对最新点查询进行了缓存优化**,**满足用户对设备实时监控的性能需求。

select last <Path> [COMMA <Path>]* from < PrefixPath > [COMMA < PrefixPath >]* <whereClause>

compression

IoTDB 支持许多时间序列编码和压缩方法,比如 RLE, 2DIFF, Gorilla 等等,以及 Snappy 压缩。在 IoTDB 里,你可以根据数据分布选择你想要的编码方法。
数据类型与支持其编码的对应关系
IoTDB 允许在创建一个时间序列的时候指定该列的压缩方式。现阶段 IoTDB 支持以下几种压缩方式:

UNCOMPRESSED(不压缩)
SNAPPY 压缩
LZ4 压缩
GZIP 压缩
旋转门算法压缩 (SDT)

其中旋转门压缩(SDT)算法是一种有损压缩算法。SDT 的计算复杂度较低,并使用线性趋势来表示大量数据。
在 IoTDB 中,SDT 在刷新到磁盘时会压缩并丢弃数据。

running on Edge-side Device:

现在,边缘计算变得越来越重要,边缘设备有越来越强大的计算资源。

在边缘侧部署时间序列数据库,对于管理边缘侧数据、服务于边缘计算来说,是有用的。

由于 OpenTSDB 和 KairosDB 依赖另外的数据库,它们的体系结构是臃肿的。特别是很难在边缘侧运行 Hadoop。

Writing data to NFS (HDFS)

Sharing nothing 的体系结构是好的,但是有时候你不得不增加新的服务器,即便你的 CPU 和内存都是空闲的而磁盘已经满了。

此外,如果我们能直接把数据文件存储到 HDFS 中,用 Spark 和其它软件来分析数据将会更加简单,不需要 ETL。

标签:采样,IoTDB,背景,压缩,iotdb,优势,序列,数据
来源: https://blog.csdn.net/Tiffany_J/article/details/123016610