overiew
database -> retention policy -> shard group -> shard -> bolt.DB
measurement&series
measurement和series是database的表示层,分别表示为database中的metric和metric中具有相同tag的points序列。它们两个被用于对数据进行检索。
真正存储数据的是database中的RetentionPolicy(这个名字起的不太好),数据库中可以有很多RetentionPolicy。
1 | type database struct { |
retention Policy
其中的shardGroups包含一个shardgroup数组
1 | type RetentionPolicy struct { |
shard group
shardgroup中包含一个shard数组
1 | // ShardGroup represents a group of shards created for a single time range. |
shard
database中实际存储数据的是bolt.DB,在influxdb中被包装成shard。
1 | type Shard struct { |
shard中的store保存了bolt.db的指针,用来对数据进行读取写入操作
所以database通过
database -> retention policy -> shard group -> shard -> bolt.DB
接口来存储数据。
1 | replicaN range(1, len(nodes)) |