01 它是干嘛的
HANA 是 SAP 自研的数据库,也是 S/4HANA 的地基。它的核心思路是把数据常驻内存并采用列式存储,让「一边处理交易、一边跑分析」在同一份数据上完成,不必先把数据搬到另一个分析系统里去。
02 为什么会有它
以前:交易系统和报表系统必须分成两套
传统做法是两套系统:一套专门处理下单、发货这类高频小操作(OLTP),另一套专门跑汇总统计(OLAP)。每天夜里把交易库的数据抽出来、清洗、搬进分析库,第二天早上出报表。
这个架构的代价是「永远慢一天」,而且两套系统的数据模型不同,口径容易打架。企业为了一个实时数字,往往要额外做一堆中间件。
内存价格持续下降让工程师开始想:既然内存便宜了,为什么还要把数据放在慢得多的磁盘上?HANA 就建立在这个判断上——数据常驻内存、按列存储,聚合运算可以极快完成,于是同一份数据既能写也能算。
03 它怎么工作
行式存储适合一次取一整条记录,列式存储适合一次扫一整列。报表大多只关心少数几列的汇总,列存因此快很多。
为什么列式存储让统计变快
- 1① 按列存放
同一字段的值连续存放,统计「销售额总和」时只需读这一列,不必把整行都搬出来。
- 2② 压缩
同列数据相似度高,可用字典编码等方式大幅压缩,更多数据能塞进内存。
- 3③ 常驻内存
热数据放在内存,省掉磁盘寻道时间,扫描速度提升一个量级。
- 4④ 增量合并
新写入先进入增量区,再后台合并进主列存储,兼顾写入性能与读取效率。
- 5⑤ 一份数据两种活
交易与分析跑在同一份数据上,报表看到的永远是最新状态,不再隔夜。
04 谁在用它
需要实时经营看板的企业
管理者要看的是此刻的库存与毛利,而不是昨天的数据。
海量明细的自助分析
上亿行凭证仍要支持任意维度下钻。
ERP 与分析的统一平台
希望一套系统同时承担交易与分析,减少数据同步链路。
高频结算与关账
月末关账要在数小时内完成千万级凭证的汇总。
05 怎么用
HANA 通常随 S/4HANA 一起落地,单独使用者多为数据平台工程师。
- 01先搞清楚自己要优化的到底是写入慢还是查询慢,两者解法不同。
- 02用列存表存放事实数据、行存表存放需要整行读取的配置表。
- 03为高频查询建计算视图而不是反复写复杂 SQL。
- 04监控内存占用,HANA 的成本主要来自内存规模。
避坑提示
- !内存数据库不是「快」的万能药,索引与建模不合理时一样会慢。
- !许可证通常按内存容量计价,容量规划直接决定成本。
06 关键概念
- 行存与列存
- 行存适合一次取一条完整记录,列存适合对某一列做统计,报表场景列存优势巨大。
- 内存数据库
- 数据主要放在内存而非磁盘,延迟低一个量级,代价是内存成本高、需要持久化兜底。
- HTAP
- 同一套系统既做交易又做分析,省掉两套系统之间的数据搬运。
- 增量合并
- 新数据先写增量区再异步整理进主存储,兼顾写入速度与读取效率。
07 容易混淆的对比
Oracle Database传统强者,生态成熟;HANA 在分析型负载上更激进地押注内存。
Snowflake纯分析型、存储计算分离,适合做企业级数仓而非承载交易。