MiniOB 是OceanBase 團隊基於華中科技大學資料庫課程原型,聯合多所大學重新開發的、專為零基礎的同學設計的資料庫入門學習專案。我們的目標是為在校學生、資料庫從業者、愛好者或對基礎技術感興趣的人提供一個友善的資料庫學習專案。
MiniOB 整體程式碼簡潔,容易上手,設計了一系列由淺入深的題目,幫助同學們從零基礎入門,迅速了解資料庫並深入學習資料庫核心。 MiniOB 簡化了許多模組,例如不考慮並發操作、安全特性和複雜的事務管理等功能,以便更好地學習資料庫實作原理。我們期望透過MiniOB 的訓練,同學們能夠熟練掌握資料庫內核模組的功能和協同關係,並具備一定的工程編碼能力,例如記憶體管理、網路通訊和磁碟I/O 處理等, 這將有助於同學在未來的面試和工作中脫穎而出。
程式碼配套文檔和相關程式碼註解已經產生文檔,並透過GitHub Pages 發布。您可以直接存取:MiniOB GitHub Pages.
為了幫助開發者更好地上手並學習MiniOB,建議閱讀以下內容:
為了幫助大家更好地學習資料庫基礎知識,OceanBase社群提供了一系列教學。更多文件請參考MiniOB GitHub Pages。建議學習:
MiniOB 整體架構如下圖所示:
其中:
網路模組:負責與客戶端交互,收發客戶端請求與應答;
SQL解析:將使用者輸入的SQL語句解析成語法樹;
執行計劃快取:執行計劃快取模組會將該SQL第一次產生的執行計劃快取在記憶體中,後續的執行可以重複執行這個計劃,避免了重複查詢最佳化的過程(未實現)。
語意解析模組:將產生的語法樹,轉換成資料庫內部資料結構(部分實作);
查詢快取:將執行的查詢結果快取在記憶體中,下次查詢時,可以直接傳回(未實現);
查詢最佳化:根據一定規則和統計數據,調整/重寫語法樹。 (部分實現);
計劃執行:根據語法樹描述,執行並產生結果;
會話管理:管理使用者連線、調整某個連線的參數;
元資料管理:記錄目前的資料庫、表格、欄位和索引元資料資訊;
客戶端:作為測試工具,接收使用者請求,向服務端發起請求。
2022 OceanBase 資料庫競賽是由中國電腦學會(CCF)資料庫專業委員會指導,OceanBase 與螞蟻技術研究院學術合作團隊共同舉辦的資料庫核心實戰賽事。本次比賽主要針對全國愛好資料庫的大學學生,以「競技、交流、成長」為宗旨,建構基於賽事的技術交流平台,促進大學創新人才培養機制,不僅幫助學生從0開始系統化學習資料庫理論知識,提升學生資料庫實務能力,更能幫助學生走向企業累積經驗,促進國內資料庫人才的發展,碰撞出創新的火花。
OceanBase 初賽基於一套適合初學者實踐的資料庫實訓平台MiniOB,代碼量少,易於上手學習,包含了資料庫的各個關鍵模組,是一個系統性的資料庫學習平台。基於該平台設置了一系列由淺入深的題目,以幫助同學們更好"零"基礎入門。
2023 OceanBase 資料庫競賽正在火熱進行, 更多詳情, 請參考OceanBase 比賽。
大賽入門教程
賽題介紹
題目完成並通過自測後,大家可以在MiniOB 訓練營上提交代碼進行測試。
在提交前, 請參考並學習訓練營使用說明。
大賽FAQ
本倉庫基於Gitpod 建立了快速線上開發平台。點擊下面的按鈕即可一鍵體驗(建議使用Chrome 瀏覽器)。
首次進入Gitpod 時需要安裝一些依賴。安裝完成後,終端介面會顯示"Dependency installed successfully"。執行bash build.sh --make -j4
指令即可編譯MiniOB。
OceanBase 社群熱情歡迎每位對資料庫技術熱愛的開發者,並期待與您攜手開啟思維碰撞之旅。無論是文件格式調整或文字修正、問題修復或增加新功能,都是參與和貢獻OceanBase 社群的方式之一。現在就開始您的首次貢獻吧!更多詳情,請參考社區貢獻.
MiniOB 採用木蘭寬鬆許可證,第2版, 可以自由拷貝和使用源碼, 當做修改或分發時, 請遵守木蘭寬鬆許可證,第2版.