KUDU(三)kudu資料讀寫,更新流程
阿新 • • 發佈:2020-10-13
文章目錄
寫
當CLient請求寫資料時,先根據主鍵從Master獲取要訪問的目標Tablets,然後依次到對應的Tablet獲取資料
因為kudu表存在主鍵約束,所以需要進行主鍵是否已經存在的判斷,這裡涉及到之前說的索引結構對讀寫的優化,一個Tablet中存在多個RowSets,為了提升效能,儘可能減少掃描RowSets數量,首先,我們先通過每個 RowSet 中記錄的主鍵的(最大最小)範圍,過濾掉一批不存在目標主鍵的RowSets,然後在根據RowSet中的布隆過濾器,過濾掉確定不存在目標主鍵的 RowSets,最後再通過RowSets中的 B-樹索引,精確定位目標主鍵是否存在。
讀
先根據要掃描資料的主鍵範圍,定位到目標的Tablets,然後讀取Tablets 中的
RowSets,在讀取每個RowSet時,先根據主鍵過濾要scan範圍,然後載入範圍內的BaseData,再找到對應的DeltaMemStores,應用所有變更,最後union上MemRowSet中的內容,返回資料給Client
更新
資料更新的核心是定位到待更新資料的位置,這塊與寫入的時候類似,就不展開了,等定位到具體位置後,然後將變更寫到對應的DeltaMemStore 中