面试题答案
一键面试表结构设计
- 行键设计:
- 设计方式:采用时间戳 + 设备ID(或其他唯一标识)的组合作为行键。例如,时间戳精确到毫秒,如
1678945678901_device1
。 - 理由:HBase中行键是有序存储的。时间戳在前可以保证数据按时间顺序存储,方便按时间范围进行扫描查询,比如查询某段时间内所有设备的数据。设备ID放在后面可以区分不同的数据源,使得同一时间不同设备的数据可以区分开。同时,这种组合方式能保证行键的唯一性,满足HBase对行键的要求。
- 设计方式:采用时间戳 + 设备ID(或其他唯一标识)的组合作为行键。例如,时间戳精确到毫秒,如
- 列族设计:
- 设计方式:可以根据数据类型或业务逻辑划分列族。比如,对于设备的基本信息(如设备型号、所属区域等)可以放在一个列族
device_info
,对于设备实时采集的数值数据(如温度、压力等)放在另一个列族metric_data
。 - 理由:HBase中的列族在物理存储上是分开的。这样设计可以将不同类型的数据分开存储,有利于管理和维护。对于不经常变化的设备基本信息,和频繁更新的实时采集数据分别存储,在进行数据操作(如更新、查询)时可以提高效率。同时,不同列族可以设置不同的存储策略,如
device_info
列族可以设置较低的压缩比,而metric_data
列族由于数据量大可以设置较高的压缩比以节省存储空间。
- 设计方式:可以根据数据类型或业务逻辑划分列族。比如,对于设备的基本信息(如设备型号、所属区域等)可以放在一个列族