要看你實現的是mysql的哪個存儲引擎,一般的存儲引擎難度不是很大,而帶有事務的存儲引擎會比較麻煩一點,會涉及到鎖的粒度問題。
介紹
mysql是一個關系型的數據庫,一般在項目早期或者中小型的服務端用的比較多,而且是開源免費使用的。
純C語言,寫任何軟件,都需要開發者有很強的造輪子的功底,對數據結構和算法非常精通才可以,以及數據結構之間的組合關系非常熟練,不會因為多層指針而被繞暈。
目前mysql服務端主要使用的是C語言開發,分為四層:連接層、服務層、引擎層和存儲層。而引擎層是可以由第三方實現的,像國內的阿里就在引擎層做了匹配業務的實現。
存儲引擎是數據庫底層軟件組織,通過使用數據引擎進行創建、查詢、更新和刪除數據。
不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定級別等功能,使用不同的存儲引擎,還可以獲得特定的功能。
現在許多不同的數據庫都支持多種不同的數據引擎。
了解mysql的引擎層
查看mysql的存儲引擎,使用命令:showengines。
查看mysql默認使用的存儲引擎,使用命令:showvariableslike'%storage_engine%'。
我們比較常見的mysql的存儲引擎有MyISAM和InnoDB,一個是非事務型的代表,一個是事務型的代表,不過現在的InnoDB的性能已經非常接近MyISAM了,大家可以直接默認都使用InnoDB。
存儲引擎開發準備工作
知己知彼,方能百戰不殆。
- 學好C語言的數據結構和算法,數組、棧、隊列、鏈表、二叉樹、紅黑樹、B+樹、Hash算法、基本排序算法等等,熟練掌握并融匯貫通。
- 熟練掌握一些基本的三方C語言庫,如openssl、regex等
- 還需要學會使用工具,CMake、Gcc、Git等
付出與回報
我們做的任何事情,都需要事先了解付出和收獲比,如果你浪費了一生的時間,做了一個無人問津的產品出來,在遲暮之年回首往事,定然會痛徹心扉。
但是凡事有弊都有利,通過實現數據庫的存儲引擎,可以學會很多C語言開發的技巧,專研了各種數據結構和算法,這對未來成為大牛級別的人物,是非常棒的一個事情。
案例分析
如果你準備進入大廠,如企鵝、阿里、字節跳動、網易和百度等公司,那么學習怎么寫存儲引擎是非常值得的。
如果你對上面所述的知識,都已經學的很好了,那么至少是P8級別的。
總結
寫一個存儲引擎的難度,總體是比較大的,但卻是一個非常好的挑戰,無論最后成功或者失敗,你都是最大的贏家。
如果你對技術也有追求,對現實迷茫,請關注我,暗黑程序員。