開源資料庫 PostgreSQL、MariaDB 和 SQLite 的對比

2019-02-06 11:05:00

了解如何選擇最適合你的需求的開源資料庫。

在現代的企業級技術領域中,開源軟體已經成為了一股不可忽視的重要力量。借助開源運動open source movement的東風,湧現除了許多重大的技術突破。

箇中原因顯而易見,儘管一些基於 Linux 的開源網路標準可能不如專有廠商的那麼受歡迎,但是不同製造商的智慧裝置之間能夠互相通訊,開源技術功不可沒。當然也有不少人認為開源開發出來的應用比廠商提供的產品更加好,所以無論如何,使用開源資料庫進行開發確實是相當有利的。

和其它型別的應用軟體一樣,不同的開源資料庫管理系統之間在功能和特性上可能會存在著比較大的差異。換言之,不是所有的開源資料庫都是平等的。因此,如果要為整個組織選擇一個開源資料庫,那麼應該重點考察資料庫是否對使用者友好、是否能夠持續適應團隊需求、是否能夠提供足夠安全的功能等方面的因素。

出於這方面考慮,我們在這篇文章中對一些開源資料庫進行了概述和優缺點對比。遺憾的是,我們必須忽略一些最常用的資料庫。值得注意的是,MongoDB 最近更改了它的許可證,因此它已經不是真正的開源產品了。從商業角度來看,這個決定是很有意義的,因為 MongoDB 已經成為了資料庫托管實際上的解決方案,約 27000 家公司在使用它,但這也意味著 MongoDB 已經不再被視為真正的開源產品。

另外,自從 MySQL 被 Oracle 收購之後,這個產品就已經不再具有開源性質了,MySQL 可以說是數十年來首選的開源資料庫。然而,這為其它真正的開源資料庫解決方案提供了挑戰它的空間。

下面是三個值得考慮的開源資料庫。

PostgreSQL

沒有 PostgreSQL 的開源資料庫清單肯定是不完整的。PostgreSQL 一直都是各種規模企業的首選解決方案。Oracle 對 MySQL 的收購在當時來說可能具有一定的商業意義,但是隨著雲端儲存的日益壯大,開發者對 MySQL 的依賴程度或許並不如以前那麼大了

儘管 PostgreSQL 不是一個最近幾年才面世的新產品,但它卻是借助了 MySQL 相對衰落的機會才逐漸成為最受歡迎的開源資料庫之一。由於它和 MySQL 的工作方式非常相似,因此很多熱衷於使用開源軟體的開發者都紛紛轉向 PostgreSQL。

優勢

  • 目前 PostgreSQL 最顯著的優點是它的核心演算法的效率,這意味著它的效能優於許多宣稱更先進資料庫。這一點在處理大型資料集的時候就可以很明顯地體現出來了,否則 I/O 處理會成為瓶頸。
  • PostgreSQL 也是最靈活的開源資料庫之一,使用 Python、Perl、Java、Ruby、C 或者 R 都能夠很方便地呼叫資料庫。
  • 作為最常用的幾個開源資料庫之中,PostgreSQL 的社群支援是做得最好的。

劣勢

  • 在資料量比較大的時候,PostgreSQL 的效率毋庸置疑是很高的,但對於資料量較小的情況,使用 PostgreSQL 就顯得不如其它的一些工具快了。
  • 儘管擁有一個很優秀的社群支援,但 PostgreSQL 的核心文件仍然需要作出改進。
  • 如果你需要使用平行計算或者叢集化等高階工具,就需要安裝 PostgreSQL 的第三方外掛。儘管官方有計劃將這些功能逐步新增到主要版本當中,但可能會需要再等待好幾年才能出現在標準版本中。

MariaDB

MariaDB 是 MySQL 的真正開源的發行版本(在 GNU GPLv2 下發布)。在 Oracle 收購 MySQL 之後,MySQL 的一些核心開發人員認為 Oracle 會破壞 MySQL 的開源理念,因此建立了 MariaDB 這個獨立的分支。

MariaDB 在開發過程中替換了 MySQL 的幾個關鍵元件,但仍然盡可能地保持相容 MySQL。MariaDB 使用了 Aria 作為儲存引擎,這個儲存引擎既可以作為事務式引擎,也可以作為非事務式引擎。在 MariaDB 分叉出來之前,就有一些人推測 Aria 會成為 MySQL 未來版本中的標準引擎。

