ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

iotdb背景优势简单分析

2022-02-20 19:30:59  阅读:244  来源: 互联网

标签:采样 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 有以下优点:

  • 在许多工业场景里,设备管理是有层次的,而不是扁平的。因此我们认为基于树的 schema 比基于 tag-value 的 schema更好。
  • 在许多现实应用中,tag 的名字是不变的。例如:风力发电机制造商总是用风机所在的国家、所属的风场以及在风场中的 ID来标识一个风机,因此,一个4层高的树(“root.the-country-name.the-farm-name.the-id”)来表示就足矣。你不需要重复告诉IoTDB”树的第二层是国家名”、“树的第三层是风场名“等等这种信息。
  • 这样的基于路径的时间序列 ID定义还能够支持灵活的查询,例如:”root..a.b.“,其中、*是一个通配符。
    树形结构

order by time

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

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

downsampling

  • IoTDB 支持在任意时间对数据进行即席(ad-hoc)降采样。例如:一条 SQL 返回从 2020-04-27 08:00:00开始的每 5 分钟采样 1 个点的降采样数据,另一条 SQL 返回从 2020-04-27 08:00:01 开始的每 5 分 10秒采样 1 个点的降采样数据。 (InfluxDB 也支持即席降采样,但是性能似乎并不好。)
  • IoTDB 的降采样不占用磁盘

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 支持往本地或者 HDFS 写数据。IoTDB 还允许用户扩展实现在其它 NFS 上存储数据。
  • InfluxDB 和 KairosDB 只能往本地写数据。

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有