[TcaplusDB知識庫]資料庫支撐底盤引擎計算層介紹

TcaplusDB君發表於2021-08-25

在上次的TcaplusDB知識庫中,TcaplusDB君為大家講解了TcaplusDB所用的基於HASH表的Key-value儲存引擎TXHDB。儲存引擎作為資料庫的支撐底盤,其重要性無可置疑,而在本次的知識庫系列分享中,TcaplusDB君要跟大家分享一個對於資料庫而言也很重要的結構,引擎計算層。

下面我將介紹一下TcaplusDB所用的引擎計算層 TcapRecord的設計邏輯。

TcapRecord的設計邏輯

為靈活支援多種表型別及複雜資料儲存,引擎計算層設計了TcapRecord物件來表達複雜資料記錄物件,在引擎計算層將複雜資料物件轉換成簡單的key-value二進位制資料記錄,以對底層引擎遮蔽資料表描述等細節,實際底層只需實現key-value模型的通用儲存介面。

TcapRecord支援兩種結構,表結構和巢狀資料結構。

表結構

TcaplusDB底層是Key-value儲存格式, 如何對映到使用者的操作的類似Table的結構呢?

field1 field2 field3 field4 field5 field6 ….

一個表,有N多欄位,在TcaplusDB中可以選定一個表的多個欄位做為key,其他欄位做為value來儲存到TcaplusDB中。 使用者還可以選定多個key欄位中的部分欄位來做索引(注意索引必須包含splittablekey — 依據該key來做資料分佈)。

引擎計算層負責表結構到Key-value結構的對映. 本質上就是把所有的key欄位根據表結構序列化為一個key, 所有的value欄位根據表結構序列化為一個value, 如下圖所示:

[TcaplusDB知識庫]資料庫支撐底盤引擎計算層介紹

巢狀資料結構

使用TcaplusDB的巢狀資料結構,有助於將關係型資料庫使用時需要的多張表定義,轉化為單張表定義。在解析資料時,對二進位制資料進行遍歷,根據tag資訊解析各欄位的field number及value資料。在資料打包時,遍歷各欄位,根據欄位field number,型別,value資料,打包tag及value資料到指定的buffer裡。在遇到解析的value為巢狀資料結構時,則根據後設資料的定義,將value按照tag、length、value進行逐個欄位遍歷及解析,實現巢狀資料結構的讀寫能力。

[TcaplusDB知識庫]資料庫支撐底盤引擎計算層介紹

 

相關文章