在現代的企業級技術領域中,開源軟體已經成為了一股不可忽視的重要力量。藉助開源運動[1]的東風,湧現除了許多重大的技術突破。
個中原因顯而易見,儘管一些基於 Linux 的開源網路標準可能不如專有廠商的那麼受歡迎,但是不同製造商的智慧裝置之間能夠互相通訊,開源技術功不可沒。當然也有不少人認為開源開發出來的應用比廠商提供的產品更加好,所以無論如何,使用開源資料庫進行開發確實是相當有利的。
和其它型別的應用軟體一樣,不同的開源資料庫管理系統之間在功能和特性上可能會存在著比較大的差異。換言之,不是所有的開源資料庫都是平等的[2]。因此,如果要為整個組織選擇一個開源資料庫,那麼應該重點考察資料庫是否對使用者友好、是否能夠持續適應團隊需求、是否能夠提供足夠安全的功能等方面的因素。
出於這方面考慮,我們在這篇文章中對一些開源資料庫進行了概述和優缺點對比。遺憾的是,我們必須忽略一些最常用的資料庫。值得註意的是,MongoDB 最近更改了它的許可證,因此它已經不是真正的開源產品了。從商業角度來看,這個決定是很有意義的,因為 MongoDB 已經成為了資料庫託管實際上的解決方案,約 27000 家公司[3]在使用它,但這也意味著 MongoDB 已經不再被視為真正的開源產品。
另外,自從 MySQL 被 Oracle 收購之後,這個產品就已經不再具有開源性質了,MySQL 可以說是數十年來首選的開源資料庫。然而,這為其它真正的開源資料庫解決方案提供了挑戰它的空間。
下麵是三個值得考慮的開源資料庫。
PostgreSQL
沒有 PostgreSQL[4] 的開源資料庫清單肯定是不完整的。PostgreSQL 一直都是各種規模企業的首選解決方案。Oracle 對 MySQL 的收購在當時來說可能具有一定的商業意義,但是隨著雲儲存的日益壯大,開發者對 MySQL 的依賴程度或許並不如以前那麼大了[5]。
儘管 PostgreSQL 不是一個最近幾年才面世的新產品,但它卻是藉助了 MySQL 相對衰落[6]的機會才逐漸成為最受歡迎的開源資料庫之一。由於它和 MySQL 的工作方式非常相似,因此很多熱衷於使用開源軟體的開發者都紛紛轉向 PostgreSQL。
優勢
劣勢
MariaDB
MariaDB[7] 是 MySQL 的真正開源的發行版本(在 GNU GPLv2[8] 下釋出)。在 Oracle 收購 MySQL 之後,MySQL 的一些核心開發人員認為 Oracle 會破壞 MySQL 的開源理念,因此建立了 MariaDB 這個獨立的分支。
MariaDB 在開發過程中替換了 MySQL 的幾個關鍵元件,但仍然盡可能地保持相容 MySQL。MariaDB 使用了 Aria 作為儲存引擎,這個儲存引擎既可以作為事務式引擎,也可以作為非事務式引擎。在 MariaDB 分叉出來之前,就有一些人推測[9] Aria 會成為 MySQL 未來版本中的標準引擎。
優勢
劣勢
SQLite
SQLite[13] 可以說是世界上實現最多的資料庫引擎,因為它被很多流行的 web 瀏覽器、作業系統和手機所採用。它最初是作為 MySQL 的輕量級分支所開發的。SQLite 和很多其它的資料庫不同,它不採用客戶端-服務端的引擎架構,而是將整個軟體嵌入到每個實現當中。
這樣的架構讓 SQLite 擁有一個強大的優勢,就是在嵌入式系統或者分散式系統中,每臺機器都搭載了資料庫的整個實現。這樣的做法減少了系統間的呼叫,從而大大提高了資料庫的效能。
優勢
劣勢
哪個開源資料庫才是最好的?
當然,對於開源資料庫的選擇還是取決於業務的需求,尤其是系統的體量。對於小型資料庫或者是使用量比較小的資料庫,可以使用比較輕量級的解決方案,這樣不僅可以加快實現的速度,而且由於系統的複雜程度不算太高,花在除錯上的時間成本也不會太高。
而對於大型的系統,尤其是在成長性企業中,最好還是花時間使用更複雜的資料庫(例如 PostgreSQL)。這是一個磨刀不誤砍柴工的選擇,能夠讓你不至於在後期再重新選擇另一款資料庫。