Index

SAP HANA 中的壓縮前綴 B+-Tree (CPBTree) 是什麼?

  • June 16, 2020

我正在研究 SAP HANA 主記憶體數據庫。

裡面有一個索引CPBTree。在其文件中,描述如下:

CPB+-tree 代表 Compressed Prefix B+-Tree;這種索引樹類型基於 pkB-tree。CPB+-tree 是一個非常小的索引,因為它使用“部分鍵”,它只是索引節點中完整鍵的一部分。

這有點模糊。網上沒有關於CPBTree的結構的其他解釋。

有沒有人可以提供更多解釋或向我推薦好的文件/URLs/&c。

我假設您知道 B-Tree 是什麼。在 B+-Tree 中,葉節點包含行的所有列。壓縮的 B-Tree 使用某種形式的壓縮來適應每個頁面上的更多資訊。壓縮是可取的,因為它使每次數據移動傳遞的資訊量最大化。在基於磁碟的系統中,移動是在磁碟和 RAM 之間進行的。對於 HANA,傳輸是在 RAM 和 CPU 記憶體之間進行的;記憶體停頓和記憶體刷新在此架構中非常重要。

一種可能的壓縮是前綴壓縮。這裡比較索引鍵值。當辨識出一組常見的前導字元(前綴)時,它們將從密鑰中刪除並單獨儲存。在執行時,前綴隱式地重新附加到其餘部分。

例如,假設我們有一個來自世界末日之書的人名索引。

William of Braose
William of Ecouis
William of Falaise
William of Keynes
William of Poilley

要按原樣儲存這些內容,至少需要 88 個字節。我們注意到每個鍵的前 11 個字元是相同的。這可以提取為前綴,這意味著只有唯一部分佔用空間:

"William of "..
Braose
Ecouis
Falaise
Keynes
Poilley

這需要 44 個字元 - IO、記憶體未命中等減少 50%。

這可能是有效的,因為 B-Tree 是鍵的有序列表。排序在一起的鍵很可能在物理上是相鄰的。此外,對於大型數據集,鍵必須很長,因為它們必須區分許多行。這意味著將有許多鍵,其中最重要的(即最左邊的)字節是相同的。(對於沒有共享前綴的小型數據集,誰在乎!它們很小,無論如何都會被快速處理。)

這同樣適用於數值。想像一個表,其主鍵是系統分配的增量整數。添加一億行後,接下來的行將具有值

100,000,001
100,000,002
100,000,003
...

前綴可以是 4 字節整數“100,000,000”,並且每個都保存在單個字節中的唯一部分。對於數字,這也稱為增量編碼。


我還沒有看過它,但人們會認為這是相關的,因為它是由 SAP 的“P”普拉特納博士提出的。

https://open.hpi.de/courses/imdb2017/items/3S9yMQPPAjYHzgYwFd2DMF

引用自:https://dba.stackexchange.com/questions/269174