MocOS 11.1 IoTDB 0.11.2 JDK 1.8.0_211 二进制安装是时序数据最简单的安装方式了,三部曲,库随下载解压,笔安启动验证,时序数据实操体验: 下载解压 jincheng:2021IoT jincheng.sunjc$ tar -zxf apache-iotdb-0.11.2-bin.zip jincheng:2021IoT jincheng.sunjc$ ls apache-iotdb-0.11.2 apache-iotdb-0.11.2-bin.zip 启动验证 jincheng:apache-iotdb-0.11.2 jincheng.sunjc$ nohup sbin/start-server.sh -rpc_port 6668 >/dev/null 2>&1 & [2] 24160 实操体验 操作部分需要对对时序数据概念有一定的库随了解,大家可以先看操作直观体验,笔安也可以花2个小时进行一下科普《No.1-Apache IoTDB 随笔 - Time Series DBMS 综述》 查看和创建 存储组(STORAGE GROUP) STORAGE GROUP 是时序数据IoTDB 中组织时间序列数据的逻辑概念,在实际业务中你可以用STORAGE GROUP来逻辑区分不同的库随逻辑组织(部门/业务团队)、地理区间(厂区/省市)等等你想对时序数据进行大的笔安分组区分的逻辑手段。细节我们后面介绍,时序数据这里先直观体验如果查看和创建: SHOW STORAGE GROUPSET STORAGE GROUP TO root.happyIoTDB> SHOW STORAGE GROUP +-------------+ |storage group| +-------------+ +-------------+ Empty set. It costs 0.222s IoTDB> SET STORAGE GROUP TO root.happy Msg: The 库随statement is executed successfully. IoTDB> SHOW STORAGE GROUP +-------------+ |storage group| +-------------+ | root.happy| +-------------+ Total line number = 1 It costs 0.026s 查看和创建 时间序列(TIMESERIES) TIMESERIES 是IoTDB 中的核心概念了,是笔安实际时序数据的抽象,比如工业领域的时序数据某个传感器数据的采集,对应到IoTDB就是库随一个时间序列,我们使用CREATE TIMESERIES语法来创建新的笔安时间序列,就像数据库的DDL一样,创建时间序列时需要定义时间序列指标数据的高防服务器数据的类型和编码方式,同样,这里先直观体验如果查看和创建: CREATE TIMESERIESSHOW TIMESERIESIoTDB> CREATE TIMESERIES root.happy.device1.sensor1.temperature WITH DATATYPE=FLOAT, ENCODING=RLE Msg: The statement is executed successfully. IoTDB> SHOW TIMESERIES +--------------------------------------+-----+-------------+--------+--------+-----------+----+----------+ | timeseries|alias|storage group|dataType|encoding|compression|tags|attributes| +--------------------------------------+-----+-------------+--------+--------+-----------+----+----------+ |root.happy.device1.sensor1.temperature| null| root.happy| FLOAT| RLE| SNAPPY|null| null| +--------------------------------------+-----+-------------+--------+--------+-----------+----+----------+ Total line number = 1 It costs 0.019s 细心的你一定发现了,除了我们刚才说的 STORAGE GROUP,数据类型、编码方式、TIMESERIES还出现了 alias/tags/attributes这些陌生的字段,这些又是什么概念在IoTDB有什么作用呢?我们下一篇和大家进行介绍,如果在下一篇还没有出来之前,你已经迫不及待了怎么办?想必大家都知道,在Apache IoTDB社区还有一位大神 叫 乔嘉林,学习IoTDB,乔老师的文章不得不收藏哈,赶紧关注 Apache IoTDB 官方公众号,高质文章等你来... 插入和查询 TIMESERIES的插入和查询,就和传统数据库越来越接近了, IoTDB 中元数据的组织方式是树形结构,上面的 root.happy.device1.sensor1.temperature就是一个树的Path ,那么我们怎样插入时间序列的值和查询对应的时间序列呢?同样,源码库这里先直观体验如果查看和创建: INSERT INTO SELECTIoTDB> INSERT INTO root.happy.device1.sensor1(timestamp,temperature) values(5927, 25.72) Msg: The statement is executed successfully. IoTDB> SELECT * FROM root.happy.device1.sensor1 +-----------------------------+--------------------------------------+ | Time|root.happy.device1.sensor1.temperature| +-----------------------------+--------------------------------------+ |1970-01-01T08:00:05.927+08:00| 25.72| +-----------------------------+--------------------------------------+ Total line number = 1 It costs 0.091s 我们后续篇章介绍... 学习的路上总是好奇心驱动成长,不知道你在几分钟时间看完上面的内容后,是否有问题?我这里有一个问题,那就是:“如果我的传感器的值是 null 怎么办?IoTDB支持null吗? IoTDB> INSERT INTO root.happy.device1.sensor1(timestamp,temperature) values(5927, null) 上面的插入语句我将temperature的值设置为 null,得到来 mismatched input null expecting的错误提示。那么目前IoTDB如何处理null的呢? IoTDB> INSERT INTO root.happy.device1.sensor1(timestamp,temperature) values(7925, NaN) Msg: The statement is executed successfully. IoTDB> SELECT * FROM root.happy.device1.sensor1 +-----------------------------+--------------------------------------+ | Time|root.happy.device1.sensor1.temperature| +-----------------------------+--------------------------------------+ |1970-01-01T08:00:05.927+08:00| 52.72| |1970-01-01T08:00:07.925+08:00| 0.0| +-----------------------------+--------------------------------------+ 如上大家发现IoTDB用NaN来代表没有值,查询之后我们发现NaN应该代表来当前数据类型的默认值。如上:FLOAT 的默认值就是 0.0. 所以,这里的问题就是: “我们需要Apache IoTDB 对时间序列的值 支持 null 吗?” 你的实际业务中有没有场景不能用NaN默认值,而必须允许null的存在?期待你的反馈,Apache IoTDB 为你的业务而生,亿华云你的要求就是IoTDB社区的需求!!! 作者介绍 孙金城,51CTO社区编辑,Apache Flink PMC 成员,Apache Beam Committer,Apache IoTDB PMC 成员,ALC Beijing 成员,Apache ShenYu 导师,Apache 软件基金会成员。关注技术领域流计算和时序数据存储。