本文环境MocOS11.1IoTDB0.11.2JDK1.8.0_211二进制安装二进制安装是最简单的安装方式,三部曲,下载解压,开始验证,实践经验:下载解压jincheng:2021IoTjincheng.sunjc$wgethttps://archive.apache.org/dist/iotdb/0.11.2/apache-iotdb-0.11.2-bin.zipjincheng:2021IoTjincheng.sunjc$tar-zxfapache-iotdb-0.11.2-bin.zipjincheng:2021IoTjincheng.sunjc$lsapache-iotdb-0.11.2apache-iotdb-0.11.2-bin.zipjincheng:2021IoTjincheng.sunjc$开始验证jincheng:apache-iotdb-0.11.2jincheng.sunjc$nohupsbin/start-server.sh-rpc_port6668>/dev/null2>&1&[2]24160jincheng:apache-iotdb-0.11.2jincheng.sunjc$sbin/start-cli.sh-h127.0.0.1-p6668-uroot-pwroot实践经验操作部分需要对时序数据的概念有一定的了解。可以先看看操作的直观感受,也可以花2小时科普《No.1-Apache IoTDB 随笔 - Time Series DBMS 综述》查看和创建存储组(S??TORAGEGROUP)STORAGEGROUP是IoTDB中组织时间序列数据的逻辑概念。在实际业务中,可以通过STORAGEGROUP对不同的逻辑组织(部门/业务团队)、地理区间(工厂/省)等进行逻辑区分,等到你想要一种对时序数据进行分组区分的逻辑手段。后面会详细介绍,这里有一个直观的查看和创建的体验:SHOWSTORAGEGROUPSETSTORAGEGROUPTOroot.happyIoTDB>SHOWSTORAGEGROUP+------------+|storagegroup|+------------++------------+Emptyset.Itcosts0.222sIoTDB>SETSTORAGEGROUPTOroot.happyMsg:语句执行成功.IoTDB>显示存储组+------------+|存储组|+------------+|root.happy|+-------------+总行数=1花费0.026sIoTDB>查看和创建时间序列(TIMESERIES)TIMESERIES是IoTDB中的核心概念,是对实际时间序列数据,比如工业领域某个传感器数据的采集,对应的IoTDB就是一个时间序列。我们使用CREATETIMESERIES语法来创建一个新的时间序列,就像数据库的DDL一样。在创建时间序列时,我们需要定义时间序列索引数据的数据类型和编码方式。同样,这里有一个直观的体验如果查看和创建:CREATETIMESERIESSHOWTIMESERIESIoTDB>CREATETIMESERIESroot.happy.device1.sensor1.temperatureWITHDATATYPE=FLOAT,ENCODING=RLEMsg:语句执行成功.IoTDB>SHOWTIMESERIES+------------------------------------+-----+------------+--------+--------+----------+----+---------+|时间序列|别名|存储组|数据类型|编码|压缩|标签|属性|+--------------------------------------+-----+------------+--------+--------+----------+----+----------+|root.happy.device1.sensor1.temperature|空|根快乐|浮动|RLE|活泼|空|空|+-------------------------------------+-----+-------------+--------+--------+----------+----+---------+Totallinenumber=1Itcosts0.019sIoTDB>细心的你一定发现了,除了我们刚刚提到的STORAGEGROUP之外,还有alias/tags/attributes等奇怪的字段在数据类型、编码方法和TIMESERIES。这些是什么?概念在IoTDB中的作用是什么?我们将在下一篇文章中为您介绍。如果你等不及下一篇文章出来怎么办?想必大家都知道,在ApacheIoTDB社区中,还有一位大师叫乔加林。学习IoTDB,还得收藏乔老师的文章。快点关注ApacheIoTDB官方公众号,优质文章等你来...插入查询TIMESERIES插入查询越来越接近传统数据库。IoTDB中元数据的组织是树状结构。上面的root.happy.device1.sensor1.temperature是一个treePath,那么我们怎么插入timeseries的值和query对应的timeseries呢?同样,这里有一个直观的查看和创建体验:INSERTINTOSELECTIOTDB>INSERTINTOroot.happy.device1.sensor1(timestamp,temperature)values(5927,25.72)Msg:Thestatementisexecutedsuccessfully.IoTDB>SELECT*FROMroot.happy.device1.sensor1+------------------------+------------------------------------+|时间|root.happy.device1.sensor1.temperature|+----------------------------+------------------------------------+|1970-01-01T08:00:05.927+08:00|25.72|+----------------------------+------------------------------------+总行数=1花费0.091sIoTDB>源码和Docker安装我们后续章节介绍...有疑问有期待为了明天的学习,好奇心永远是成长的动力。不知道大家几分钟看完上面的内容后,有什么问题吗?我在这里有一个问题,即:“如果我的传感器的值为null怎么办?IoTDB是否支持null?IoTDB>INSERTINTOroot.happy.device1.sensor1(timestamp,temperature)values(5927,null)Msg:401:line1:75mismatchedinput'null'expecting{NOW,TRUE,FALSE,'-','.','NaN',INT,EXPONENT,DATETIME,DOUBLE_QUOTE_STRING_LITERAL,SINGLE_QUOTE_STRING_LITERAL}在上面的插入语句中,我设置了值温度的设置为null,得到mismatchedinput'null'expecting的错误信息那么IoTDB目前是如何处理null的呢?IoTDB>INSERTINTOroot.happy.device1.sensor1(timestamp,temperature)values(7925,NaN)Msg:语句执行成功。IoTDB>SELECT*FROMroot.happy.device1.sensor1+--------------------------+------------------------------------+|时间|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|+----------------------------+----------------------------------+总行数=2上面说到大家发现IoTDB用NaN表示没有值。经过查询,发现NaN应该代表当前数据类型的默认值。如上:FLOAT的默认值为0.0。因此,这里的问题是:“我们是否需要ApacheIoTDB来支持时间序列值的空值?”在你的实际业务中有没有不能使用默认值NaN,而必须允许null的场景?存在?期待您的反馈,ApacheIoTDB为您的业务而生,您的需求就是IoTDB社区的需求!!!作者介绍孙金城,51CTO社区编辑,ApacheFlinkPMC成员,ApacheBeamCommitter,ApacheIoTDBPMC成员,ALC北京成员,Apache神鱼导师,Apache软件基金会成员。专注于技术领域的流计算和时序数据存储。
