diff --git a/.travis.yml b/.travis.yml index 93ce19da3c2..9d590e122ee 100644 --- a/.travis.yml +++ b/.travis.yml @@ -175,7 +175,7 @@ matrix: # - mvn -B apache-rat:check # - mvn -B clean package -pl server,grafana,client,example,:kafka-example,:rocketmq-example -am integration-test - os: linux -# if: fork = false #only fork=true (i.e., the committer has permission to write the repo) + if: fork = false #only fork=true (i.e., the committer has permission to write the repo) name: sonar-analysis dist: xenial jdk: openjdk8 diff --git a/docs/Community-History&Vision.md b/docs/Community/Community-History&Vision.md similarity index 100% rename from docs/Community-History&Vision.md rename to docs/Community/Community-History&Vision.md diff --git a/docs/Community-Powered By.md b/docs/Community/Community-Powered By.md similarity index 100% rename from docs/Community-Powered By.md rename to docs/Community/Community-Powered By.md diff --git a/docs/Community-Project Committers.md b/docs/Community/Community-Project Committers.md similarity index 100% rename from docs/Community-Project Committers.md rename to docs/Community/Community-Project Committers.md diff --git a/docs/Development-Chinese.md b/docs/Development/Development-Chinese.md similarity index 100% rename from docs/Development-Chinese.md rename to docs/Development/Development-Chinese.md diff --git a/docs/Development-Contributing.md b/docs/Development/Development-Contributing.md similarity index 98% rename from docs/Development-Contributing.md rename to docs/Development/Development-Contributing.md index 650d2feef10..247a2e2a463 100644 --- a/docs/Development-Contributing.md +++ b/docs/Development/Development-Contributing.md @@ -95,6 +95,9 @@ Then, * Step 1: create a new folder named "7-RoadMap", and add document named `1-B.md` in folder "7-RoadMap"; * Step 2: modify `0-Content.md` file by adding "# Chapter 7: RoadMap" in the end, and adding `* 1-B.md` in the list of this new chapter. +If you need to insert **figures** into documents, you can firstly update the figures in [this issue](https://github.com/thulab/iotdb/issues/543) for storing pictures in IoTDB website or other MD files. +Drag a picture and then quote the figure's URL link. + ### Contributing Bug Reports If you encounter a problem, try to search the mailing list and JIRA to check whether other people have faced the same situation. If it is not reported before, please report an issue. diff --git a/docs/Development-Document.md b/docs/Development/Development-Document.md similarity index 90% rename from docs/Development-Document.md rename to docs/Development/Development-Document.md index 52269b46913..56677a0a40c 100644 --- a/docs/Development-Document.md +++ b/docs/Development/Development-Document.md @@ -45,4 +45,7 @@ Then, * Step 1: create a new folder named "7-RoadMap", and add document named `1-B.md` in folder "7-RoadMap"; * Step 2: modify `0-Content.md` file by adding "# Chapter 7: RoadMap" in the end, and adding `* 1-B.md` in the list of this new chapter. +If you need to insert **figures** into documents, you can firstly update the figures in [this issue](https://github.com/thulab/iotdb/issues/543) for storing pictures in IoTDB website or other MD files. +Drag a picture and then quote the figure's URL link. + > If you want to contribute more (for example, reviewing Changes, reporting bugs, or even being commiters), please refer to [this page](/#/Development/Contributing). \ No newline at end of file diff --git a/docs/Development-IDE.md b/docs/Development/Development-IDE.md similarity index 100% rename from docs/Development-IDE.md rename to docs/Development/Development-IDE.md diff --git a/docs/Development-VoteRelease.md b/docs/Development/Development-VoteRelease.md similarity index 100% rename from docs/Development-VoteRelease.md rename to docs/Development/Development-VoteRelease.md diff --git a/docs/Documentation-CHN/SystemDesign/0-Architecture/1-Architecture.md b/docs/Documentation-CHN/SystemDesign/0-Architecture/1-Architecture.md new file mode 100644 index 00000000000..f026c710aa7 --- /dev/null +++ b/docs/Documentation-CHN/SystemDesign/0-Architecture/1-Architecture.md @@ -0,0 +1,55 @@ + + +# 应用概览 + + + +物联网时序数据库 Apache IoTDB 的架构图如上所示,覆盖了对时序数据的采集、存储、查询、分析以及可视化等全生命周期的数据管理功能,其中灰色部分为 IoTDB 组件。 + +## IoTDB 架构介绍 + +IoTDB 采用客户端-服务器架构,如下图所示。 + + + +其中服务器端主要包括查询引擎,用来处理用户的所有请求,并分发到对应的管理组件,包括数据写入层、数据查询、元数据管理、权限管理等模块。 + +* [数据文件](../1-TsFile/1-TsFile.md) +* [查询引擎](../2-QueryEngine/1-QueryEngine.md) +* [元数据管理](../3-SchemaManager/1-MManager.md) +* [存储引擎](../4-StorageEngine/1-StorageEngine.md) +* [数据查询](../5-DataQuery/1-DataQuery.md) +* [权限管理](../6-Administration/1-Administration.md) + +## 连接器 + +IoTDB 与大数据系统进行了对接。 + +* [Hadoop-TsFile](../7-Connector/1-Hadoop-TsFile.md) +* [Hive-TsFile](../7-Connector/2-Hive-TsFile.md) +* [Spark-TsFile](../7-Connector/3-Spark-TsFile.md) +* [Spark-IoTDB](../7-Connector/4-Spark-IoTDB.md) +* [Grafana](../7-Connector/5-Grafana.md) + +## 工具 + +* [同步工具](../8-Tools/1-Sync.md) \ No newline at end of file diff --git a/docs/Documentation-CHN/SystemDesign/1-TsFile/1-TsFile.md b/docs/Documentation-CHN/SystemDesign/1-TsFile/1-TsFile.md new file mode 100644 index 00000000000..241d202da7f --- /dev/null +++ b/docs/Documentation-CHN/SystemDesign/1-TsFile/1-TsFile.md @@ -0,0 +1,31 @@ + + +# 数据文件 + +TsFile 是 IoTDB 的底层数据文件,专门为时间序列数据设计的列式文件格式。 + + +## 相关文档 + +* [文件格式](2-Format.md) +* [写流程](3-Write.md) +* [读流程](4-Read.md) diff --git a/docs/Documentation-CHN/UserGuide/8-System Design (Developer)/1-Hierarchy.md b/docs/Documentation-CHN/SystemDesign/1-TsFile/2-Format.md similarity index 99% rename from docs/Documentation-CHN/UserGuide/8-System Design (Developer)/1-Hierarchy.md rename to docs/Documentation-CHN/SystemDesign/1-TsFile/2-Format.md index 70acc390304..3db4efbfac1 100644 --- a/docs/Documentation-CHN/UserGuide/8-System Design (Developer)/1-Hierarchy.md +++ b/docs/Documentation-CHN/SystemDesign/1-TsFile/2-Format.md @@ -7,9 +7,9 @@ to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - + http://www.apache.org/licenses/LICENSE-2.0 - + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -19,7 +19,8 @@ --> -# 第8章: 系统设计 +# TsFile 文件格式 + ## 1. TsFile 设计 diff --git a/docs/Documentation-CHN/SystemDesign/1-TsFile/3-Write.md b/docs/Documentation-CHN/SystemDesign/1-TsFile/3-Write.md new file mode 100644 index 00000000000..fe2fd7f65f3 --- /dev/null +++ b/docs/Documentation-CHN/SystemDesign/1-TsFile/3-Write.md @@ -0,0 +1,65 @@ + + +# TsFile 写流程 + +* org.apache.iotdb.tsfile.write.* + +TsFile 的写入流程如下图所示: + + + +其中,每个设备对应一个 ChunkGroupWriter,每个传感器对应一个 ChunkWriter。 + +文件的写入主要分为三种操作,在图上用 1、2、3 标注 + +* 1、写内存换冲区 +* 2、持久化 ChunkGroup +* 3、关闭文件 + +## 1、写内存缓冲区 + +TsFile 文件层的写入接口有两种 + +* TsFileWriter.write(TSRecord record) + + 写入一个设备一个时间戳多个测点。 + +* TsFileWriter.write(RowBatch rowBatch) + + 写入一个设备多个时间戳多个测点。 + +当调用 write 接口时,这个设备的数据会交给对应的 ChunkGroupWriter,其中的每个测点会交给对应的 ChunkWriter 进行写入。ChunkWriter 完成编码和打包(生成 Page)。 + + +## 2、持久化 ChunkGroup + +* TsFileWriter.flushAllChunkGroups() + +当内存中的数据达到一定阈值,会触发持久化操作。每次持久化会把当前内存中所有设备的数据全部持久化到磁盘的 TsFile 文件中。每个设备对应一个 ChunkGroup,每个测点对应一个 Chunk。 + +持久化完成后会在内存中缓存对应的元数据信息,以供查询和生成文件尾部 metadata。 + +## 3、关闭文件 + +* TsFileWriter.close() + +根据内存中缓存的元数据,生成 TsFileMetadata 追加到文件尾部,最后关闭文件。 diff --git a/docs/Documentation-CHN/SystemDesign/1-TsFile/4-Read.md b/docs/Documentation-CHN/SystemDesign/1-TsFile/4-Read.md new file mode 100644 index 00000000000..0233344b91d --- /dev/null +++ b/docs/Documentation-CHN/SystemDesign/1-TsFile/4-Read.md @@ -0,0 +1,27 @@ + + +# TsFile 读流程 + +* org.apache.iotdb.tsfile.read.* + + + diff --git a/docs/Documentation-CHN/SystemDesign/2-QueryEngine/1-QueryEngine.md b/docs/Documentation-CHN/SystemDesign/2-QueryEngine/1-QueryEngine.md new file mode 100644 index 00000000000..b156870bf8f --- /dev/null +++ b/docs/Documentation-CHN/SystemDesign/2-QueryEngine/1-QueryEngine.md @@ -0,0 +1,64 @@ + + +# 查询引擎 + + + +## 设计思想 + +查询引擎负责所有用户命令的解析、生成计划、交给对应的执行器、返回结果集。 + +## 相关类 + +* org.apache.iotdb.db.service.TSServiceImpl + + IoTDB 服务器端 RPC 实现,与客户端进行直接交互。 + +* org.apache.iotdb.db.qp.Planner + + 解析 SQL,生成逻辑计划,逻辑优化,生成物理计划。 + +* org.apache.iotdb.db.qp.executor.PlanExecutor + + 分发物理计划给对应的执行器,主要包括以下四个具体的执行器。 + + * MManager: 元数据操作 + * StorageEngine: 数据写入 + * QueryRouter: 数据查询 + * LocalFileAuthorizer: 权限操作 + +* org.apache.iotdb.db.query.dataset.* + + 分批构造结果集返回给客户端,包含部分查询逻辑。 + +## 查询流程 + +* SQL 解析 +* 生成逻辑计划 +* 生成物理计划 +* 构造结果集生成器 +* 分批返回结果集 + +## 相关文档 + +* [查询计划生成器](2-Planner.md) +* [计划执行器](3-PlanExecutor.md) \ No newline at end of file diff --git a/docs/Documentation-CHN/SystemDesign/2-QueryEngine/2-Planner.md b/docs/Documentation-CHN/SystemDesign/2-QueryEngine/2-Planner.md new file mode 100644 index 00000000000..82640d09f3b --- /dev/null +++ b/docs/Documentation-CHN/SystemDesign/2-QueryEngine/2-Planner.md @@ -0,0 +1,63 @@ + + +# 执行计划生成器 Planner + +* org.apache.iotdb.db.qp.Planner + +将 SQL 解析出的语法树转化成逻辑计划,逻辑优化,物理计划。 + +## SQL 解析 + +SQL 解析采用 Antlr4 + +* server/src/main/antlr4/org/apache/iotdb/db/qp/strategy/SqlBase.g4 + +mvn clean compile 之后生成代码位置:server/target/generated-sources/antlr4 + +## 逻辑计划生成器 + +* org.apache.iotdb.db.qp.strategy.LogicalGenerator + +## 逻辑计划优化器 + +目前有三种逻辑计划优化器 + +* org.apache.iotdb.db.qp.strategy.optimizer.ConcatPathOptimizer + + 路径优化器,将 SQL 中的查询路径进行拼接,与 MManager 进行交互去掉通配符,进行路径检查。 + +* org.apache.iotdb.db.qp.strategy.optimizer.RemoveNotOptimizer + + 谓词去非优化器,将谓词逻辑中的非操作符去掉。 + +* org.apache.iotdb.db.qp.strategy.optimizer.DnfFilterOptimizer + + 将谓词转化为析取范式。 + +* org.apache.iotdb.db.qp.strategy.optimizer.MergeSingleFilterOptimizer + + 将相同路径的谓词逻辑合并。 + +## 物理计划生成器 + +* org.apache.iotdb.db.qp.strategy.PhysicalGenerator + diff --git a/docs/Documentation-CHN/SystemDesign/2-QueryEngine/3-PlanExecutor.md b/docs/Documentation-CHN/SystemDesign/2-QueryEngine/3-PlanExecutor.md new file mode 100644 index 00000000000..529ef451782 --- /dev/null +++ b/docs/Documentation-CHN/SystemDesign/2-QueryEngine/3-PlanExecutor.md @@ -0,0 +1,26 @@ + + +# 计划执行器 + +* org.apache.iotdb.db.qp.executor.PlanExecutor + +执行物理计划。 \ No newline at end of file diff --git a/docs/Documentation-CHN/SystemDesign/3-SchemaManager/1-SchemaManager.md b/docs/Documentation-CHN/SystemDesign/3-SchemaManager/1-SchemaManager.md new file mode 100644 index 00000000000..08e9971fe96 --- /dev/null +++ b/docs/Documentation-CHN/SystemDesign/3-SchemaManager/1-SchemaManager.md @@ -0,0 +1,26 @@ + + +# 元数据管理 + + + +IoTDB 的元数据管理采用目录树的形式,倒数第二层为设备层,最后一层为传感器层。 \ No newline at end of file diff --git a/docs/Documentation-CHN/SystemDesign/4-StorageEngine/1-StorageEngine.md b/docs/Documentation-CHN/SystemDesign/4-StorageEngine/1-StorageEngine.md new file mode 100644 index 00000000000..1d073b4b442 --- /dev/null +++ b/docs/Documentation-CHN/SystemDesign/4-StorageEngine/1-StorageEngine.md @@ -0,0 +1,92 @@ + + +# 存储引擎 + + + +## 设计思想 + +存储引擎基于 LSM 设计。数据首先写入内存缓冲区 memtable 中,再刷到磁盘。内存中为每个设备维护当前持久化的(包括已经落盘的和正在持久化的)最大时间戳,根据这个时间戳将数据区分为顺序数据和乱序数据,不同种类的数据通过不同的 memtable 和 TsFile 管理。 + +每个数据文件 TsFile 在内存中对应一个文件索引信息 TsFileResource,供查询使用。 + +此外,存储引擎还包括异步持久化和文件合并机制。 + +## 写入流程 + +### 相关代码 + +* org.apache.iotdb.db.engine.StorageEngine + + 负责一个 IoTDB 实例的写入和访问,管理所有的 StorageGroupProsessor。 + +* org.apache.iotdb.db.engine.storagegroup.StorageGroupProcessor + + 负责一个存储组一个时间分区内的数据写入和访问。管理所有分区的TsFileProcessor。 + +* org.apache.iotdb.db.engine.storagegroup.TsFileProcessor + + 负责一个 TsFile 文件的数据写入和访问。 + + +### 单行数据(一个设备一个时间戳多个值)写入 + +* 对应的接口 + * JDBC 的 execute 和 executeBatch 接口 + * Session 的 insert 和 insertInBatch + +* 总入口: public void insert(InsertPlan insertPlan) + * 找到对应的 StorageGroupProsessor + * 根据写入数据的时间以及当前设备落盘的最后时间戳,找到对应的 TsFileProcessor + * 写入 TsFileProcessor 对应的 memtable 中 + * 记录写前日志 + * 根据 memtable 大小,来判断是否触发异步持久化 memtable 操作 + * 根据当前磁盘 TsFile 的大小,判断是否触发文件关闭操作 + +### 批量数据(一个设备多个时间戳多个值)写入 + +* 对应的接口 + * Session 的 insertBatch + +* 总入口: public Integer[] insertBatch(BatchInsertPlan batchInsertPlan) + * 找到对应的 StorageGroupProsessor + * 根据这批数据的时间以及当前设备落盘的最后时间戳,将这批数据分成小批,分别对应到一个 TsFileProcessor 中 + * 分别将每小批写入 TsFileProcessor 对应的 memtable 中 + * 记录写前日志 + * 根据 memtable 大小,来判断是否触发异步持久化 memtable 操作 + * 根据当前磁盘 TsFile 的大小,判断是否触发文件关闭操作 + + +## 数据访问 + +* 总入口(StorageEngine): public QueryDataSource query(SingleSeriesExpression seriesExpression, QueryContext context, + QueryFileManager filePathsManager) + + * 找到所有包含这个时间序列的顺序和乱序的 TsFileResource 进行返回,供查询引擎使用。 + +## 相关文档 + +* [写前日志 (WAL)](2-WAL.md) + +* [memtable 持久化](3-FlushManager.md) + +* [文件合并机制](4-MergeManager.md) \ No newline at end of file diff --git a/docs/Documentation-CHN/SystemDesign/4-StorageEngine/2-WAL.md b/docs/Documentation-CHN/SystemDesign/4-StorageEngine/2-WAL.md new file mode 100644 index 00000000000..08b54c9cfb9 --- /dev/null +++ b/docs/Documentation-CHN/SystemDesign/4-StorageEngine/2-WAL.md @@ -0,0 +1,26 @@ + + +# 写前日志 + +## 相关代码 + +* org.apache.iotdb.db.writelog.* diff --git a/docs/Documentation-CHN/SystemDesign/4-StorageEngine/3-FlushManager.md b/docs/Documentation-CHN/SystemDesign/4-StorageEngine/3-FlushManager.md new file mode 100644 index 00000000000..185074284ad --- /dev/null +++ b/docs/Documentation-CHN/SystemDesign/4-StorageEngine/3-FlushManager.md @@ -0,0 +1,84 @@ + + +# Flush Memtable + +## 设计思想 + +内存缓冲区 memtable 达到一定阈值后,会交给 FlushManager 进行异步的持久化,不阻塞正常写入。持久化的过程采用流水线的方式。 + +## 相关代码 + +* org.apache.iotdb.db.engine.flush.FlushManager + + Memtable 的 Flush 任务管理器。 + +* org.apache.iotdb.db.engine.flush.MemtableFlushTask + + 负责持久化一个 Memtable。 + +## FlushManager: 持久化管理器 + +FlushManager 可以接受 memtable 的持久化任务,提交者有两个,第一个是 TsFileProcessor,第二个是持久化子线程 FlushThread。 + +每个 TsFileProcessor 同一时刻只会有一个 flush 任务执行,一个 TsFileProcessor 可能对应多个需要持久化的 memtable + +## MemTableFlushTask: 持久化任务 + + + +背景:每个 memtable 可包含多个 device,每个 device 可包含多个 measurement。 + +### 三个线程 + +一个 memtable 的持久化的过程有三个线程,只有当所有任务都完成后,主线程工作才结束。 + +* MemTableFlushTask 所在线程 + + 持久化主线程兼排序线程,负责给每个 measurement 对应的 chunk 排序。 + +* encodingTask 线程 + + 编码线程,负责给每个 Chunk 进行编码,编码成字节数组。 + +* ioTask 线程 + + IO线程,负责将编码好的 Chunk 持久化到磁盘的 TsFile 文件上。 + +### 两个任务队列 + +三个线程之间通过两个任务队列交互 + +* encodingTaskQueue: 排序线程->编码线程,包括三种任务 + + * StartFlushGroupIOTask:开始持久化一个 device (ChunkGroup), encoding 不处理这个命令,直接发给 IO 线程。 + + * Pair\:编码一个 Chunk + + * EndChunkGroupIoTask:结束一个 device (ChunkGroup) 的持久化,encoding 不处理这个命令,直接发给 IO 线程。 + +* ioTaskQueue: 编码线程->IO线程,包括三种任务 + + * StartFlushGroupIOTask:开始持久化一个 device (ChunkGroup)。 + + * IChunkWriter:持久化一个 Chunk 到磁盘上 + + * EndChunkGroupIoTask:结束一个 device (ChunkGroup) 的持久化。 \ No newline at end of file diff --git a/docs/Documentation-CHN/SystemDesign/4-StorageEngine/4-MergeManager.md b/docs/Documentation-CHN/SystemDesign/4-StorageEngine/4-MergeManager.md new file mode 100644 index 00000000000..7e68c4f5870 --- /dev/null +++ b/docs/Documentation-CHN/SystemDesign/4-StorageEngine/4-MergeManager.md @@ -0,0 +1,26 @@ + + +# 文件合并机制 + +## 相关代码 + +* org.apache.iotdb.db.engine.merge.* \ No newline at end of file diff --git a/docs/Documentation-CHN/SystemDesign/5-DataQuery/1-DataQuery.md b/docs/Documentation-CHN/SystemDesign/5-DataQuery/1-DataQuery.md new file mode 100644 index 00000000000..5b0bf78dba0 --- /dev/null +++ b/docs/Documentation-CHN/SystemDesign/5-DataQuery/1-DataQuery.md @@ -0,0 +1,67 @@ + + +# 数据查询 + +* 查询种类 + * 原始数据查询 + * 聚合查询 + * 降采样查询 + * 单点补空值查询 + * 最新数据查询等 + +## 查询计划 + +主要包括两种查询框架: + +* 不带值过滤条件的(如,select f1, f2, f3 from root.d1) + + 可以按照多路归并的方式进行查询,分别查询三列的结果,最后按照时间进行对齐。 + +* 带值过滤条件的(如,select f1, f2, f3 from root.d1 where f1 = 1 and f2 = 2) + + 先根据过滤条件生成结果集的时间戳,再根据时间戳查询其他列的值。 + +## 查询组件 + +为了实现任意过滤条件下的多种查询,有以下查询组件 + +* SeriesReaderWithoutValueFilter + + 一个时间序列的 reader,不带任何值过滤条件,但是可能带时间过滤条件。 + +* SeriesReaderWithValueFilter + + 一个时间序列的 reader,带值过滤条件(也可能包含时间过滤条件)。 + +* SeriesReaderByTimestamp + + 一个时间序列的 reader,每给一个时间戳,返回此时间戳对应的值,若没有则返回空。 + +* TimeGenerator + * 功能:根据过滤条件构造表达式的树形结构,生成结果集的时间戳,如 f1 = 1 and f2 = 2,构造一棵树 AND(leaf(f1=1), leaf(f2=2))。 + * 叶子节点:对应一个 SeriesReaderWithValueFilter,返回满足条件的结果的时间戳。 + * 中间节点:按照此节点的谓词逻辑对时间戳做计算。 + * 根节点:返回最终结果集的时间戳。 + +## AbstractSeriesReader + +单个时间序列的基础 Reader 类。输入为一个 QueryDataSource,包括顺序和乱序文件列表。 \ No newline at end of file diff --git a/docs/Documentation-CHN/UserGuide/8-System Design (Developer)/2-Files.md b/docs/Documentation-CHN/UserGuide/8-Architecture/1-Files.md similarity index 100% rename from docs/Documentation-CHN/UserGuide/8-System Design (Developer)/2-Files.md rename to docs/Documentation-CHN/UserGuide/8-Architecture/1-Files.md diff --git a/docs/Documentation-CHN/UserGuide/8-System Design (Developer)/3-Writing Data on HDFS.md b/docs/Documentation-CHN/UserGuide/8-Architecture/2-Writing Data on HDFS.md similarity index 100% rename from docs/Documentation-CHN/UserGuide/8-System Design (Developer)/3-Writing Data on HDFS.md rename to docs/Documentation-CHN/UserGuide/8-Architecture/2-Writing Data on HDFS.md diff --git a/docs/Documentation-CHN/UserGuide/8-System Design (Developer)/4-Shared Nothing Cluster.md b/docs/Documentation-CHN/UserGuide/8-Architecture/3-Shared Nothing Cluster.md similarity index 100% rename from docs/Documentation-CHN/UserGuide/8-System Design (Developer)/4-Shared Nothing Cluster.md rename to docs/Documentation-CHN/UserGuide/8-Architecture/3-Shared Nothing Cluster.md diff --git a/docs/Documentation/SystemDesign/0-Content.md b/docs/Documentation/SystemDesign/0-Content.md new file mode 100644 index 00000000000..72b8385f819 --- /dev/null +++ b/docs/Documentation/SystemDesign/0-Content.md @@ -0,0 +1,42 @@ + + + +# Chapter 0: Architecture +* 1-Architecture +# Chapter 1: TsFile +* 1-TsFile +* 2-Format +* 3-Write +* 4-Read +# Chapter 2: QueryEngine +* 1-QueryEngine +* 2-Planner +* 3-PlanExecutor +# Chapter 3: SchemaManager +* 1-SchemaManager +# Chapter 4: StorageEngine +* 1-StorageEngine +* 2-WAL +* 3-FlushManager +* 4-MergeManager +# Chapter 5: DataQuery +* 1-DataQuery \ No newline at end of file diff --git a/docs/Documentation/SystemDesign/1-TsFile/1-TsFile.md b/docs/Documentation/SystemDesign/1-TsFile/1-TsFile.md new file mode 100644 index 00000000000..b8ea7e41d2f --- /dev/null +++ b/docs/Documentation/SystemDesign/1-TsFile/1-TsFile.md @@ -0,0 +1,30 @@ + + +# TsFile + +TsFile is the data file of IoTDB. + +## Related + +* [File Format](2-Format.md) +* [Write Process](3-Write.md) +* [Read Process](4-Read.md) diff --git a/docs/Documentation/UserGuide/8-System Design (Developer)/1-Hierarchy.md b/docs/Documentation/SystemDesign/1-TsFile/2-Format.md similarity index 99% rename from docs/Documentation/UserGuide/8-System Design (Developer)/1-Hierarchy.md rename to docs/Documentation/SystemDesign/1-TsFile/2-Format.md index 02aaec3456e..5e37bc5c743 100644 --- a/docs/Documentation/UserGuide/8-System Design (Developer)/1-Hierarchy.md +++ b/docs/Documentation/SystemDesign/1-TsFile/2-Format.md @@ -7,9 +7,9 @@ to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - + http://www.apache.org/licenses/LICENSE-2.0 - + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -19,7 +19,7 @@ --> -# Chapter 7: System Design +# TsFile Format ## 1. TsFile Design diff --git a/docs/Documentation/SystemDesign/1-TsFile/3-Write.md b/docs/Documentation/SystemDesign/1-TsFile/3-Write.md new file mode 100644 index 00000000000..ca90fe8857b --- /dev/null +++ b/docs/Documentation/SystemDesign/1-TsFile/3-Write.md @@ -0,0 +1,22 @@ + + +# TsFile Write Process diff --git a/docs/Documentation/SystemDesign/1-TsFile/4-Read.md b/docs/Documentation/SystemDesign/1-TsFile/4-Read.md new file mode 100644 index 00000000000..d6127f0e9a3 --- /dev/null +++ b/docs/Documentation/SystemDesign/1-TsFile/4-Read.md @@ -0,0 +1,22 @@ + + +# TsFile Read Process diff --git a/docs/Documentation/Developers/release.adoc b/docs/Documentation/SystemDesign/release.adoc similarity index 100% rename from docs/Documentation/Developers/release.adoc rename to docs/Documentation/SystemDesign/release.adoc diff --git a/docs/Documentation/UserGuide/0-Content.md b/docs/Documentation/UserGuide/0-Content.md index dcef5ac286b..03f5edb5983 100644 --- a/docs/Documentation/UserGuide/0-Content.md +++ b/docs/Documentation/UserGuide/0-Content.md @@ -65,8 +65,7 @@ * 3-Spark TsFile * 4-Spark IoTDB * 5-Hive TsFile -# Chapter 8: System Design (Developer) -* 1-Hierarchy -* 2-Files -* 3-Writing Data on HDFS -* 4-Shared Nothing Cluster +# Chapter 8: Architecture +* 1-Files +* 2-Writing Data on HDFS +* 3-Shared Nothing Cluster diff --git a/docs/Documentation/UserGuide/8-System Design (Developer)/2-Files.md b/docs/Documentation/UserGuide/8-Architecture/1-Files.md similarity index 100% rename from docs/Documentation/UserGuide/8-System Design (Developer)/2-Files.md rename to docs/Documentation/UserGuide/8-Architecture/1-Files.md diff --git a/docs/Documentation/UserGuide/8-System Design (Developer)/3-Writing Data on HDFS.md b/docs/Documentation/UserGuide/8-Architecture/2-Writing Data on HDFS.md similarity index 100% rename from docs/Documentation/UserGuide/8-System Design (Developer)/3-Writing Data on HDFS.md rename to docs/Documentation/UserGuide/8-Architecture/2-Writing Data on HDFS.md diff --git a/docs/Documentation/UserGuide/8-System Design (Developer)/4-Shared Nothing Cluster.md b/docs/Documentation/UserGuide/8-Architecture/3-Shared Nothing Cluster.md similarity index 100% rename from docs/Documentation/UserGuide/8-System Design (Developer)/4-Shared Nothing Cluster.md rename to docs/Documentation/UserGuide/8-Architecture/3-Shared Nothing Cluster.md diff --git a/pom.xml b/pom.xml index 6d58e964521..42bb9d73a5a 100644 --- a/pom.xml +++ b/pom.xml @@ -507,6 +507,10 @@ licenses/* .github/** + + **/.eps + **/.png + **/.jpg local-snapshots-dir/**