第 5 章 · Schema 与 RowKey 设计:设计行键就是设计负载分布


文档摘要

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

第 5 章 · Schema 与 RowKey 设计:设计行键就是设计负载分布

章节摘要:HBase 没有 SQL 优化器,查询性能在 Schema 定稿那一刻就锁定了。本章是全册高潮:RowKey 的设计直接决定每行数据的落点分布,进而决定写入热点、扫描宽度与缓存效率。讲反转、加盐、哈希、组合键四种模式及代价,列族与版本参数的工程选择,最后以订单表和画像表两个完整设计收束。

学习目标

阅读完本章,你应当能够:

  1. 把任意业务查询翻译成行键区间算术,反推 RowKey 编码;
  2. 掌握反转、加盐、哈希、组合键四种散列模式及各自牺牲的查询能力;
  3. 做出列族、版本、TTL、压缩、块大小的初始决策;
  4. 识别热点与倾斜的 Schema 成因并给出改键方案;
  5. 用双表/二级索引方案绕开"单表多查询模式"的死结。

核心概念速览

RowKey 不是主键,是"分区函数加索引"的二合一:你写下的每个字节都在替集群决定负载。

图 5-1 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 章调优的静态部分。

作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U