面试题答案
一键面试1. 前缀设计
- 技巧:将常用的筛选条件作为行键的前缀。例如,如果经常按时间范围查询数据,可将时间戳作为行键前缀。
- 适用场景:适用于有明确按特定属性进行范围查询的场景,能快速定位到相关的数据块,减少扫描范围。比如日志数据,常按时间范围查找,以时间戳为前缀能快速定位到某一时间段内的日志记录。
2. 散列设计
- 技巧:在原本行键前添加散列值(如MD5、SHA1等哈希算法生成的部分值)。例如,原本行键为用户ID,在前面加上对用户ID进行哈希运算后的部分值。
- 适用场景:当数据写入在某一维度上可能产生热点时,使用散列设计可将数据分散到不同的RegionServer上。如以用户ID为行键时,若某些热门用户数据写入频繁,通过散列可避免这些数据集中在少数RegionServer,实现负载均衡。
3. 复合设计
- 技巧:将多个属性组合成一个行键。例如,对于电商订单数据,可将订单日期、用户ID、订单ID组合成一个行键,日期在前保证按日期范围查询效率,同时结合用户ID和订单ID能唯一标识订单。
- 适用场景:适用于需要通过多个条件来唯一标识数据且按其中某些条件范围查询的场景。电商订单场景下,既能按日期范围统计订单,又能根据用户ID和订单ID精确查找某一订单。