MySQL與PostgreSQL比較哪個資料庫更好?

來源:互聯網
上載者:User

   如果打算為項目選擇一款免費、開源的資料庫,那麼你可能會在MySQL與PostgreSQL之間猶豫不定。MySQL與PostgreSQL都是免費、開源、強大、且功能豐富的資料庫。你主要的問題可能是:哪一個才是最好的開來源資料庫,MySQL還是PostgreSQL呢?該選擇哪一個開來源資料庫呢?

  在選擇資料庫時,你所做的是個長期的決策,因為後面如果再改變決定將是非常困難且代價高昂的。你希望一開始就選擇正確。兩個流行的開來源資料庫MySQL與PostgreSQL常常成為最後要選擇的產品。對這兩個開來源資料庫的高層次概覽將會有助於你選擇最適合自己需要的。

  MySQL

  MySQL相對來說比較年輕,首度出現在1994年。它聲稱自己是最流行的開來源資料庫。MySQL就是LAMP(用於Web開發的軟體包,包括 Linux、Apache及Perl/PHP/Python)中的M。構建在LAMP棧之上的大多數應用都會使用MySQL,包括那些知名的應用,如 WordPress、Drupal、Zend及phpBB等。

  一開始,MySQL的設計目標是成為一個快速的Web伺服器後端,使用快速的索引序列存取方法(ISAM),不支援ACID。經過早期快速的發展之 後,MySQL開始支援更多的儲存引擎,並通過InnoDB引擎實現了ACID。MySQL還支援其他儲存引擎,提供了暫存資料表的功能(使用MEMORY存 儲引擎),通過MyISAM引擎實現了高速讀的資料庫,此外還有其他的核心儲存引擎與第三方引擎。

  MySQL的文檔非常豐富,有很多品質不錯的免費參考手冊、圖書與線上文檔,還有來自於Oracle和第三方廠商的培訓與支援。

  MySQL近幾年經曆了所有權的變更和一些頗具戲劇性的事件。它最初是由MySQL AB開發的,然後在2008年以10億美金的價格賣給了Sun公司,Sun公司又在2010年被Oracle收購。Oracle支援MySQL的多個版 本:Standard、Enterprise、Classic、Cluster、Embedded與Community。其中有一些是免費下載的,另外一 些則是收費的。其核心代碼基於GPL許可,對於那些不想使用GPL許可的開發人員與廠商來說還有商業許可可供使用。

  現在,基於最初的MySQL代碼還有更多的資料庫可供選擇,因為幾個核心的MySQL開發人員已經發布了MySQL分支。最初的MySQL建立者之一 Michael "Monty" Widenius貌似後悔將MySQL賣給了Sun公司,於是又開發了他自己的MySQL分支MariaDB,它是免費的,基於GPL許可。知名的 MySQL開發人員Brian Aker所建立的分支Drizzle對其進行了大量的改寫,特別針對多CPU、雲、網路應用與高並發進行了最佳化。

  PostgreSQL

  PostgreSQL標榜自己是世界上最先進的開來源資料庫。PostgreSQL的一些粉絲說它能與Oracle相媲美,而且沒有那麼昂貴的價格和傲慢的客服。它擁有很長的曆史,最初是1985年在加利福尼亞大學伯克利分校開發的,作為Ingres資料庫的後繼。

  PostgreSQL是完全由社區驅動的開源項目,由全世界超過1000名貢獻者所維護。它提供了單個完整功能的版本,而不像MySQL那樣提供了 多個不同的社區版、商業版與企業版。PostgreSQL基於自由的BSD/MIT許可,組織可以使用、複製、修改和重新分發代碼,只需要提供一個著作權聲 明即可。

  可靠性是PostgreSQL的最高優先順序。它以堅如磐石的品質和良好的工程化而聞名,支援高事務、任務關鍵型應用。PostgreSQL的文檔非 常精良,提供了大量免費的線上手冊,還針對舊版本提供了歸檔的參考手冊。PostgreSQL的社區支援是非常棒的,還有來自於獨立廠商的商業支援。

  資料一致性與完整性也是PostgreSQL的高優先順序特性。PostgreSQL是完全支援ACID特性的,它對於資料庫訪問提供了強大的安全性 保證,充分利用了企業安全工具,如Kerberos與OpenSSL等。你可以定義自己的檢查,根據自己的商務規則確保資料品質。在眾多的管理特性 中,point-in-time recovery(PITR)是非常棒的特性,這是個靈活的高可用特性,提供了諸如針對失敗恢複建立熱備份以及快照與恢複的能力。但這並不是 PostgreSQL的全部,項目還提供了幾個方法來管理PostgreSQL以實現高可用、負載平衡與複製等,這樣你就可以使用適合自己特定需求的功能 了。

  平台

  MySQL與PostgreSQL都出現在一些高流量的Web網站上:

  MySQL:Slashdot、Twitter、Facebook與Wikipedia

  PostgreSQL:Yahoo使用了一個修改的PostgreSQL資料庫來處理每天數以億計的事件,還有Reddit和Disqus

  MySQL與PostgreSQL都能運行在多個作業系統上,如Linux、Unix、Mac OS X與Windows。他們都是開源、免費的,因此測試他們時的唯一代價就是你的時間與硬體。他們都很靈活且具有延展性,可用在小型系統和大型分布式系統 上。MySQL在一個領域上要比PostgreSQL更進一步,那就是它的觸角延伸到了嵌入式領域,這是通過libmysqld實現的。 PostgreSQL不支援嵌入式應用,依然堅守在傳統的用戶端/伺服器架構上。

  MySQL通常被認為是針對網站與應用的快速資料庫後端,能夠進行快速的讀取和大量的查詢操作,不過在複雜特性與資料完整性檢查方面不太盡如人意。 PostgreSQL是針對事務型公司專屬應用程式的嚴肅、功能完善的資料庫,支援強ACID特性和很多資料完整性檢查。他們二者都在某些任務上具有很快的速 度,MySQL不同儲存引擎的行為有較大差別。MyISAM引擎是最快的,因為它只執行很少的資料完整性檢查,適合於後端讀操作較多的網站,不過對於包含 敏感性資料的讀/寫資料庫來說就是個災難了,因為MyISAM表最終可能會損壞。MySQL提供了修複MySQL表的工具,不過對于敏感資料來說,支援 ACID特性的InnoDB則是個更好的選擇。

  與之相反,PostgreSQL則是個只有單一儲存引擎的完全整合的資料庫。你可以通過調整postgresql.conf檔案的參數來改進效能,也可以調整查詢與事務。PostgreSQL文檔對於效能調優提供了非常詳盡的介紹。

  MySQL與PostgreSQL都是高可配置的,並且可以針對不同的任務進行相應的最佳化。他們都支援通過擴充來添加額外的功能。

  一個常見的誤解就是MySQL要比PostgreSQL更容易學習。關聯式資料庫系統都是非常複雜的,這兩個資料庫的學習曲線其實是差不多的。

  標準相容性

  PostgreSQL旨在實現SQL相容性(當前標準是ANSI-SQL:2008)。MySQL則相容大部分SQL,不過還有自己的擴充,可以支 持NoSQL特性,這在參考手冊中都有介紹。每種方式都有優缺點。相容標準會讓資料庫管理員、資料庫開發人員與應用開發人員更舒服一些,因為這意味著他們只需 學習一套標準、一套特性和命令即可。這會節省時間,提升效率,也不會被鎖定在特定的廠商上。

  支援使用非標準的自訂功能的人們認為這樣可以快速採用新的特性,而不必等待標準進程完成。ANSI/ISO標準在不斷演化,因此標準相容性也是個 變化的目標:知名的關係型資料庫Microsoft SQL Server、Oracle與IBM DB2也只是部分相容於標準。

  結論

  雖然有不同的曆史、引擎與工具,不過並沒有明確的參考能夠表明這兩個資料庫哪一個能夠適用於所有情況。很多組織喜歡使用PostgreSQL,因為 它的可靠性好,在保護資料方面很擅長,而且是個社區項目,不會陷入廠商的牢籠之中。MySQL更加靈活,提供了更多選項來針對不同的任務進行裁剪。很多時 候,對於一個組織來說,對某個軟體使用的熟練程度要位元性上的原因更重要。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.