2025年1月2日 星期四

12個值得考慮的頂尖開放原始碼資料庫 文/Sean Michael Kerner



資料庫是現代IT的基礎 -- 無論是傳統的內部部署資料庫,還是新興的雲端資料庫,都有助於各種應用程式的開發。一開始,資料庫市場由單一廠商擁有的專有技術主導。這些產品現在仍被廣泛使用,但開放原始碼資料庫也漸漸獲得不少用戶。

開放原始碼軟體為用戶組織提供了開放可用的原始碼,通常是透過社群開發的。目的是擴大參與開發過程的人數,不被特定廠商的技術所束縛。開放原始碼資料庫使用量的增加,部分是由於Linux和雲端系統的興起,它們通常依賴開放原始碼作業系統。同時也得益於NoSQL資料庫的出現,其中許多遵循或符合開放原始碼模型。

什麼是開放原始碼資料庫?


開放原始碼資料庫是在開放原始碼授權下開發和發布的。雖然開放原始碼有時被用作一個行銷術語,但在軟體授權方面有非常具體的定義。要成為真正的開放原始碼技術,資料庫需要使用由開放原始碼促進會(OSI)批准的授權。OSI是決定授權是否符合開放原始碼定義(OSD)的管理機構,OSD是開放原始碼授權的指導文件。

越來越多建立開放原始碼資料庫的廠商採用了基本上遵循OSD原則但未經OSI批准的授權。最常見的情況是,它們要求雲端供應商在提供DBaaS時,必須根據相同的授權公開釋出修改或相關的原始碼。這類授權通常被稱為「源碼可用」授權。儘管如此,在這些授權下的資料庫,仍經常與完全開放原始碼的技術一起被列為專有、封閉源碼資料庫的替代方案。

廣義的開放原始碼和源碼可用資料庫包含各種類型的資料庫軟體。其中包括使用最廣泛的SQL關聯式資料庫,以及四種主要的NoSQL技術:鍵值存儲、文件資料庫、寬列存儲和圖形資料庫。特殊用途系統的開放原始碼版本,如向量資料庫和時間序列資料庫,也是可用的。此外,許多廠商現在提供支援多種資料模型的多模型資料庫。

使用開放原始碼資料庫的潛在好處


開放原始碼資料庫提供許多潛在的好處,其中一些也適用於源碼可用的技術:

- 容易上手
開放原始碼方式的核心前提是技術可免費獲得。因此,用戶可以在不先支付費用的情況下,輕鬆嘗試和部署開放原始碼資料庫,儘管在許多情況下,廠商確實提供付費支援以及具有附加功能的封閉源碼資料庫版本。

- 社群支援和參與
開放原始碼或源碼可用的程式碼通常附帶一個由熱情用戶和貢獻者組成的社群,他們可以幫助新用戶學習技術。它還允許參與程式碼開發過程。例如,用戶可以提交錯誤報告和功能請求,並成為貢獻者。  

- 可理解的原始碼
當原始碼公開且任何人都可以查看時,更容易理解資料庫如何運作,以及如何有效使用它來滿足業務需求。

- 靈活性和客製化
在某些開放原始碼授權下,開發人員可以自由修改資料庫軟體以滿足特定的定制需求。

- 更好的安全性
由於原始碼是開放的,開發人員、用戶和安全研究人員可以徹底審查它以識別漏洞。這使得在發現漏洞後能夠快速修補。

以下列出的技術是一些最突出的開放原始碼和源碼可用資料庫。該清單由TechTarget編輯根據對資料庫市場的研究編制,包括Gartner對廠商的排名和DB-Engines網站上的資料庫管理系統(DBMS)受歡迎程度排名。該清單本身是無排名的。它包括五個關聯式開放原始碼資料庫、三個NoSQL資料庫和四種源碼可用技術,按此順序組織。

每項技術的介紹提供了關於主要特性、潛在用例、授權和商業支援選項的詳細資訊,以幫助組織為其應用需求選擇合適的開放原始碼資料庫。

1. MySQL


MySQL是最廣泛部署的開放原始碼資料庫之一。它最初於1996年作為由Michael "Monty" Widenius和其他兩位開發人員領導的獨立專案發布,他們共同創立了MySQL AB公司來開發這個資料庫。該公司於2008年被Sun Microsystems收購,然後Sun在2010年被Oracle收購。從那時起,MySQL一直是Oracle資料庫產品組合的核心部分,同時作為開放原始碼軟體得以維護。

