iotdb icon indicating copy to clipboard operation
iotdb copied to clipboard

This repository is ReadOnly now. please go to https://github.com/apache/incubator-iotdb

Results 100 iotdb issues
Sort by recently updated
recently updated
newest added

kvindex的查询语法确认: 原先的kvindex(f_index_pr实现的)的查询语法为: select kvindex(queryPath, patternPath, pattern starttime, pattern endtime, epsilon (,alpha, beta)) from queryPath WhereClause 之后和向东学长讨论的查询语法有: 1. select ... from query path where kvmatch(pattern path, ...) and ... 2. select...

创建timeseries s0时,首先会向MManager中添加s0 ![image](https://user-images.githubusercontent.com/23610645/39695531-7c9626ae-521d-11e8-8fd4-1426dbb98dc5.png) 然后会向对应的fileNode中添加s0 ![image](https://user-images.githubusercontent.com/23610645/39695550-907d0854-521d-11e8-9479-af756bc47014.png) 但是如果这个fileNode不存在的话会新创建一个fileNode ![image](https://user-images.githubusercontent.com/23610645/39695591-c067e322-521d-11e8-8214-0be4b26a7d06.png) 新建fileNode的时候将要构建fileSchema ![image](https://user-images.githubusercontent.com/23610645/39695639-de6b1204-521d-11e8-8ca9-9b889e09cc36.png) 而构建fileSchema的时候需要查询MManager ![image](https://user-images.githubusercontent.com/23610645/39695665-fc061b38-521d-11e8-83c2-f0a2b7640947.png) **注意,这个时候的MManager中已经有s0了,所以新构建的fileSchema中也会有s0 之后再向fileNode中添加s0时,实际上已经重复了** ![image](https://user-images.githubusercontent.com/23610645/39695816-6c93cec2-521e-11e8-8a32-228f263425ec.png) ![image](https://user-images.githubusercontent.com/23610645/39695823-750d5014-521e-11e8-909b-6c7b4c59a84b.png)

问题分支:master 复现方法: - 启动IoTDB server及client - 创建存储组 root.g0 - 创建时间序列 root.g0.d0.s0,类型编码任意 - 关闭IoTDB server及client - 重新启动IoTDB server及client - 删除时间序列 root.g0.d0.s0 重启前 ![image](https://user-images.githubusercontent.com/23610645/47062828-db90b580-d20a-11e8-977e-98e6fb21f33b.png) 重启后 ![image](https://user-images.githubusercontent.com/23610645/47062856-0aa72700-d20b-11e8-8eb2-a7c03ab77d3a.png)

We use the different code style, which leads to a lot of diffs in prs. Unifying the code style is better. We can reference to [google-java-format](https://github.com/google/google-java-format) and [checkstyle](https://github.com/checkstyle/checkstyle)

在某些场景下,例如磁盘写满导致某个文件处于部分写入的状态,文件格式被破坏,这时系统重启会失败。 因此需要加入一个系统自检工具(模块),来使得系统重启失败后能尽可能回复到可用状态。 基本需求: 对于系统启动所需的每一个文件(数据文件,元数据文件,写前日志文件等),检查其格式是否正确。向用户报告这些格式不正确的文件,由用户选择是否清除这些文件。 进阶需求: 检测到不正确的文件时,尝试对文件进行修复,恢复到其上一个可用状态。

我们现在使用的是Pull式查询引擎,即Iterator式的查询引擎。 许多论文中指出,这种查询引擎存在一些问题,最典型的是调用链过长导致指令局部性差,具体可以参考下图: ![18 09 12 1652_1](https://user-images.githubusercontent.com/23610645/45413811-9f6ab200-b6ac-11e8-9e2d-a32d8cf08d4e.png) 图中每一个圆代表一种数据访问器(Iterator),每个左边的圆是右边的圆的子类。 在Pull式(上)中,每次取数据(即调用Iterator的next())都要经过这样的一个调用链,这个过程会涉及较多的函数(代码)。通常来说,这些函数存在内存的不同位置,因此每次函数调用都会导致指令内存缺失,从而造成性能损失。另一个方面,调用栈的构建本身也是一个性能开销比较大的操作,在复杂代码中,指望编译器进行也是不现实的。 而在Push式(下)中,取数据的过程则有所不同,预取在其中有着很重要的地位。以上图为例,访问器1在被创建时会递归地创建访问器2作为其底层的访问器,而访问器2会递归创建访问器3,以此类推,直到创建最底层的访问器5(假定其直接访问文件)。访问器5在被创建时,先从文件中读出若干个数据点到自身的buffer中,在buffer满时,再把buffer中的每一个点发给访问器4,访问器同样先把数据存到自己的buffer中,等到buffer满了以后再向上发送。 实际取数的时候,如果访问器1的buffer没有耗尽,则直接从中取数,否则再经过上述预取过程即可。 在这种模式中,函数调用主要发生在一个访问器内部和两个访问器之间,不会形成由多个访问器组成的长调用链。这就使得指令cache发生缺失的可能降低,从而提高系统性能。另一个方面,由于数据存在buffer之中,而buffer往往是连续分配的,所以在连续取点的时候,也能获得更好的数据局部性。

如 "insert into root.vehicle.d0(timestamp,s1) values(1000,55555)" "UPDATE root.vehicle SET d0.s1 = 0 WHERE time > 90" select s1 from root.vehicle.d0 where s1 < 100; 将不能够得到timestamp = 1000的那条记录 ps 单点值更新可以通过插入实现,后插入的值会覆盖先插入的值

aggregate does not support avg function. ![image](https://user-images.githubusercontent.com/7240743/45305387-c0b48c80-b54c-11e8-97f1-d77f676da240.png)

当前版本下(0.7.0), 系统导入了1个storage group, 7G数据, 6万个左右时序(300个设备)。 然后执行了删除命令 `DELETE TIMESERIES root.ln.windfarm_hIzWi_001.*`, `DELETE TIMESERIES root.ln.windfarm_hIzWi_002.*`. 然后重新导入上述数据,又重新执行上述删除。 之后执行任何query都提示内部错误。 ![5361535805479_ pic](https://user-images.githubusercontent.com/1021782/44946204-5011bf80-ae2a-11e8-9746-be2296621d92.jpg) 系统重启后再做查询,仍然提示内部错误。

目前引入了一些对read,write,merge操作进行性能测试的类,但缺乏使用说明以及配置项,需要进行补充。