MySQL和Microsoft SQL Server關(guān)系型數(shù)據(jù)庫(kù)各有利弊,我們?cè)谶x擇時(shí)需要考慮SQL服務(wù)器和MySQL在特性,成本,功能以及其他方面的差異。
SQL服務(wù)器和MySQL是當(dāng)下市場(chǎng)上兩個(gè)最流行的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。雖然它們并沒(méi)有明顯的差距,但在某些情況下,使用微軟的RDBMS可能是比使用甲骨文的MySQL更好的選擇,而相反的情況也一樣存在。
例如,MySQL在多平臺(tái)環(huán)境中是一個(gè)很好的選擇,因?yàn)樗瑫r(shí)適用于Microsoft Windows、UNIX和Linux等操作系統(tǒng)。另一方面對(duì)于Windows用戶,當(dāng)他們需要執(zhí)行深度分析,或?qū)⒐ぷ髫?fù)載遷移到Azure云時(shí),SQL Server將會(huì)是是更好的選擇。
讓我們來(lái)橫向?qū)Ρ纫幌耂QL服務(wù)器和MySQL,主要考量的方面包括功能、定價(jià)、合規(guī)和其他關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)需要考慮的問(wèn)題,以幫助你根據(jù)工作負(fù)載做出最佳的選擇。
Microsoft SQL Server功能和定價(jià)
最新的版本的微軟RDBMS是SQL Server 2016,于今年6月份發(fā)布。微軟提供了四種不同版本的SQL Server 2016,外加上一個(gè)供虛擬主機(jī)應(yīng)商使用的web版本。Express 和Developer這兩個(gè)版本是免費(fèi)的。SQL Server Express Edition是一個(gè)輕量級(jí)的數(shù)據(jù)庫(kù),可以存儲(chǔ)大約10 GB的數(shù)據(jù),而Developer Edition只授權(quán)作為開(kāi)發(fā)和測(cè)試環(huán)境使用。
其他SQL Server版本包括Enterprise,Standard和Web版。Enterprise Edition配備了全套的特性,適合于充當(dāng)任務(wù)關(guān)鍵型數(shù)據(jù)庫(kù)的角色,它能夠高效地處理高級(jí)分析工作負(fù)載,而Standard Edition相對(duì)于Enterprise Edition,功能有所削減,適用于相對(duì)較小規(guī)模的生產(chǎn)環(huán)境。Web Edition則可以通過(guò)公共網(wǎng)站訪問(wèn),第三方托管服務(wù)提供商使用該版本向購(gòu)買者提供服務(wù),根據(jù)服務(wù)具體情況設(shè)置相應(yīng)的價(jià)格。
微軟根據(jù)用戶使用的核心數(shù)量為Standard和Enterprise版授權(quán)許可。和其他技術(shù)一樣,許可成本包括許多因素,比如數(shù)量折扣。根據(jù)規(guī)定,雙核芯的SQL Server 2016 Enterprise Edition許可需要14256美元,而雙核芯的Standard Edition 版許可證為3717美元。此外,你還需要為每個(gè)連接到SQL Server的用戶或設(shè)備購(gòu)買客戶端訪問(wèn)許可證(CAL)。其標(biāo)價(jià)是每個(gè)用戶或設(shè)備209美元。
Oracle MySQL 功能與定價(jià)
Sun Microsystems公司于2008年從原開(kāi)發(fā)者M(jìn)ySQL AB那里收購(gòu)了MySQL,甲骨文在2010年收購(gòu)Sun Microsystems公司,成為MySQL技術(shù)如今的持有者。MySQL數(shù)據(jù)庫(kù)現(xiàn)在的版本是5.7,既可以作為商用RDBMS也可以作為一個(gè)開(kāi)源的數(shù)據(jù)庫(kù)。MySQL有三個(gè)主要的版本: MySQL Standard Edition,MySQL Enterprise Edition 和MySQL Cluster Carrier Grade Edition (CGE).。
其他版本還包括MySQL Classic,一個(gè)嵌入式數(shù)據(jù)庫(kù),適用于只有獨(dú)立軟件供應(yīng)商或OEM。MySQL Community Edition,是MySQL數(shù)據(jù)庫(kù)的開(kāi)源版本,可以通過(guò)GNU獲得公共許可。不過(guò),MySQL三個(gè)主要的版本,包括管理工具,都需要獲得甲骨文的商業(yè)許可才可以使用。
商業(yè)MySQL許可可以按需訂閱,根據(jù)MySQL版本,通信套接字?jǐn)?shù)目以及訂閱長(zhǎng)度的不同,其價(jià)格浮動(dòng)會(huì)很大。例如,MySQL Standard Edition(1到4個(gè)套接字)許可價(jià)格為2000美元一年,而MySQL Enterprise Edition(1到4套接字)的許可為5000美元一年。MySQL Cluster CGE(5個(gè)或更多套接字服務(wù)器),訂閱一年的價(jià)格為20000美元。
SQL Server與MySQL的對(duì)比:性能和可伸縮性
MySQL數(shù)據(jù)庫(kù)一度被低估,人們認(rèn)為它對(duì)其他數(shù)據(jù)庫(kù)競(jìng)爭(zhēng)起來(lái)沒(méi)有優(yōu)勢(shì)。然而如今,MySQL已經(jīng)成為一個(gè)成熟且功能齊全的數(shù)據(jù)庫(kù),很多知名企業(yè)都在使用MySQL數(shù)據(jù)庫(kù)。
MySQL十分重視數(shù)據(jù)庫(kù)的可伸縮性和性能。MySQL數(shù)據(jù)庫(kù)可以很容易地?cái)U(kuò)展到TB級(jí)別的數(shù)據(jù)庫(kù),并且可以被持續(xù)優(yōu)化,以處理高速事務(wù)性工作負(fù)載甚至每天十億查詢規(guī)模的工作負(fù)載。MySQL內(nèi)置了一些功能,比如內(nèi)存表,b -樹(shù)索引和散列索引,這些功能保證了其具有很好的性能和靈活的可伸縮性。
與其他企業(yè)級(jí)數(shù)據(jù)庫(kù)一樣,MySQL也具備高可用性的設(shè)計(jì)。MySQL RDBMS可以配置故障轉(zhuǎn)移集群,同時(shí)還支持高速?gòu)?fù)制。第三方供應(yīng)商會(huì)向用戶提供一些MySQL的高可用性選項(xiàng)。
隨著時(shí)間的推移,微軟的SQL Server取得了很大的發(fā)展,SQL Server 2016與SQL Server 90年代初的版本有著巨大的差別。 和MySQL一樣,SQL Server也具備高可用性,可以處理巨大的,要求非常嚴(yán)格的工作負(fù)載。
SQL Server 2016包括擴(kuò)展高可用性,并對(duì)memory-optimized表設(shè)計(jì)進(jìn)行了改進(jìn),以獲得更快的性能和更高的可伸縮性。這對(duì)那些使用數(shù)據(jù)庫(kù)內(nèi)存OLTP功能的應(yīng)用來(lái)說(shuō)是非常有用的。不過(guò),SQL Server的可伸縮性、性能和可用性特性早在SQL Server 2016以前的版本就已存在。因此,SQL Server 2016上的大多數(shù)新功能重點(diǎn)是商業(yè)智能、安全、云可移植性等方面。
例如, Stretch Database的功能允許用戶將不經(jīng)常訪問(wèn)的數(shù)據(jù)存儲(chǔ)在微軟Azure云上,進(jìn)而降低成本,同時(shí)仍然保持?jǐn)?shù)據(jù)可被查詢。分析功能方面的改進(jìn)包括支持R語(yǔ)言編程和對(duì)PolyBase的全面整合,PolyBase允許用戶查詢存儲(chǔ)在Hadoop集群和Azure BLOB存儲(chǔ)中的數(shù)據(jù)。
SQL Server 2016引入的兩個(gè)更加引人注目的安全特性是列層級(jí)安全性
和Always Encrypted,它們會(huì)在數(shù)據(jù)閑置或運(yùn)輸過(guò)程中對(duì)數(shù)據(jù)進(jìn)行加密,防止未經(jīng)授權(quán)的用戶訪問(wèn)敏感數(shù)據(jù)。
SQL Server與MySQL 在實(shí)現(xiàn)方面的對(duì)比
SQL Server 和MySQL都支持SQL,關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言,但其都對(duì)SQL都有各自的擴(kuò)展。另一個(gè)在選擇時(shí)需要著重考慮的因素是對(duì)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)標(biāo)準(zhǔn)的兼容性。SQL標(biāo)準(zhǔn)自1986年制定以來(lái),一直在處于持續(xù)發(fā)展中。
MySQL支持當(dāng)前的SQL標(biāo)準(zhǔn),其Open Database Connectivity級(jí)別為 0到3.51。此外,MySQL可以實(shí)現(xiàn)不同SQL模式下的操作,包括ANSI、STRICT TRANS TABLES和TRADITIONAL。值得注意的是,MySQL通過(guò)使用一系列的擴(kuò)展來(lái)增強(qiáng)SQL Server標(biāo)準(zhǔn)。因此,要將一個(gè)MySQL的應(yīng)用程序移植到Microsoft SQL Server,或者其他SQL數(shù)據(jù)庫(kù)引擎,需要完成大量工作。
相比之下,微軟并沒(méi)有公開(kāi)表明SQL Server支持行業(yè)標(biāo)準(zhǔn)的程度。SQL Server包含了兼容性設(shè)置,它允許一個(gè)數(shù)據(jù)庫(kù)實(shí)例向后兼容以前版本的SQL Server。微軟還在SQL Server 2016上支持了云可移植性,為用戶提供一個(gè)一致性的體驗(yàn),無(wú)論SQL服務(wù)器安置在數(shù)據(jù)中心或云端,或者在兩個(gè)上面都有。
此外,微軟計(jì)劃在2017年支持Linux系統(tǒng)上運(yùn)行SQL Server,這是微軟首次在Windows系統(tǒng)外支持SQL Server—至少在某種程度上,這可能會(huì)削弱MySQL在多平臺(tái)上的優(yōu)勢(shì)。