作為一個關聯式資料庫,MySQL最初被定位為一個線上交易處理(OLTP)系統。儘管Oracle的MySQL HeatWave雲端資料庫服務現在也支援分析和機器學習應用,但它仍然主要物件導向用途。MySQL在作為開放原始碼技術LAMP的基石時獲得了大部分早期知名度,LAMP指的是Linux、Apache、MySQL和PHP、Perl或Python,這些技術支撐了第一代Web開發。它繼續作為許多網站的底層資料庫。

常見用例
與其他關聯式資料庫一樣,MySQL遵循ACID特性—原子性、一致性、隔離性和持久性—以確保資料的完整性和可靠性。因此,它支援廣泛的應用。例如,它通常用作Web應用伺服器,以及運行雲端應用和內容管理系統。

授權
MySQL採用GPL第2版開放原始碼授權和Oracle授權的雙重授權,供希望將資料庫與商業應用一起發布的組織使用。

原始碼存儲庫

商業支援選項
除了MySQL HeatWave,Oracle還提供多個選項,包括Enterprise和Standard版本以及嵌入式版本。MySQL也可以作為Amazon Relational Database Service (RDS)的一部分在AWS雲端使用,以及作為Google的Cloud SQL和微軟的Azure Database服務使用。Aiven、PlanetScale和Percona等廠商也提供MySQL雲端服務。




2. MariaDB


MariaDB於2009年首次亮相,是MySQL的一個分支,由一個同樣由Widenius領導的團隊創建,他在2009年初離開Sun,因為他對MySQL的發展方向感到擔憂。MariaDB的工作始於他還在Sun時,最初被設計為MySQL的直接替代品。但直到兩個資料庫的5.5版本,情況才完全如此。之後,MariaDB中添加了MySQL中沒有的新功能,並在後續版本中使用了不同的編號。

即使有了較新的更新,從MySQL遷移到MariaDB也相對容易。後者的資料檔案通常與MySQL的二進位相容,資料庫的用戶端協議也相容。在許多情況下,用戶可以簡單地卸載MySQL並安裝MariaDB。領導該軟體開發的MariaDB PLC通過MariaDB Foundation維護了一份與MySQL的不相容性和功能差異清單。

常見用例
MariaDB通常用於與MySQL相同的目的,包括涉及交易處理和分析工作負載的Web和雲端應用。

授權
免費的MariaDB Server軟體(被公司稱為MariaDB Community Server)在GPLv2授權下發布。

源代碼存儲庫

商業支援選項
MariaDB PLC銷售一個MariaDB Enterprise Server版本的資料庫,該版本還支援JSON資料和列式存儲。SkySQL是一家於2023年底從MariaDB PLC分拆出來的公司,提供完全託管的DBaaS實現。MariaDB也可作為Amazon RDS和Azure Database的一部分使用,儘管微軟計劃在2025年9月停止其服務。

推薦課程

3. PostgreSQL


PostgreSQL起源於1986年加州大學柏克萊分校的Postgres項目。該項目由關聯式資料庫先驅Michael Stonebraker發起,當時他是該校的教授,目的是創建一個比專有的RDBMS Ingres更先進的替代品,而他在開發Ingres方面也扮演了重要角色。該軟體於1995年成為開放原始碼軟體,當時還添加了SQL語言解釋器,並於1996年正式更名為PostgreSQL。數十年後,開發人員、廠商和用戶仍然交替使用PostgreSQL和Postgres來指代該資料庫。

PostgreSQL提供完整的RDBMS功能,包括ACID符合性、SQL查詢以及對程序式語言查詢的支援,以在資料庫中創建儲存程序和觸發器。與MySQL、MariaDB和許多其他資料庫技術一樣,它還支援多版本並行控制(MVCC),以便不同用戶可以同時讀取和更新資料。此外,PostgreSQL支援標準關聯表以外的其他類型資料庫物件,在開放原始碼專案的網站上被描述為物件關聯式DBMS。

常見用例
PostgreSQL通常被定位為專有Oracle資料庫的開放原始碼替代方案。它被廣泛用於支援需要複雜事務和高併發性的企業應用,有時也用於資料倉儲。

授權
該軟體在經OSI批准的PostgreSQL授權下可用。

源代碼存儲庫

商業支持選項
PostgreSQL擁有廣泛的商業支援和雲服務。EDB(正式名稱為EnterpriseDB)專門從事PostgreSQL,並在雲端提供自我管理和DBaaS版本。AWS、Google、Microsoft和Oracle以及Aiven、Percona和NetApp的Instaclustr子公司等廠商也提供託管PostgreSQL雲服務。


4. Firebird


