大数据存储列族
Column Family 是什么?
列的上级分组,建表时就要定好,同族的数据物理上存在一起
类比:档案袋,同一类的材料装在一个袋子里
列族 vs 列
HBase 的列可以随时新增,不需要改表;但列族必须在建表时定义,之后改要停表。一个列族下的所有列存在同一个 StoreFile 里,共享同一份内存和刷盘策略。
为什么列族要少
每个列族对应一组 MemStore 和 HFile。列族多了,刷盘次数、文件数、compaction 压力都成倍增加。官方建议一张表 1~3 个列族,别按“业务模块”随意切。
常见划分是:一个列族放主要数据(小、读多),一个放附加信息(大、读少),利用不同的 TTL 和压缩策略。
稀疏存储
同一列族内,不同行的列可以完全不同,没写的列不占空间。这让 HBase 特别适合“标签、属性”这类数量不定、大部分为空的场景。