面试题答案
一键面试行键设计建议
- 倒序时间戳作为行键前缀:将时间戳(即
YYYY - MM - DD HH:MM:SS
转换为时间戳数字形式)倒序排列作为行键的前缀。例如,若时间戳为1672531200
(对应某个时间点),倒序后为0021352761
。这样做能让新的数据排在前面,因为HBase按行键字典序存储数据。对于范围查询,从最新数据开始查找更符合实际业务需求,且能利用HBase的存储顺序快速定位。 - 添加辅助标识(可选):如果数据存在其他维度的分类,如业务类型等,可以在倒序时间戳之后添加该辅助标识作为行键的一部分。例如,业务类型
type1
,行键可以设计为倒序时间戳_type1
。这样在按时间范围查询时,还能根据业务类型进一步过滤数据,缩小查询范围,提高查询性能。
原因
- 利用HBase存储特性:HBase按行键字典序存储数据,倒序时间戳作为前缀能使新数据紧密相连存储在相邻位置。在进行时间范围查询时,只需扫描连续的行键区域,减少了数据扫描的范围,提高查询效率。
- 方便过滤:添加辅助标识能在查询时结合时间范围和其他维度进行更精准的过滤。避免全表扫描,进一步提升查询性能。