面试题答案
一键面试行键策略设计
可以考虑将行键设计为:业务类型 + 用户ID + 时间戳
(假设各部分之间用特定分隔符连接,如_
)。例如:type1_123456_1678901234
。这样设计的好处是:
- 按业务类型查询:由于业务类型处于行键开头,HBase按行键排序存储,因此可以通过扫描特定业务类型前缀的行,快速定位到相关数据,查询效率较高。
- 按用户ID查询:虽然用户ID不在行键最前端,但由于整体行键是有序的,可以通过范围扫描,缩小查询范围到特定用户ID的数据,也能有较好性能。
- 按时间戳查询:时间戳处于行键末尾,同样可以通过范围扫描,查找特定时间戳范围的数据。
优点
- 多维度查询性能均衡:对三种维度的查询都能通过扫描行键范围实现较好性能,没有明显短板。
- 数据局部性:相同业务类型的数据在物理存储上相对集中,有利于读取操作。
缺点
- 行键长度较长:可能导致存储开销增加,尤其是在数据量较大时,对存储资源要求更高。
- 写入热点问题:如果业务类型分布不均匀,可能会导致部分业务类型前缀的行键写入过于集中,形成热点,影响写入性能。