Skip to content
HBase 设计与热点治理 · 第 1 篇 / 共 2 篇
领域数据与中间件
专题HBase 专题
当前序列HBase 设计与热点治理
阅读位置第 1 篇 / 共 2 篇当前专题第 1 个序列 / 共 3 个序列

HBase 核心架构与 RowKey 设计:为什么表能建,查询却越来越难用

很多人第一次接触 HBase,会把它当成:

  • 一种“能存很多数据的数据库”

但真正落到使用上,很快就会发现:

  • 表是能建
  • 数据也能写
  • 真正难的是查询模型和 RowKey 设计

先说结论

HBase 设计里最重要的通常不是列族怎么命名,而是:

  1. 你的访问路径是什么
  2. RowKey 能不能支撑主查询模式
  3. 热点会不会集中到少数 Region

一、HBase 为什么和关系型数据库完全不同

因为 HBase 更像:

  • 基于 Key 的大规模分布式存储

它不是拿来随便做复杂条件查询的。

所以建表前更应该先问:

  • 我最主要按什么键查

二、RowKey 为什么是核心

因为它几乎决定了:

  • 数据如何分布
  • 查询能不能高效命中
  • 是否会产生热点

很多 HBase 用不好,本质上不是 HBase 慢,而是:

  • RowKey 设计没有贴着业务访问方式走

三、RowKey 设计最常见的坑

1. 顺序递增键直接上

这样最容易造成写热点。

2. 只考虑唯一性,不考虑查询性

唯一是底线,但不是全部。

3. 想让一张表兼顾所有查询模式

这通常会让主查询不够高效。

四、一个更实用的理解方式

设计 HBase 表时,更像是在回答:

  • 这张表最主要是按什么维度取数据
  • 是点查
  • 还是范围扫

如果这些问题没想清楚,后面越写越多时问题会更明显。

一句话总结

HBase 的核心不是“能存海量数据”,而是:

  • 你是否真的围绕访问路径设计了 RowKey
延伸阅读相关文章优先当前专题,再补跨专题关联。
同一序列 · 顺着当前主线继续读HBase 热点与 Region Split适合先建立 RowKey 设计认知,再顺着热点和 Region 分布问题继续看。HBase 专题 · HBase 设计与热点治理同专题其他序列 · HBase 读写模型与表设计BloomFilter 在 HBase 里到底解决什么问题适合把 RowKey、列族、Scan/Get 和 BloomFilter 放在同一条 HBase 读写主线上理解。HBase 专题 · HBase 读写模型与表设计同专题其他序列 · HBase 读写模型与表设计Column Family 设计过多为什么有代价适合把 RowKey、列族、Scan/Get 和 BloomFilter 放在同一条 HBase 读写主线上理解。HBase 专题 · HBase 读写模型与表设计同专题其他序列 · HBase 读写路径与建模细节Column Family、Version 和 Cell 模型怎么理解适合把 Cell、flush/compaction 和宽行扫描问题放到一起看。HBase 专题 · HBase 读写路径与建模细节跨专题关联 · 同场景:基础学习缓存穿透治理怎么做更稳适合把 Sentinel、穿透防护、延迟队列和地理位置搜索放在一起看。Redis 专题 · Redis 可用性与热点治理细节跨专题关联 · 同场景:基础学习慢 SQL 治理为什么不能只靠索引适合把大事务、DDL、回填、慢 SQL 治理和归档分层放进一条持续治理主线上看。MySQL 专题 · MySQL 变更治理与数据生命周期
继续阅读HBase 设计与热点治理当前序列第 1 篇 / 共 2 篇当前专题第 1 个序列 / 共 3 个序列
往前看
上一序列ClickHouse 预聚合与分层治理从第 1 篇开始:ClickHouse 物化视图与预聚合
往后看
下一篇HBase 热点与 Region Split继续当前序列下一章下一序列HBase 读写路径与建模细节从第 1 篇开始:Column Family、Version 和 Cell 模型怎么理解

把零散经验整理成可查、可复用、可持续更新的企业级知识门户