0
点赞
收藏
分享

微信扫一扫

使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(4)

使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(4)

编码

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

  • PLAIN:普通编码是默认的编码模式,即不编码,支持多种数据类型。它具有较高的压缩和解压缩效率,但空间存储效率较低。
  • TS_2DIFF:二阶差分编码更适合对单调递增或递减的序列数据进行编码,不推荐对波动较大的序列数据进行编码。
  • RLE:游程编码更适合存储具有连续整数值的序列,不推荐用于大多数时间具有不同值的序列数据。游程编码也可用于对浮点数进行编码,但必须指定保留的十进制数字。比较适合存储浮点值连续出现、单调递增或递减的序列数据,不适合存储小数点后精度要求高或波动较大的序列数据。
  • GORILLA:GORILLA编码更适合值相近的浮点序列,不建议用于波动较大的序列数据。

常规编码

常规数据编码更适合编码常规序列递增的数据(例如,每个数据点之间经过的时间相同的时间序列),在这种情况下,它比TS_2DIFF更好。规则数据编码方式不适合有波动的数据,即不规则数据,此时建议用TS_2DIFF处理。

数据类型和编码之间的对应关系

前面描述的四种编码适用于不同的数据类型。如果对应关系是错误的,就不能正确地创建时间序列。下表中详细总结了数据类型及其支持的编码之间的对应关系。

**数据类型及其支持的编码之间的对应关系**

Data Type

Supported Encoding

BOOLEAN

PLAIN, RLE

INT32

PLAIN, RLE, TS_2DIFF, REGULAR

INT64

PLAIN, RLE, TS_2DIFF, REGULAR

FLOAT

PLAIN, RLE, TS_2DIFF, GORILLA

DOUBLE

PLAIN, RLE, TS_2DIFF, GORILLA

TEXT

PLAIN

压缩

当时间序列按照指定的类型写成二进制数据编码后,IoTDB使用压缩技术对数据进行压缩,进一步提高空间存储效率。虽然编码和压缩都是为了提高存储效率,但编码技术通常只适用于特定的数据类型。例如,二阶差分编码只适用于INT32或INT64数据类型,存储浮点数需要乘以10m才能转换为整数,之后将数据转换为二进制流。压缩方法(SNAPPY)压缩二进制流,因此压缩方法的使用不再受数据类型的限制。

IoTDB允许咱们开发者在创建时间序列时指定列的压缩方法,现在主要支持以下两种压缩方法:

  • UNCOMPRESSED
  • SNAPPY

单节点设置

大家可以通过sbin文件夹下的启动服务器脚本来启动IoTDB。

  1. # Unix/OS X
  2. > nohup sbin/start-server.sh >/dev/null 2>&1 &
  3. or
  4. > nohup sbin/start-server.sh -<conf_path> -rpc_port <rpc_port> >/dev/null 2>&1 &

  5. # Windows
  6. > sbin\start-server.bat -<conf_path> -rpc_port <rpc_port>

 使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(4)_数据类型

  • "-c "和"-rpc_port "是可选的
  • 选项"-c "指定系统配置文件目录
  • 选项“-rpc_port”指定rpc端口
  • 如果两个选项都指定了,则rpc _端口将覆盖中的rpc_port配置路径
举报

相关推荐

0 条评论