前言
上篇文章 提到 :索引的邏輯主要是根據 parquet 文件中保存的索引信息,判斷記錄是否存在,如果不存在,代表是新增數據,如果記錄存在則代表是更新數據,需要找到并設置 currentLocation。對于布隆索引來說,這里的索引信息其實是布隆過濾器,本篇文章主要是先總結布隆過濾器是如何保存到 parquet 文件中的(主要是源碼調用邏輯)。
我們新寫一個表的時候,最開始是沒有parquet文件的,所以順序應該是先將布隆過濾器寫到 parquet 文件中,下次寫數據的時候,先讀取 parquet 文件中的布隆過濾器來驗證表中是否存在該記錄,有助于實現高效的更新和刪除操作。
索引
索引是一個關鍵的步驟,它驗證表中是否存在記錄,并有助于實現高效的更新和刪除操作。請注意本文中涵蓋的索引是為寫入端準備的,這與讀取端索引不同。
對于有的索引類型是不涉及將索引信息保存到文件中的,比如 簡單索引(simple index),而對于Bloom索引(Bloom Index)則需要將布隆過濾器以及最大值最小值等信息寫到 parquet 文件中的元數據中。
Bloom索引(Bloom Index)
Bloom Index 最大限度地減少了用于查找的鍵和文件的數量,同時保持了較低的讀取成本。