Firebird開放原始碼關聯式資料庫的技術根源可以追溯到1980年代早期,當時創建了專有的InterBase資料庫。在InterBase被多家廠商收購後,商業產品開發結束,最終版本於2000年以開放原始碼授權發布。一週之內,Firebird項目啟動,以繼續開發該技術的一個分支。

Firebird支援符合ACID的事務、外部使用者定義函數和各種標準SQL功能,並包括提供MVCC功能的多代架構。該軟體的佔用空間相對較小,提供嵌入式單用戶版本,但也可用於運行具有數百個並發用戶的多TB級資料庫。不應將其與Google開發的兩個商業NoSQL資料庫Firestore和Firebase Realtime Database混淆。

常見用例
Firebird可以處理操作型和分析型應用。它用於各種類型的企業應用,包括ERP和CRM系統。

授權
Firebird在InterBase公共授權(IPL)和初始開發者公共授權(IDPL)下提供。兩者都是Mozilla公共授權1.1版的變體,該版本已獲得OSI批准,但現已被2.0版取代。IPL涵蓋了原始的InterBase原始碼,而IDPL適用於作為Firebird項目的一部分開發的新增或改進的程式碼。

源代碼存儲庫

商業支援選項
Firebird是一個獨立的開放原始碼專案,不受特定廠商驅動,軟體可以免費使用,包括用於商業目的。Firebird網站列出了六家提供商業支援、諮詢和培訓服務的公司。在AWS、Azure和Google雲端上運行Windows Server 2019的Firebird雲端服務可供購買,儘管對Google Cloud的支援將於2024年8月結束。

5. SQLite


SQLite是一個輕量級的嵌入式RDBMS,在應用程式內運行。它由計算機分析師和程式設計師D. Richard Hipp於2000年創建,當時他作為政府承包商支援美國海軍的一個專案,該專案需要一個可以在DBA最少的環境中運行的資料庫。Hipp繼續通過他的軟體工程公司Hipp, Wyrick & Company Inc.(簡稱Hwaci)作為項目架構師領導該軟體的開發。

作為一個嵌入式資料庫,SQLite是自包含的,這意味著它在其驅動的應用程式內完全功能化。該軟體是一個庫,嵌入了一個全功能的支援ACID事務的SQL資料庫引擎。沒有單獨的資料庫伺服器進程。資料讀寫直接對普通磁碟檔案進行,完整的SQLite資料庫包括表、索引、觸發器和檢視都可以包含在單個檔案中。

常見用例
由於其小佔用空間和無需單獨伺服器進程的能力,SQLite通常用於行動應用、Web瀏覽器和IoT設備。

授權
SQLite原始碼位於公共領域,可以免費使用、修改和發布用於任何目的,無需授權。Hwaci確實出售所有權保證和永久使用權授權給出於法律原因需要它的組織。

原始碼存儲庫

商業支持選項
Hwaci提供付費技術支援、維護和測試服務,並提供一套在單獨授權下出售的SQLite專有擴展。與Firebird一樣,SQLite資料庫服務可在AWS、Azure和Google Cloud上使用,在這種情況下,所有服務都運行在Ubuntu Server 20.04上。


6. Apache Cassandra


Cassandra列式存儲的起源可以追溯到2007年,最初由Facebook開發,用於支援社交網路新增的收件箱搜尋功能。這個NoSQL資料庫在2008年開放原始碼,並於2009年成為Apache軟體基金會的一部分,最初作為孵化器專案,次年升級為頂級專案。 

Cassandra是一個容錯的分散式資料庫,可用於在由大量普通伺服器組成的叢集中存儲和管理大量資料。該軟體在多個伺服器節點上複製資料以避免單點故障,並且可以根據處理需求動態擴展,透過向叢集添加更多伺服器。Cassandra目前提供最終一致性,由於暫時的資料不一致,可能會限制其事務性用途,但Apache專案正在努力增加對ACID事務的支援。

常見用例:Cassandra專為需要快速效能、可擴展性和高可用性的用途而設計。它被部署於各種應用,包括庫存管理、電子商務、社交媒體分析、訊息系統和電信等。

授權
Cassandra軟體採用Apache License 2.0。

原始碼存儲庫

商業支援選項
多家廠商為Cassandra提供商業支援和DBaaS版本,包括DataStax、Aiven和Instaclustr。AWS的Amazon Keyspaces(適用於Apache Cassandra)和微軟的Azure Managed Instance for Apache Cassandra也分別作為資料庫服務提供。


7. Apache CouchDB 


