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 产生的电能。如果我们想要研究风速和产生电能之间的关系,我们首先需要知道二者在相同时间戳下的值。也就是说,我们需要按照时间戳对齐这两条时间序列。因此,结果应该是:
其中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