不容錯過的MySQL和MariaDB七項功能
譯文【51CTO.com快譯】在過去這幾年,開源關(guān)系數(shù)據(jù)庫管理系統(tǒng)MySQL和MariaDB經(jīng)歷了巨大的變化:新增和改進功能、修復(fù)長期存在的問題以及全面提升性能。
由于變化很大,很容易錯過MySQL和MariaDB在此期間添加的一些優(yōu)秀功能。本文將介紹添加到MySQL、MariaDB或兩者的七項最主要的新功能以及為什么你應(yīng)使用它們。
1.JSON支持
NoSQL數(shù)據(jù)庫出現(xiàn)時,承諾開發(fā)人員易于使用、可靈活擴展,許多人想知道關(guān)系數(shù)據(jù)庫是否會消失。簡短的回答:根本沒有消失。NoSQL系統(tǒng)方便又靈活,但模式(schema)和表始終會有一席之地。
此外,許多老式關(guān)系數(shù)據(jù)庫(包括MySQL和MariaDB)借鑒了NoSQL,添加了JSON支持這項標準功能。最終結(jié)果是,你需要時可使用NoSQL,而同一數(shù)據(jù)庫中還有傳統(tǒng)SQL。
MySQL和MariaDB中的JSON支持讓你可以將JSON文件插入到特別指定的表列中。插入的JSON數(shù)據(jù)可以使用用于其他數(shù)據(jù)列的同一種約束加以自動驗證。你可以將數(shù)據(jù)檢索為JSON文檔或簡單標量,可以使用生成的列或虛擬的列獲得類似JSON索引的效果。
這里有兩個要點值得記住。首先,雖然MySQL和MariaDB中的JSON處理函數(shù)集相似,但它們不是彼此的簡易替代者。其次,MySQL和MariaDB實現(xiàn)原生JSON列數(shù)據(jù)類型的機制也不一樣。如果你在兩個數(shù)據(jù)庫之間遷移或同步數(shù)據(jù),這會導(dǎo)致輕微的不兼容性,需要注意。
2.資源組(僅限于MySQL)
所有數(shù)據(jù)庫作業(yè)都很重要,但一些作業(yè)比其他作業(yè)更緊迫。比如說,你可能希望在后臺運行歸檔或計劃批處理任務(wù)等作業(yè),同時確保盡可能快速地執(zhí)行關(guān)鍵業(yè)務(wù)工作。MySQL的資源組使其成為可能。
使用資源組,你可以為分配給該組的所有數(shù)據(jù)庫作業(yè)指定類型(“系統(tǒng)”或“用戶”)、CPU親和性以及線程優(yōu)先級。你可以為會話選擇資源組,也可以使用優(yōu)化器提示為單個語句選擇一個資源組。
注意,資源組在MySQL平臺上的實現(xiàn)方式不同,你不能將資源組與企業(yè)線程池插件結(jié)合使用。此外,雖然有一項功能請求在MariaDB中實現(xiàn)類似的功能,但還沒有計劃實現(xiàn)該功能。
3.OQGRAPH存儲引擎(僅限于MariaDB)
圖形數(shù)據(jù)庫讓你可以比使用關(guān)系數(shù)據(jù)庫更有效地存儲和探索數(shù)據(jù)之間的關(guān)系。雖然像Neo4j或Amazon Neptune這種專用圖形數(shù)據(jù)庫專注于圖形存儲和處理,但MariaDB讓你可以通過OQGRAPH存儲引擎,將傳統(tǒng)的SQL查詢與圖形處理一并執(zhí)行。
大多數(shù)圖形數(shù)據(jù)庫使用各自的自定義查詢語言。借助OQGRAPH,你可以使用傳統(tǒng)SQL加載數(shù)據(jù)并構(gòu)建圖形查詢。結(jié)果以MariaDB的傳統(tǒng)查詢格式返回,因此可以與傳統(tǒng)SQL表查詢的結(jié)果相結(jié)合或組合。
4.Oracle兼容性功能(僅限于MariaDB)
Oracle的數(shù)據(jù)庫產(chǎn)品仍然是所有IT中使用最廣泛的產(chǎn)品,但其許可成本和合同限制使許多用戶考慮退出。此外,許多基于Oracle的應(yīng)用程序大量使用Oracle PL/SQL及其語法所獨有的功能。
在過去的幾個版本中,MariaDB推出了大量新功能,旨在模仿Oracle數(shù)據(jù)庫的行為,尤其是Oracle的PL/SQL語言。從理論上來說,這讓許多現(xiàn)有的PL/SQL代碼可以在MariaDB中按原樣運行,或者只需稍作修改。MariaDB團隊估計,使用兼容性功能,大約80%的舊版Oracle PL/SQL可以按原樣運行。
注意:使用Oracle PL/SQL模式的MariaDB命令針對具體的客戶端才生效。你無需全局更改MariaDB的行為即可使用該功能。
5.系統(tǒng)版本表(MariaDB)
2011版SQL標準添加了版本表,即數(shù)據(jù)庫跟蹤表行的功能。MariaDB在10.3.4版本中添加了系統(tǒng)版本表這項原生功能。
有了MariaDB的系統(tǒng)版本表,你可以使用特定的時間范圍來運行查詢,得到的結(jié)果會在該時間段內(nèi)顯示。你還可以修改或刪除屬于日期范圍的行,添加或刪除要跟蹤的時間段,以及使用在應(yīng)用程序級別、系統(tǒng)級別或這兩個級別指定的時間段。從理論上來講,你可以對任何支持時間值的數(shù)據(jù)庫執(zhí)行該操作,但很難自行執(zhí)行;MariaDB在底層執(zhí)行這項工作。
雖然MariaDB中為任何數(shù)據(jù)庫引擎支持系統(tǒng)版本表,但一些功能(比如顯示特定事務(wù)中間記錄的事務(wù)精確歷史記錄)只有使用InnoDB引擎才能享用。
6.ColumnStore存儲引擎/ InfiniDB(MariaDB)
MariaDB和MySQL中的可插入式存儲引擎技術(shù)允許兩個數(shù)據(jù)庫都可以極大地擴展原生功能。其中一個存儲引擎ColumnStore將MariaDB變成了列存儲數(shù)據(jù)庫。(ColumnStore不適用于MySQL,但項目ColumnStore源自InfiniDB,使用MySQL來執(zhí)行查詢。)
列存儲是高速查詢大量數(shù)據(jù)的理想選擇。OLAP系統(tǒng)使用列存儲,因此ColumnStore相當于在MariaDB中提供類似OLAP的功能,而不依賴Teradata或Greenplum這樣的外部(通常是商業(yè))產(chǎn)品。ColumnStore并不提供那些產(chǎn)品隨附的一整套開箱即用的分析或數(shù)據(jù)編排功能,但它可以為內(nèi)部分析解決方案提供數(shù)據(jù)層。
7.Spider存儲引擎
功能越強大,就越難部署到生產(chǎn)環(huán)境。數(shù)據(jù)庫分片就是這樣一項功能,該功能將數(shù)據(jù)庫分割到多臺服務(wù)器上以提升性能,這通常需要大量的修改和調(diào)整。
MariaDB 10.3.4(及更高版本)借助Spider這種擁有內(nèi)置分片和數(shù)據(jù)分區(qū)功能的存儲引擎簡化了這項工作。Spider支持幾種不同的模式:簡單聯(lián)合、高可用性、分片以及分片加高可用性。
Spider確實與MariaDB用于負載均衡、代理、故障切換和高可用性的系統(tǒng)MaxScale在功能上有一些重疊。MaxScale的使用范圍比Spider廣泛得多,但如果你想在較一般的部署環(huán)境中充分利用分片功能,Spider很有用。
Spider最初只是MySQL插件,它仍然以這種方式供MySQL用戶使用。兩個版本中的絕大多數(shù)功能都一樣,只有少數(shù)例外。
原文標題:7 MySQL and MariaDB features you don’t want to miss,作者:Serdar Yegulalp
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】