想象一下这样的场景:每一笔线上交易都能实时更新库存分析,金融应用能在交易发生那一刻完成欺诈检测——既不延迟也不损失性能。这正是HTAP(Hybrid Transactional and Analytical Processing,混合事务与分析处理)带来的可能,它让数据库既能快速处理事务(如下单),又能同步完成数据分析(如销售趋势洞察)。
但问题是:传统数据库很难同时兼顾这两种能力。 我们在FAST’25(美国USENIX文件与存储技术会议)上参与发表的最新研究《HaSiS:一种面向混合事务分析处理的硬件辅助单索引存储》正是为了解决这个问题。
HTAP的挑战:两种任务,两种结构
数据库要处理两类核心任务:
-
事务处理(Transactional Processing):处理小而频繁的更新,比如购物车加购,它喜欢行式存储(数据一行一行排列);
-
分析处理(Analytical Processing):处理大批量数据来提炼洞察,比如分析热销产品,它更偏好列式存储(按字段纵向排列,更便于扫描)。
由于两者使用的数据结构不同,很多HTAP系统会采用 “双索引” 方案:事务用B+树,分析用列存格式,然后在它们之间不断搬运数据。
这套方法“能用”,但代价高昂:数据迁移浪费时间(几秒甚至几分钟),让分析延迟,同时也拖慢了事务处理。
我们团队看到了更好的方法:如果一个索引就能搞定所有事,而且是即时的呢?
HaSiS解决方案:借助智能硬件实现单索引方案
我们的解决方案HaSiS(硬件辅助单索引存储)抛弃了双索引模型,转而采用单一的B+树结构——这是一种我们通过现代硬件技术增强的经典数据库结构。关键技术是什么?就是带有内置压缩功能的计算存储设备(CSDs),比如我们测试中使用的ScaleFlux CSD-3310。
-
大页面,低成本:传统B+树使用小页面(8-16KB)来保持事务更新的高效响应,但这对分析处理性能不利。HaSiS采用128KB的大页面来加速分析操作,同时利用CSD的压缩技术缩减稀疏数据(如空白区域或零值数据),避免浪费物理存储空间。这打破了"大页面会降低事务处理速度"这一传统规则。
-
混合布局:每个页面包含列式区块(用于分析)和日志区块(用于事务),更新直接写入日志,分析直接读取列式区,全部走一个索引,无需迁移数据。
-
智能缓存:我们设计了混合缓冲池,只加载需要的部分(如4KB块,而非整个128KB),减少内存浪费并保持高速运行。
CSD设备的硬件压缩技术能够在每个页面中存储更高密度的数据而不增加实际存储负载,确保数据实时可用,使分析操作能够立即访问最新的数据更新,而非传统架构中存在的分钟级延迟。
测试结果:HaSiS表现如何?
我们搭建了完整的原型系统,在一台22核Intel Xeon服务器+ScaleFlux CSD-3310硬件上跑了事务(TPC-C)和分析(TPC-H)测试,比较对象包括TiDB、MySQL、PostgreSQL、Parquet等。
-
数据实时性:HaSiS将更新传递到分析端只需17-121微秒,几乎是即时的,而TiDB因为数据迁移要30-2700微秒,延迟降低20倍以上。
-
性能:HaSiS在事务处理速度上与TiDB相当或更优(延迟差异在3-7%范围内),在分析性能上快了6.6%,这得益于其单索引的简洁设计。此外,HaSiS在事务处理上超越了MySQL和PostgreSQL,在分析能力上能够与Parquet相媲美。
-
存储效率:HaSiS比TiDB的双存储方案节省了68%的空间,将164GB的逻辑数据压缩成74GB物理存储。
即使在重度混合工作负载下,HaSiS仍然可以保持稳定运行,随着客户端数量的增加,系统性能呈线性扩展,直到达到硬件资源的极限。
为什么它意义重大?
HaSiS不仅是个实验室的成果,更预示着数据处理的新方向。电子商务平台可实现销售数据与趋势分析的实时融合,金融机构能在交易发生的同时执行欺诈检测分析。
通过将单一索引结构与计算存储硬件结合,HaSiS在减少系统复杂度、提升实时性、降低成本方面实现了三赢,而且相关硬件(如ScaleFlux的CSD)已经在全球部署,具有落地性和推广潜力。
论文地址:HaSiS: A Hardware-assisted Single-index Store for Hybrid Transactional and Analytical Processing | USENIX