第 5 章 · Schema 与 RowKey 设计:设计行键就是设计负载分布
章节摘要:HBase 没有 SQL 优化器,查询性能在 Schema 定稿那一刻就锁定了。本章是全册高潮:RowKey 的设计直接决定每行数据的落点分布,进而决定写入热点、扫描宽度与缓存效率。讲反转、加盐、哈希、组合键四种模式及代价,列族与版本参数的工程选择,最后以订单表和画像表两个完整设计收束。
学习目标
阅读完本章,你应当能够:
- 把任意业务查询翻译成行键区间算术,反推 RowKey 编码;
- 掌握反转、加盐、哈希、组合键四种散列模式及各自牺牲的查询能力;
- 做出列族、版本、TTL、压缩、块大小的初始决策;
- 识别热点与倾斜的 Schema 成因并给出改键方案;
- 用双表/二级索引方案绕开"单表多查询模式"的死结。
核心概念速览
RowKey 不是主键,是"分区函数加索引"的二合一:你写下的每个字节都在替集群决定负载。
图 5-1 RowKey 四种设计模式的落点分布对比

子章节导航
5.1 RowKey 设计:决定落点的第一因
查询模式到行键算术的翻译法,四种散列模式的原理与代价,热点诊断与改键流程。
5.2 列族与存储参数设计
列族数量、VERSIONS、TTL、COMPRESSION、BLOCKSIZE、布隆类型的初始决策与修改代价。
5.3 表设计与二级索引实战
订单表与画像表的完整 Schema 推演;无二级索引时的四种替代方案(双写、Coprocessor、索引表、搜索引擎)。
子章节之间的逻辑关系
行键(横向 分布问题)
|
列族与参数(纵向 存储问题)
|
综合实战(把 5.1 5.2 的决策拼成两张真实表)
前置知识与后续延伸
- 前置:第 3 章全部(Region 分裂、读放大、Compaction),4.3 节客户端优化。
- 为后续铺垫:5.3 的画像表设计直接进入第 7 章实战案例;5.2 的参数是第 7 章调优的静态部分。
作者与出处
原作者:灏天文库
来源:平台策划编纂
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流