Druid 存储格式

Druid 的数据表是由一组分布在集群中不同的historical节点上和实时节点上的segment组成,一个segment包含了一定时间段内的数据,所有的读写操作都发生在segment上,它是Druid操作的最小单元。Real-time节点在生成segment时,segment的名称由数据源(表)、起始时间、结束时间、版本号四部分组成,作为segment的唯一标识。版本号越大,数据越新(疑问:版本号是怎样改变的?)。在查询时,会加载相应时间段内的最新版本的segment。

Segment采用的是类LSM树结构的列式存储,类LSM树结构和LSM树结构不同的是省去了WAL(预写日志)部分(疑问:不会有数据丢失吗?),通常会被上传到HDFS或S3上做深存储。相比行式存储,列式存储可以更加高效的使用CPU,因为加载时,按需取数据,只加载需要的列即可,不必把行中部分不相关的数据都加载进来;另外,列出存储也可以针对不同列字段类型采用不同的压缩算法,更加节省内存和磁盘空间。

你可能感兴趣的:(druid)