最近在查找HTAP相关的参考文献,打算顺便系统的出一个关于内存数据库商业系统的专题,内容当前可能不会很完善,但先mark后期再补充。第一篇文字主要是关于HANA系统的。
HANA系统(https://www.sap.com/products/hana/features/in-memory-database.html)是通过收购P*Time 数据库,然后二次开发得到的。P*Time 的文章见下文:
S. K. Cha and C. Song. P*TIME: Highly Scalable OLTP DBMS for Managing Update-Intensive Stream Workload. InProc. VLDB, pages 1033–1044, 2004 (http://www.vldb.org/conf/2004/IND2P2.PDF)
HANA的介绍文章:The SAP HANA Database – An Architecture Overview
HANA主打的功能是HTAP应用场景,同时在一个单一系统中处理OLTP和OLAP业务负载。HANA的主要组件如下图所示:
OLAP的数据是基于列存储的方式压缩存储的。每一列的数据基于排序字典进行压缩。压缩技术参见下文:
C. Lemke, K.-U. Sattler, F. Farber, and A. Zeier. Speeding Up Queries in Column Stores – A Case for ¨Compression. In Proc. DaWak, pages 117–129, 2010
M. Paradies, C. Lemke, H. Plattner, W. Lehner, K.-U. Sattler, A. Zeier, and J. Kruger. How to Juggle ¨Columns: An Entropy-Based Approach for Table Compression. In Proc. IDEAS, pages 205–215, 2010.
同时通过SIMD技术优化scan过程:
T. Willhalm, N. Popovici, Y. Boshmaf, H. Plattner, A. Zeier, and J. Schaffner. SIMD-Scan: Ultra Fast in-Memory Table Scan using on- Chip Vector Processing Units. Proc. VLDB, 2(1):385–394, 2009.
数据更新操作,借助一个delta storage的结构暂存,这个针对写优化结构会定期合并到主数据中。这部分工作在下文HYRISE系统(和HANA是一波人在搞)中提到:
J. Kruger, C. Kim, M. Grund, N. Satish, D. Schwalb, J. Chhugani, P. Dubey, H. Plattner, and A. Zeier. Fast ¨Updates on Read-Optimized Databases Using Multi-Core CPUs. Proc. VLDB, 5(1):61–72, 2011 (http://www.vldb.org/pvldb/vol5/p061_jenskrueger_vldb2012.pdf)
他的主要思想是在列式数据库不适合插入,单独为每一列副本上维护一个csb+树。如下图
分布式连接操作的方式:
G. Hill and A. Ross. Reducing outer joins.VLDB Journal, 18(3):599–610, 2009.
HANA的OLTP业务处理仍然是基于列式数据的。个人认为HANA总体还是偏向于OLAP业务,虽然可以进行TP。