開源資料庫OceanBase原始碼解讀(九):tableAPI和OB多模型

OceanBase資料庫發表於2021-11-17
作者簡介:竹翁,畢業於北京大學, OceanBase 核心研發總監。
原名楊志豐,花名竹翁。近十年來一直在阿里巴巴/螞蟻金服自主研發分散式系統和資料庫的從事研發工作。
致力於設計出先進的 HTAP 資料庫系統,打造技術業內標杆、商業取得成功的核心基礎設施。在 OceanBase 系統中,他先後負責 OceanBase 的 SQL 引擎,分散式主控模組,多模資料庫方向等,負責過 OceanBase 的資料庫平臺產品研發,近期在負責核心創新研發工作。且竹翁對 C++ 、分散式系統原理、 SQL 查詢處理、事務處理、編譯技術、工程效率等方面也有著濃厚的興趣。

在剛剛釋出的  OceanBase社群版 3.1.1  中,OceanBase 開放了一組新的 API 叫做  Table API ,hbase -> HBase  。本文作為原始碼解讀系列的第九篇,將介紹  Table API ,hbase -> HBase  和 OceanBase 多模型,以及 tableAPI 相關程式碼。

Table API ,hbase -> HBase  以 API 而非 SQL 的方式提供了一種新的訪問 OceanBase 資料的介面。熟悉 MySQL 的同學,可以把它類比為 MySQL 的 sockethandler 。不過  Table API ,hbase -> HBase  提供的能力更強大,它把OceanBase 可靠和可擴充套件的分散式儲存層能力直接提供給應用程式,提供了靈活(非關係模型)和輕量的資料訪問介面(無連線狀態),應用程式可以把  Table API ,hbase -> HBase  當做 key-value , table-store , hbase(我們提供了相容 hbase 的 API 和驅動)等多種資料模型的資料庫來使用。在簡單讀寫場景下, Table API ,hbase -> HBase  比 SQL 也有一定的效能優勢(響應延時)。

這是 OceanBase 開放生態的重要舉措,第三方系統可以相對容易的在 OceanBase 的  Table API ,hbase -> HBase  服務之上封裝增值的資料服務。例如,我們在螞蟻集團內部廣泛部署的時序資料庫  CeresDB  就是這麼做的。

下面介紹一下  Table API ,hbase -> HBase  相關程式碼。

Table API ,hbase -> HBase  模組通過 obrpc 協議提供資料服務,他的服務埠和 observer 的 rpc 埠一樣。服務端的主體程式碼位於  src / observer / table /。

開源資料庫OceanBase原始碼解讀(九):tableAPI和OB多模型

上面檔案中,叫做 xxx_processor 的,主要都是協議層的處理。

execute_processor 是單行操作的處理函式, batch_execute_processor 是批量多行操作的處理函式,query_processor 是掃描操作的處理函式。

主體的邏輯在 ob_table_service.h/cpp 中。通過學習  Table API ,hbase -> HBase  的程式碼,可以快速學習 OceanBase 儲存層、事務層對 SQL 層提供的介面。

開源資料庫OceanBase原始碼解讀(九):tableAPI和OB多模型

Table API ,hbase -> HBase  的 rpc 請求和結果的資料結構,定義在 src/share/table 中。從 OceanBaseTableOperation 類的定義中,可以看到  Table API ,hbase -> HBase  提供了單行的 insert, delete, insert or update(無索引時即put), replace, retrieve(get), increment, append 以及他們任意組合的批量操作。通過 OceanBaseTableQuery 介面,提供了範圍掃描操作。

Table API ,hbase -> HBase  當前有 Java 和 Rust 兩種語言的驅動,對某個分割槽的查詢由客戶端傳送到 leader 副本所在的 OceanBaseserver 上。如果發生了主備切換,需要驅動實現重試邏輯。

歡迎大家在  Table API ,hbase -> HBase  之上擴充套件更多應用。

附錄:前八篇原始碼解讀文章可供參考

1、 OceanBase 資料庫原始碼解讀(一)引言

2、 OceanBase 資料庫原始碼解讀(二)目錄結構

3、 OceanBase 原始碼解讀(三)SQL 的一生

4、 OceanBase 原始碼解讀(四)分割槽的一生

5、 OceanBase 原始碼解讀(五)事務的一生

6、 OceanBase 原始碼解讀(六)租戶的一生

7、 OceanBase 原始碼解讀(七)帶你看透虛擬表

8、 OceanBase 原始碼解讀(八)OB高效能執行引擎

參與更多技術交流,請至 OceanBase 社群版 。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69909943/viewspace-2842781/,如需轉載,請註明出處,否則將追究法律責任。

相關文章