0

我正在研究 SAP HANA 主内存数据库。里面有索引CPBTree。在它的文档中,它是这样描述的:

CPB+-tree 代表 Compressed Prefix B+-Tree;这种索引树类型基于 pkB-tree。CPB+-tree 是一个非常小的索引,因为它使用“部分键”,它只是索引节点中完整键的一部分。

这有点模糊。网上没有关于CPBTree结构的其他解释。

有没有人可以解释更多或介绍一个好的文件?

4

1 回答 1

1

从这里开始?

B 树是经过深入研究和开发数据结构,因此指向一个解释与此问题和 SAP HANA 相关的所有方面的单个文档有点困难。

也许它有助于首先解开这个术语:

压缩前缀

这基本上意味着,B 树索引和叶节点不包含键的完整字符串。取而代之的是,键中通用的键字符串部分(前缀)是分开存储的。叶节点和索引节点只包含

  • 指向前缀的指针
  • 一种包含剩余键的“增量”(这是来自 pkB 树的部分键的来源)
  • 和指向数据记录的指针(行 id)

这种技术在许多 DBMS 中相当普遍,通常附加到称为“索引压缩”或类似的功能。

所以,现在我们知道 HANA 使用压缩的 B 树索引(用于行存储表和可以表示为字符串的数据)。

为什么这对于像 HANA 这样的内存数据库很重要?简而言之:RAM 和 CPU 之间的内存传输工作量。索引结构越小,它就越能适应 CPU 缓存。要遍历(通过)索引,必须执行更少的数据来回移动。

这是一个巨大的性能优势。

这与尝试最小化 RAM-CPU 数据传输的特定“缓存意识”索引协议(HANA 内核如何使用索引结构)相辅相成。

所有这些都是一个过于简化的解释,我希望它有助于更​​有意义。

如果您想“深入研究”并开始阅读有关该主题的学术论文,那么Sang K. Cha 教授的共享内存多处理器系统上的主内存索引的缓存意识并发控制。等人
这与创建 P*Time 的Sang K. Cha相同,这是一个在 2000 年代初期的内存(行存储)DBMS。

这个 P*Time 已经相当有名地被 SAP 收购(就像许多其他 DBMS 软件产品公司...... Sybase...... MaxDB...... OrientDB......)并且该技术已被用作研究基地将成为 SAP HANA。

如今,只有一小部分 P*Time 仍在 SAP HANA 中,而且大部分都简化为概念和算法,并没有太多用实际的 P*Time 代码来表达。

总而言之,对于 HANA 的用户(开发人员、管理员、数据消费者)来说,这个索引实现的细节几乎不重要,因为它们都不能直接与索引结构交互。

重要的是,该索引采用现代服务器系统(许多内核、大型 CPU 缓存、大量 RAM)并从中提取出色的性能,同时仍允许“高速”事务。


我在我的博客中添加了这个答案的扩展文章: https ://lbreddemann.org/what-is-cpb-tree-in-sap-hana/ 。


于 2020-07-27T03:29:04.750 回答