iotdb的数据类型,压缩方式,编码方式

一  压缩方式

IoTDB允许在创建一个时间序列的时候指定该列的压缩方式。

  • UNCOMPRESSED(不压缩)
  • SNAPPY压缩
  • LZ4压缩
  • GZIP压

 压缩方式(SNAPPY)针对二进制流进行压缩,因此压缩方式的使用不再受数据类型的限制。

二 编码方式

为了提高数据的存储效率,需要在数据写入的过程中对数据进行编码,从而减少磁盘空间的使用量。在写数据以及读数据的过程中都能够减少I/O操作的数据量从而提高性能。IoTDB支持多种针对不同类型的数据的编码方法: 

1.PLAIN编码(PLAIN)

PLAIN编码,默认的编码方式,即不编码,支持多种数据类型,压缩和解压缩的时间效率较高,但空间存储效率较低。

2.二阶差分编码(TS_2DIFF)

二阶差分编码,比较适合编码单调递增或者递减的序列数据,不适合编码波动较大的数据

3.游程编码(RLE)

游程编码,比较适合存储某些整数值连续出现的序列,不适合编码大部分情况下前后值不一样的序列数据。

游程编码也可用于对浮点数进行编码,但在创建时间序列的时候需指定保留小数位数(MAX_POINT_NUMBER,具体指定方式参见本文SQL 参考文档)。比较适合存储某些浮点数值连续出现的序列数据,不适合存储对小数点后精度要求较高以及前后波动较大的序列数据

游程编码(RLE)和二阶差分编码(TS_2DIFF)对 float 和 double 的编码是有精度限制的,默认保留2位小数。推荐使用 GORILLA。

4.GORILLA编码(GORILLA)

GORILLA编码是一种无损编码,它比较适合编码前后值比较接近的数值序列,不适合编码前后波动较大的数据。当前系统中存在两个版本的GORILLA编码实现,推荐使用GORILLA,不推荐使用GORILLA_V1(已过时)。

使用限制:使用Gorilla编码INT32数据时,需要保证序列中不存在值为Integer.MIN_VALUE的数据点;使用Gorilla编码INT64数据时,需要保证序列中不存在值为Long.MIN_VALUE的数据点。

5.定频数据编码 (REGULAR)

定频数据编码,仅适用于整型(INT32)和长整型(INT64)的时间列定频数据,且允许数据中有一些点缺失,使用此方法编码定频数据优于二阶差分编码(TS_2DIFF)。

定频数据编码无法用于非定频数据,建议使用二阶差分编码(TS_2DIFF)进行处理。

三 数据类型

IoTDB支持:

  • BOOLEAN(布尔值)
  • INT32(整型)
  • INT64(长整型)
  • FLOAT(单精度浮点数)
  • DOUBLE(双精度浮点数)
  • TEXT(字符串)

一共六种数据类型。

其中FLOATDOUBLE类型的序列,如果编码方式采用RLETS_2DIFF可以指定MAX_POINT_NUMBER,该项为浮点数的小数点后位数,若不指定则系统会根据配置文件iotdb-engine.properties文件中的float_precision项配置。

当系统中用户输入的数据类型与该时间序列的数据类型不对应时,系统会提醒类型错误,如下所示,二阶差分编码不支持布尔类型:

 四  数据类型与编码对应关系

数据类型与支持其编码的编码方式对应关系总结如:

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值