存储引擎基于 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 文件的数据写入和访问。
详见: