5.3. 协同存储
5.3.1. 基本原理
1.索引文件
- tip 词典索引(前缀和后缀指针,该文件需内存加载)
- doc 倒排表、词频,页码
- fdt 行存,文档值
- fdx 行存索引,本身也较小可以一次加进内存,访问频率少
- dvd 列存编号:张三->1
- dvm 为列存编号对应值:1->年龄
- pos 分词位置,分词类型使用保证查询顺序
- tim 后缀词块,倒排表指针,需要多次访问。
2. 技术逻辑
依赖Hadoop中HDFS的异构机制,将HDFS中访问磁盘属性标识为SSD,创建“/data/ssdindex”目录作为索引异构的SSD磁盘目录,并设置One_SSD策略;LSQL结合HDFS将索引结构差异化存储,比如需要多次访问的tim、tip文件可以存储在HDFS的“/data/ssdindex”目录下,其他文件可以存储在HDFS的“/data/index”目录下,对于LSQL来说“/data/ssdindex”和“/data/index”目录是一个整体;如果不设置就默认使用“/data/index”目录。如下图所示:
协同方案1:
- SSD磁盘只存储tim、tip相关的数据,没有其副本,副本在其他介质的磁盘上。
协同方案2(近三天协同存储):
SSD磁盘只存储【tim、tip】和近3天的【fdx、tip、doc】相关的数据,没有其副本,副本在其他介质的磁盘上。
超过3天的【fdx、tip、doc】相关的数据会设置“/data/ssdindex2”路径中的子目录过期的为Hot,比如:/data/ssdindex2/20180701过期了,需要设置Hot存储策略,然后调用HDFS的mover程序将原来在SSD上的数据块转移到非SSD的磁盘介质上。
非协同存储方案:
简言之,就是从硬件设备上进行优化存储和性能,针对冷数据,采用容量大的、读写性能不高的介质存储,比如普通的磁盘;针对热数据,实时进行查询的,经常用到的就用SSD进行存储。