influxdb比较核心的内容大致分为两个部分:
1 TSM文件实现时序数据高效率写入与压缩,其提供的文件级别的B+树索引可以有效提高根据serieskey查找时间序列的性能
2 Influxdb还实现了内存索引****(Memory-Based Index)以及文件索引****(Disk-Based Index)。
Memory-Based Index
内存索引主要涉及这两个结构:
// tagkey -> seriesID
seriesByTagKeyValue: map<tagkey, map<tagValue, List< seriesID > > >
// seriesID -> seriesKey
seriesByID: map< seriesID, *series>
Disk-Based Index
内存索引存在天然缺陷:
1 受限于内存大小,无法支持大量的series key;
2 一旦influxdb进程挂掉,需要扫描所有psm文件来恢复索引信息;
因此设计了Disk-Based Index,将索引信息持久到磁盘中,使用时再进行加载。
influxdb中对倒排索引与时序数据的存储都使用了相同的存储机制——LSM,Disk-Based Index 的结构如下:
参考:
influxdb数据读取
influxdb倒排索引
influxdb数据写入