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