CouchDB是一個NoSQL文件資料庫,最初由軟體工程師Damien Katz於2005年發布,並於2008年成為Apache專案。名稱中的Couch部分是"cluster of unreliable commodity hardware"的縮寫,源自該專案最初的目標:創建一個可在普通硬體上高效運行的可靠資料庫系統。CouchDB可以部署在一個伺服器節點上,也可以作為叢集中多個節點上的單一邏輯系統部署,可以根據需要透過添加更多伺服器進行擴展。

資料庫使用JSON文件來存儲資料,使用JavaScript作為查詢語言。其他主要功能包括支援MVCC和單個文件的ACID特性,儘管在多個資料庫伺服器上存儲的資料使用最終一致性模型——這是為了優先考慮可用性和效能而犧牲絕對的資料一致性。資料通過增量複製功能在伺服器之間同步,可以設置為雙向任務並用於支持移動應用和其他離線優先應用。

常見用例
CouchDB用於各種目的,包括資料分析、時間序列資料存儲以及需要離線存儲和功能的移動應用。 

授權
CouchDB採用Apache License 2.0授權。

源代碼存儲庫

商業支援選項:IBM Cloudant雲端資料庫基於CouchDB,添加了支持全文搜索和地理空間索引的開放原始碼技術。其他幾家公司也為CouchDB提供支援,包括AWS、Azure和Google雲端中的封裝實例。

8. Neo4j


Neo4j是一個NoSQL圖形資料庫,非常適合表示和查詢高度關聯的資料集。Neo4j使用由節點、關係(也稱為邊)組成的屬性圖資料庫模型,節點代表單個資料實體,關係定義了不同節點的組織和連接方式。節點和關係還可以包括屬性,以鍵值對的形式進一步描述它們。

Neo4j最初於2007年作為開放原始碼軟體發布,由資料庫廠商Neo4j Inc.監督。它最初僅是一個基於Java的圖形資料庫,但已擴展了額外的功能,包括向量搜索和資料存儲。主要特性包括完全ACID合規、通過自主叢集架構實現水平可擴展性以及Cypher查詢語言。Neo4j Inc.計劃在2024年4月將Cypher與GQL匯合,GQL是國際標準化組織發布的標準圖查詢語言,使用基於SQL和Cypher的語法。

常見用例
Neo4j的典型用途包括社交網絡、推薦引擎、網路和IT運營、欺詐檢測和供應鏈管理,現在通過向量搜索功能也支援生成式AI應用。

授權
Neo4j Community Edition採用GPL第3版授權。Cypher的開放原始碼版本openCypher也可在Apache License 2.0下使用。 

原始碼存儲庫

商業支援選項:Neo4j Inc.提供幾種受支援的商業產品,包括添加了封閉原始碼元件的Neo4j Enterprise Edition,以及基於訂閱的Neo4j Aura雲端資料庫服務。

9. Couchbase Server


Couchbase Server是一個NoSQL文件資料庫,具有多模型功能,可以將資料存儲在JSON文件和鍵值對中。該技術源自2011年兩家開放原始碼資料庫公司的合併:CouchOne由CouchDB的創建者Damien Katz創立,提供基於該資料庫的系統;Membase由memcached分散式快取技術的開發人員建立,用於構建鍵值存儲。合併後的公司成為Couchbase,從而開發了Couchbase Server。

儘管名稱相似且部分起源相同,但Couchbase Server和CouchDB並不直接相關或相容——它們是不同的資料庫技術,有自己的程式碼和API。Couchbase Server支援強一致性、分散式ACID事務和用於JSON資料查詢的SQL++。它還包括向量搜尋和全文搜尋功能,以及多維度擴展功能,可根據工作負載需求單獨隔離和擴展不同的資料庫功能。

常見用例
Couchbase Server通常用於支援分散式應用工作負載,以及行動、邊緣和物聯網應用。

授權
Couchbase Server最初在Apache License 2.0下提供,2021年改為Business Source License (BSL) 1.1,這是一種源碼可用授權,限制其他廠商對該軟體的商業使用。資料庫版本在可用四年後轉換回Apache開放原始碼授權。

原始碼存儲庫

商業支持選項:Couchbase為雲端和內部部署提供Couchbase Server的企業版,以及該資料庫的行動版和名為Couchbase Capella的全託管DBaaS技術。

10. MongoDB


MongoDB是另一個NoSQL文件資料庫,最初開發為開放原始碼軟體,現在是一種源碼可用技術。MongoDB於2009年首次發布,以名為BSON的JSON式文件格式存儲資料,BSON是Binary JSON的縮寫。正如全名所示,BSON以二進位結構編碼資料,旨在支援比JSON提供更多的資料類型以及更快的索引和查詢效能。

