PSQL VS MySQL 如何選擇開源數(shù)據(jù)庫(kù)
導(dǎo)讀:一談到PostgreSQL和MySQL的比較,總會(huì)讓雙方支持陣營(yíng)騷動(dòng)和興奮,它們都是技術(shù)過硬,安裝基礎(chǔ)很好的開源數(shù)據(jù)庫(kù),在現(xiàn)實(shí)中工作中,要選擇一個(gè)占絕對(duì)優(yōu)勢(shì)的開源數(shù)據(jù)庫(kù)基本上是不靠譜的,不管是PostgreSQL還是MySQL,都不能聲稱自己比對(duì)方更優(yōu)秀,對(duì)用戶來說,只有合適的,沒有最優(yōu)秀的。所以在選擇開源數(shù)據(jù)庫(kù)時(shí)一定要挑選一款適合自己的,滿足自己需求的開源數(shù)據(jù)庫(kù),而不要一味是去追求別人說好的開源數(shù)據(jù)庫(kù)。
當(dāng)人們了解了每一種產(chǎn)品的優(yōu)勢(shì)后,要做出斬釘截鐵的選擇就很容易了,為了準(zhǔn)確評(píng)價(jià)PostgreSQL和MySQL各自的優(yōu)勢(shì),我們從雙方的歷史談起,然后介紹一下它們的功能和性能特點(diǎn),最后介紹一個(gè)成功的企業(yè)級(jí)數(shù)據(jù)庫(kù)部署都有哪些要求。
歷史對(duì)比
PostgreSQL社區(qū)是同類數(shù)據(jù)庫(kù)歷史最悠久,規(guī)模最大,發(fā)展最快的社區(qū),PostgreSQL起源于1985年加州伯克利大學(xué)的Ingress項(xiàng)目,在學(xué)術(shù)界流行多年后,PostgreSQL項(xiàng)目開源了,社區(qū)開始蓬勃發(fā)展,截至目前,有超過1000名貢獻(xiàn)者和3萬名成員。
大社區(qū)的關(guān)鍵優(yōu)勢(shì)在于用戶和開發(fā)者之間的互動(dòng)比較頻繁,用戶甚至可以直接參與到新功能的設(shè)計(jì)中,這種多元化的社區(qū)模式也是其它開源社區(qū)爭(zhēng)相模仿的模式。
MySQL社區(qū)最初起源于商業(yè)世界,MySQL于1994年誕生在瑞典,作為網(wǎng)站背后的高速數(shù)據(jù)庫(kù),在MySQL AB公司控制幾年后,MySQL也選擇了開源,有商業(yè)公司的支持使得MySQL很快便成為世界上廣泛使用的數(shù)據(jù)庫(kù)之一,這也是Sun公司2008年花10億美元重金收購(gòu)MySQL AB的原因,因?yàn)镸ySQL的流行,也成為歐盟調(diào)查Oracle收購(gòu)Sun一案的主要因素。
PostgreSQL特性和功能
通過數(shù)十年的發(fā)展,PostgreSQL被譽(yù)為市場(chǎng)上最先進(jìn)的開源數(shù)據(jù)庫(kù),作為一個(gè)功能全面的開源關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),PostgreSQL在支持高事務(wù),關(guān)鍵任務(wù)應(yīng)用方面提供了許多特性。
PostgreSQL最核心的競(jìng)爭(zhēng)力是對(duì)它保管的數(shù)據(jù)的安全保護(hù)能力,通過使用企業(yè)身份驗(yàn)證機(jī)制,如LDAP或Kerberos控制數(shù)據(jù)庫(kù)的連接訪問,一單通過驗(yàn)證,所有到數(shù)據(jù)庫(kù)的通信都可以走SSL連接,提供了高度安全的保護(hù)。
添加或修改數(shù)據(jù)時(shí),PostgreSQL強(qiáng)制執(zhí)行用戶定義的大量約束,確保數(shù)據(jù)質(zhì)量符合業(yè)務(wù)規(guī)則限制,從簡(jiǎn)單的范圍檢查到復(fù)雜的外鍵檢查,一旦數(shù)據(jù)存儲(chǔ)到磁盤上,就可以進(jìn)行備份,更重要的是,從災(zāi)難恢復(fù)是至關(guān)重要的,PostgreSQL有一個(gè)簡(jiǎn)單的在線備份工具,配合時(shí)間點(diǎn)恢復(fù)(PITR)機(jī)制,為管理員執(zhí)行快速恢復(fù)提供了很好的靈活性。
PostgreSQL的核心架構(gòu)允許其他社區(qū)小組通過附加模塊的形式為PostgreSQL創(chuàng)建更高級(jí)的功能,一個(gè)很好的例子就是PostgreSQL的地理空間支持,此功能來自一個(gè)名為PostGIS的模塊,它是PostgreSQL的一個(gè)簡(jiǎn)單擴(kuò)展,使其成為最強(qiáng)大的可保存空間數(shù)據(jù)的開源或商業(yè)數(shù)據(jù)庫(kù)。
PostgreSQL另一個(gè)擴(kuò)展能力是它具有多種不同類型的存儲(chǔ)過程語(yǔ)言,允許開發(fā)人員使用他們熟悉的語(yǔ)言編寫服務(wù)器端代碼,例如,需要執(zhí)行復(fù)雜文本處理的觸發(fā)器可以用Perl編寫,以便利用其強(qiáng)大的正則表達(dá)式功能。
MySQL特性和功能
MySQL被譽(yù)為是最流行的開源數(shù)據(jù)庫(kù),從一開始,MySQL就被設(shè)計(jì)為適合網(wǎng)站快速順序索引方法(ISAM)的數(shù)據(jù)存儲(chǔ)引擎,這種工作負(fù)載的一大特點(diǎn)就是有許多小型查詢,于是催生了查詢緩存,MySQL集群等提高M(jìn)ySQL性能的技術(shù),MySQL集群允許數(shù)據(jù)庫(kù)跨多臺(tái)物理服務(wù)器部署,實(shí)現(xiàn)負(fù)載均衡。
PostgreSQL不是唯一允許通過外部擴(kuò)展增加數(shù)據(jù)庫(kù)功能的開源數(shù)據(jù)庫(kù),MySQL最大的優(yōu)勢(shì)之一就是它的可插入式存儲(chǔ)引擎,MySQL默認(rèn)采用的是MyISAM存儲(chǔ)引擎,為讀操作頻繁的環(huán)境提供更好的性能,而InnoDB存儲(chǔ)引擎更適合寫密集型事務(wù)環(huán)境。
此外,還有許多第三方存儲(chǔ)引擎,如Brighthouse和DB2,這種靈活性允許管理員根據(jù)每個(gè)表的需求調(diào)整MySQL實(shí)例,例如,對(duì)一個(gè)讀操作頻繁的表,如國(guó)家代碼表,使用MyISAM存儲(chǔ)引擎,對(duì)于事務(wù)型表,如銷售訂單表,則使用InnoDB存儲(chǔ)引擎。
PostgreSQL和MySQL在各種應(yīng)用場(chǎng)合都得到了廣泛的使用,例如,PostgreSQL一向以強(qiáng)力支撐事務(wù)密集型企業(yè)應(yīng)用而著名,但許多網(wǎng)站也用它來支撐Web應(yīng)用程序,相反,MySQL一直都是Web應(yīng)用程序的首選數(shù)據(jù)庫(kù),但它在事務(wù)型企業(yè)應(yīng)用系統(tǒng)中也得到了大量使用。
社區(qū)為王
PostgreSQL和MySQL最大的不同可能不在技術(shù),而是在社區(qū)上,開源項(xiàng)目從本質(zhì)上來講,要由社區(qū)開發(fā)人員參與和貢獻(xiàn),項(xiàng)目才能保持活力,開源社區(qū)有兩種不同的類型。
首先,有獨(dú)立自主社區(qū)型純開源數(shù)據(jù)庫(kù)項(xiàng)目,PostgreSQL是這種最古老,最大的獨(dú)立開源數(shù)據(jù)庫(kù)社區(qū),這種社區(qū)的好處是真正獨(dú)立于廠商,不受廠商控制。
第二種開源社區(qū)是由廠商控制的,這種開源項(xiàng)目往往同時(shí)有社區(qū)免費(fèi)版和商業(yè)付費(fèi)版,MySQL就是一個(gè)例子,MySQL項(xiàng)目最初是由MySQL AB資助和控制的,所有MySQL核心開發(fā)人員和架構(gòu)師都由MySQL AB出資雇傭,被Sun收購(gòu)后,MySQL社區(qū)就被Sun控制,現(xiàn)在又被Oracle控制。
共享許可
許可,或源代碼允許如何修改和共享,這可能是真正影響開源數(shù)據(jù)庫(kù)選擇的決定性因素,PostgreSQL許可是仿照BSD許可模式的,它允許修改代碼,并根據(jù)修改者自愿是否以開源形式再發(fā)布,這種開放式許可對(duì)想使用PostgreSQL作為他們解決方案一部分的軟件廠商來說是最理想的,因?yàn)镻ostgreSQL許可不強(qiáng)制衍生解決方案也開源,軟件廠商可以選擇開放他們的源碼,也可以不開放。
MySQL是通過GNU GPL共享,并由Oracle控制,GNU GPL更加開放,它鼓勵(lì)免費(fèi)共享代碼,它防止了采用GNU GPL共享的代碼后,也被迫采用源作者GNU GPL許可共享的缺陷。
小結(jié)
以上總結(jié)的PostgreSQL和MySQL的各自特點(diǎn),大家以后再選擇開源數(shù)據(jù)庫(kù)時(shí)這些特點(diǎn)可以作為參考。雖然PostgreSQL和MySQL同屬開源數(shù)據(jù)庫(kù),但相同點(diǎn)也可能僅限于此,重疊的地方很少,它們都有自己鮮明的特性,相對(duì)于昂貴的專有數(shù)據(jù)庫(kù)產(chǎn)品,它們都是高品質(zhì)的開源數(shù)據(jù)庫(kù),尤其是在當(dāng)今經(jīng)濟(jì)不景氣的環(huán)境下,選擇優(yōu)秀的開源數(shù)據(jù)庫(kù)不失為為企業(yè)節(jié)省成本的一種好方法,不但如此,選擇了適合的開源數(shù)據(jù)庫(kù)也會(huì)提高工作效率,加快企業(yè)的發(fā)展。
【編輯推薦】