Oracle 已經(jīng)發(fā)布了他們的開源關(guān)系數(shù)據(jù)庫管理系統(tǒng) MySQL 8。這個(gè)版本引入了許多改進(jìn),最受關(guān)注的可能是基于文檔的存儲(chǔ),開發(fā)人員可以在同一個(gè)數(shù)據(jù)庫中使用傳統(tǒng)關(guān)系數(shù)據(jù)和“NoSQL”文檔數(shù)據(jù)。該版本還提升了性能,增強(qiáng)了安全性,并改變了默認(rèn)字符集以促進(jìn)“移動(dòng)優(yōu)先”開發(fā)。
MySQL 在 MySQL 5.7 中引入了對(duì) JSON 的支持,現(xiàn)在在 8.0 里帶來了 MySQL 文檔存儲(chǔ),開發(fā)人員可以將無模式 JSON 文檔集合與關(guān)系表放在一起使用。MySQL 文檔存儲(chǔ)由一系列技術(shù)組成,一個(gè)新的客戶端協(xié)議、X 協(xié)議以及讓 MySQL 服務(wù)器能夠使用 X 協(xié)議的 X 插件。新的 X DevAPI 是一組異步 API,用于在 X 協(xié)議上執(zhí)行 CRUD 和 SQL 操作。MySQL 連接器是一組驅(qū)動(dòng)程序,開發(fā)人員可以基于驅(qū)動(dòng)程序使用 Java、Python、Node、.Net 和 C ++ 等主流開發(fā)語言來調(diào)用 API 和文檔存儲(chǔ)。文檔存儲(chǔ)中還有一個(gè) MySQL Shell,提供了交互式的 Javascript、Python 或 SQL 接口來支持 MySQL 服務(wù)器的開發(fā)和管理。
Geir Høydalsvik 自 2008 年以來一直在 MySQL 數(shù)據(jù)庫團(tuán)隊(duì)中工作,他告訴 InfoQ:“文檔存儲(chǔ)和關(guān)系數(shù)據(jù)庫的結(jié)合是一個(gè)關(guān)鍵特性。用戶現(xiàn)在可以擁有一個(gè)堅(jiān)實(shí)的數(shù)據(jù)庫系統(tǒng),可以同時(shí)服務(wù)于 SQL 和 NoSQL”。
MySQL 并不是開源領(lǐng)域中***個(gè)支持關(guān)系數(shù)據(jù)和基于文檔數(shù)據(jù)的數(shù)據(jù)庫,比如 PostgreSQL 已經(jīng)推出該特性一段時(shí)間了。
與之前的版本相比,MySQL 8.0 還帶來了顯著的性能改進(jìn)。發(fā)行說明指出,MySQL 8.0 速度是 5.7 的兩倍。基準(zhǔn)測(cè)試數(shù)據(jù)顯示,在以每秒查詢數(shù)量作為衡量手段的情況下,隨著用戶數(shù)量的增加,性能出現(xiàn)差異?;鶞?zhǔn)測(cè)試數(shù)據(jù)還顯示,MySQL 8 實(shí)現(xiàn)了每秒高達(dá) 180 萬次查詢的新紀(jì)錄。數(shù)據(jù)字典元數(shù)據(jù)的整合提高了可靠性,這些元數(shù)據(jù)之前以多種文件格式進(jìn)行存儲(chǔ),并存儲(chǔ)在多個(gè)位置,現(xiàn)在則存儲(chǔ)在一組 SQL 表中,并使用默認(rèn)的 InnoDB 存儲(chǔ)引擎。
MySQL 8 帶來了多項(xiàng)安全性改進(jìn),其中之一引入了 SQL 角色。與大多數(shù)應(yīng)用程序一樣,MySQL 8 中的角色代表一個(gè)指定的授權(quán)集合。現(xiàn)在可以在單個(gè)會(huì)話中創(chuàng)建、授予、刪除和應(yīng)用 MySQL 角色。數(shù)據(jù)庫還提供了一個(gè)新的 SQL 函數(shù) ROLES_GRAPHML(),它返回一個(gè)代表角色子圖的 graphml 文檔。另一個(gè)安全增強(qiáng)是對(duì)密碼重用的限制。MySQL 已經(jīng)支持密碼過期策略,該策略強(qiáng)制要求用戶在一段時(shí)間之后更改密碼,而新版本可以控制用戶設(shè)置的密碼是否有效。這限制了密碼重用,從而強(qiáng)制用戶在每次更改密碼時(shí)提供新的增強(qiáng)密碼。
默認(rèn)字符集已從 latin-1 改為 utf8mb4。在移動(dòng)世界中,emojis 和各種各樣的字符集需要共存,Unicode/UTF-8 編碼已經(jīng)變得無處不在,所以做出了這一變化。由于性能原因,以前的 utf8mb3 已被棄用。
移動(dòng)應(yīng)用的特征之一是使用用戶的位置來提供內(nèi)容,MySQL 8.0 基于現(xiàn)有的 GIS 支持,引入了地理和空間參考系統(tǒng)(SRS)。