優勢

  • 由於 MariaDB 頻繁進行安全發布,很多使用者選擇使用 MariaDB 而不選擇 MySQL。儘管這不一定代表 MariaDB 會比 MySQL 更加安全,但確實表明它的開發社群對安全性十分重視。
  • 有一些人認為,MariaDB 的主要優點就是它在堅持開源的同時會與 MySQL 保持高度相容,這就意味著從 MySQL 向 MariaDB 的遷移會非常容易。
  • 也正是由於這種相容性,MariaDB 也可以和其它常用於 MySQL 的語言配合使用,因此從 MySQL 遷移到 MariaDB 之後,學習和偵錯程式碼的時間成本會非常低。
  • 你可以將 WordPress 和 MariaDB(而不是 MySQL)配合使用從而獲得更好的效能和更豐富的功能。WordPress 是最受歡迎的內容管理系統Content Management System(CMS),佔據了一半的網際網路份額,並且擁有活躍的開源開發者社群。各種第三方外掛在 WordPress 和 MariaDB 配合使用時都能夠正常工作。

劣勢

  • MariaDB 有時會變得比較臃腫,尤其是它的 IDX 紀錄檔檔案在長期使用之後會變得非常大,最終導致效能下降。
  • 快取是 MariaDB 的另一個工作領域,並沒有期望中那麼快,這可能會讓人有所失望。
  • 儘管 MariaDB 最初承諾相容 MySQL,但目前 MariaDB 已經不是完全相容 MySQL。如果要從 MySQL 遷移到 MariaDB,就需要額外做一些相容工作。

SQLite

SQLite 可以說是世界上實現最多的資料庫引擎,因為它被很多流行的 web 瀏覽器、作業系統和手機所採用。它最初是作為 MySQL 的輕量級分支所開發的。SQLite 和很多其它的資料庫不同,它不採用用戶端-伺服器端的引擎架構,而是將整個軟體嵌入到每個實現當中。

這樣的架構讓 SQLite 擁有一個強大的優勢,就是在嵌入式系統或者分散式系統中,每台機器都搭載了資料庫的整個實現。這樣的做法減少了系統間的呼叫,從而大大提高了資料庫的效能。

優勢

  • 如果你需要構建和實現一個小型資料庫,SQLite 可能是最好的選擇。它小而靈活,不需要費工夫尋求各種變通方案,就可以在嵌入式系統中實現。
  • SQLite 體積很小,因此速度極快。其它的一些高階資料庫可能會使用複雜的優化方式來提高效率,但SQLite 採用了一種更簡單的方法:通過減小資料庫及其處理軟體的大小,以使處理的資料更少。
  • SQLite 被廣泛採用也導致它可能是相容性最高的資料庫。如果你希望將應用程式整合到智慧手機上,這一點尤為重要:只要是可以工作於廣泛環境中的第三方應用程式,就可以原生執行於 iOS 上。

劣勢

  • SQLite 的體積小意味著它缺少了很多其它大型資料庫的常見功能。例如資料加密就是抵禦駭客攻擊的標準功能,而 SQLite 卻沒有內建這個功能。
  • SQLite 的廣泛流行和原始碼公開使它易於使用,但是也讓它更容易遭受攻擊。這是它最大的劣勢。SQLite 經常被發現高危的漏洞,例如最近的 Magellan
  • 儘管 SQLite 單檔案的方式擁有速度上的優勢,但是要使用它實現多使用者環境卻比較困難。

哪個開源資料庫才是最好的?

當然,對於開源資料庫的選擇還是取決於業務的需求,尤其是系統的體量。對於小型資料庫或者是使用量比較小的資料庫,可以使用比較輕量級的解決方案,這樣不僅可以加快實現的速度,而且由於系統的複雜程度不算太高,花在偵錯上的時間成本也不會太高。

而對於大型的系統,尤其是在成長性企業中,最好還是花時間使用更複雜的資料庫(例如 PostgreSQL)。這是一個磨刀不誤砍柴工的選擇,能夠讓你不至於在後期再重新選擇另一款資料庫。