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