面试题答案
一键面试- 访问模式:
- 重要性:若应用主要进行顺序扫描,将经常一起读取的数据放在同一列族,可减少I/O开销。例如日志数据,按时间顺序写入和读取,把相关字段如时间戳、日志内容等放在一个列族,能提高扫描效率。若为随机读写,要避免大列族,防止随机读时读取过多不必要数据。
- 数据生命周期:
- 重要性:不同生命周期的数据分开列族存储便于管理。如热数据(近期频繁访问)和冷数据(很少访问),冷数据可设置更紧凑存储格式或更长时间的压缩策略,降低存储成本,同时热数据列族能保持较高读写性能不受冷数据影响。
- 存储需求:
- 重要性:不同类型数据存储需求不同。二进制大对象(BLOB)数据占用空间大,与常规小数据字段分开列族,可采用不同压缩算法。如图片、视频等BLOB数据列族适合采用高效的通用压缩算法,而文本等小数据列族可采用针对性更强的轻量级压缩算法,优化整体存储。
- 数据一致性:
- 重要性:对一致性要求高的数据放在同一列族。因为HBase保证同一行内同一列族数据的原子性操作,若需保证多个数据项同时更新或读取一致性,如账户余额及相关交易记录,放在同一列族可确保操作的原子性,避免出现数据不一致问题。