該資料庫通常被視為對想要構建不受固定結構約束的應用程式的開發人員具有吸引力的選項。除了文件資料模型,MongoDB還包括對圖形、地理空間和時間序列資料的原生支援。MongoDB Inc.提供的雲端資料庫服務MongoDB Atlas還提供了向量和全文搜尋功能,可在本機環境中免費用於開發和測試。MongoDB的其他關鍵功能包括多文件ACID事務、用於水平可擴展性的分片以及自動負載平衡。

常見用例
MongoDB被廣泛部署於AI、邊緣計算、物聯網、行動、支付和遊戲應用,以及網站個人化、內容管理和產品目錄等用途。

授權
自2018年起,MongoDB Community Server的新版本和之前版本的修補程式都在Server Side Public License (SSPL) Version 1下提供,這是MongoDB Inc.創建的一個源碼可用授權。

原始碼存儲庫

商業支持選項
除了MongoDB Atlas,MongoDB Inc.還提供自我管理的MongoDB Enterprise Server,它還提供了社群版之外的附加功能。Datavail 和 Percona 等廠商也提供 MongoDB 支援和託管服務。Amazon DocumentDB(與MongoDB相容)是AWS提供的全託管DBaaS產品,支援MongoDB 4.0 和 5.0 版本,但不支援較新的 6.0 和 7.0 版本。


11. Redis


Redis是一個NoSQL記憶體內資料庫,於2024年3月轉換為源碼可用技術。Redis專案由軟體程式員Salvatore Sanfilippo(暱稱antirez)於2009年創建,用於解決一個即時網站日誌分析工具的資料庫擴展問題。Redis是Remote Dictionary Server的縮寫,最初被定位為提供鍵值資料存儲作為快取技術的軟體,以加速現有資料庫和應用工作負載。

資料庫快取功能仍然是Redis的基礎,其特性包括內建複製、磁碟資料持久性和對複雜資料類型的支援。但該平台已擴展到包括額外的功能,例如支援存儲JSON文件以及向量和時間序列資料。還添加了圖形資料庫模組,但主要開發商Redis Inc.在2023年停止了對它的開發。

常見用例
雖然Redis可以用作完整的資料庫,但它最常見的用途之一仍然是作為資料庫查詢快取層。它還經常用於通過整合的pub/sub功能支援即時通知,並作為會話存儲來幫助管理Web和行動應用程式的用戶會話。

授權
截至2024年3月,Redis核心軟體採用Redis Source Available License 2.0和SSPL v1雙重授權。自2022年起,新增的資料庫模組和組合了它們的Redis Stack套件就已經被這些授權所涵蓋。

源代碼存儲庫

商業支持選項
Redis Inc.以商業授權提供封閉原始碼的Redis Enterprise產品,以及全託管的Redis Cloud服務。微軟的Azure Cache for Redis是一項託管服務,包括Redis核心軟體和Redis Enterprise兩個選項。Aiven和Instaclustr也提供Redis託管服務。此外,AWS、Google和Oracle提供與Redis相容的雲端服務。

推薦課程

12. CockroachDB 


CockroachDB是一個源碼可用的分散式SQL資料庫,其靈感來自Google的專有Spanner資料庫。CockroachDB主要由廠商Cockroach Labs開發,於2015年首次發布,兩年後出現了初始的生產版本。就像其名稱所指的昆蟲一樣,CockroachDB的核心設計目標是難以被殺死。這個雲原生資料庫旨在成為一個容錯、有彈性和一致的資料管理平台。

根據其開發人員的說法,CockroachDB可以水平擴展,並且能夠在各種類型的設備故障中存活,對用戶造成的中斷最小,不需要DBA手動干預。關鍵特性包括自動修復和恢復、支援帶有強一致性的ACID事務、SQL API以及資料的地理分區以提高應用效能。它還具有"多主動可用性"模型,使用戶能夠從任何叢集節點讀寫資料,不會產生衝突。

常見用例
CockroachDB非常適合高容量的OLTP應用以及跨多個資料中心和地理區域的分散式資料庫部署。

授權
自2019年以來,CockroachDB的大部分核心功能都採用BSL的一個版本授權,如果其他廠商想要提供商業資料庫服務,則需要從Cockroach Labs購買授權。其他核心功能由Cockroach Community License (CCL)涵蓋,允許查看和修改原始碼,但未經Cockroach Labs同意不得重複使用。在新的資料庫版本發布三年後,根據BPL授權的功能將轉換為Apache License 2.0並成為開放原始碼,而這一變化不適用於CCL授權的功能。

原始碼存儲庫

商業支持選項
Cockroach Labs提供技術支援以及在自我管理和DBaaS部署中都可用的額外付費企業功能。


0 意見:

張貼留言