開源資料庫只是隨其原始碼一起分發的常規資料庫。
使用者可以自由地閱讀、修改和擴充套件軟體。對於許多人來說,最有吸引力的特性可能是它可以在任何時候在任何地方的任何硬體上執行它。原始碼是所有程式設計師都可以根據自己的需要使用的公共資源。
什麼是開源資料庫並不是說架構、語言或者定義開源資料庫的特性集有什麼不同。事實上,許多開源選項就像它們的專有版本一樣使用 SQL 版本。
對於與專有軟體供應商重新授權談判的管理人員來說,許可一直很有吸引力。如果原始碼不被共享,他們唯一的選擇就是轉移到另一個產品,這通常包括大量的重寫。
但是,天下沒有免費的午餐。這些原始碼或許也存在一些“陷阱”,有些比較明顯有些則是隱藏起來的。許多開源許可證中,有些對使用者幾乎沒有任何限制,有些則堅持要求使用者共享任何增強,從根本上確保公共程式碼對所有人保持開放。
另一個沒有明確說明但對使用者來說非常重要的就是,必須有人付錢給開發人員。
一些使用開放原始碼資料庫的公司會僱人為程式碼庫做貢獻。他們不是購買專有許可證,而是透過向開發人員支付薪水。選擇這種方式的公司傾向於他們對所獲得的程式碼庫的控制。
許多開源資料庫是在混合模式下發布的。有些人會建立兩個不同的版本,其中更簡單、更通用的程式碼可以被稱為“社群版”,並且可以自由釋出。探索該技術並建立新原型的開發人員可以免費下載它。
支援開發的公司的賬單通常由逐漸採用”商業版本”的公司支付,這種版本通常提供與處理較大資料集或提供更好的安全性有關的額外功能。它們通常是新開發人員不需要的特性,但是對於執行生產程式碼的團隊來說,它們提供了長期的價值。設定多個版本並確保每個版本都有正確的特性是一門藝術。在商業版中保留太多的功能,沒有人會去嘗試。在社群版中留下太多,沒有人會覺得需要升級和付費。
開放原始碼資料庫可以分為很多類別,這些類別在很大程度上取決於它們的發展時代。最早的工具,如 MySQL 或 PostgreSQL,仿效了商業領袖。它們使用 SQL 語言,並將資料儲存在按索引排序、由 JOIN 例程連結的關係表中。有時它們並不提供同樣完整的特性選擇,但是它們逐漸進化到支援相同的資料儲存風格。
後來的 NoSQL 資料庫,如 MongoDB 和 Cassandra,以其靈活的模式和文件風格的鍵值對儲存而聞名。這種特殊型別的資料庫在很大程度上演化為開放原始碼。
一些最新的資料庫,比如那些支援分類賬或地理資料的資料庫,通常是幾對產品的混合體。一個是免費提供的功能齊全的社群版本。另一個通常被稱為“企業版”,因為它包含的特性支援更大的資料集,而這些資料集可能需要更高的穩定性和可靠性。這些額外的功能通常只有在付費的情況下才能使用。
主要供應商是如何接受開源的甲骨文在 2009 年收購 Sun Microsystems 的過程中收購了 MySQL,有效地認識到了開源模式的力量,於是他們繼續開發和支援資料庫。使用者可以選擇免費版,也就是所謂的社群版,也可以選擇更高階的版本,其中包含大公司所需的額外功能。其中,備份、額外的安全性和叢集管理是需要付費的。
甲骨文還收購了 BerkeleyDB,這是一組常常被編譯成程式的鍵值資料庫。它們使開發人員可以減輕維護資料結構的工作。
微軟已經選擇在 Azure 雲上託管一些主要的開源資料庫。希望依賴 PostgreSQL 或 MySQL 的團隊可以啟動由微軟管理的例項,從而省去配置和維護伺服器的麻煩。
其他雲供應商也在遵循類似的路徑,亞馬遜、谷歌、DigitalOcean、Rackspace 和其他幾家公司都提供了租用全配置伺服器的選擇,這些伺服器都有主流開源資料庫的執行版本。亞馬遜獨自提供了大多數主要開源資料庫的託管版本。
這些託管例項的出現使一些開發人員感到困擾。許多雲計算提供商釋出的新產品公告都提供了安裝和維護開源軟體包的資訊。這些不是無關緊要的任務,但是工作可以自動化。這導致了工具開發人員和雲公司之間的摩擦,而這些衝突還遠未解決。
從開源專案開始的新資料庫許多新資料庫都是從開源專案開始的。有數十家新公司根據社群開源許可證釋出了新資料庫。其中大多數公司還試圖通過出售一些支援和額外的專有功能來支援自己。
這些開源專案中,有些專案建立在以前的版本之上。MariaDB 是 MySQL 的創始人之一 Monty Widenius 發起的 MySQL 的分支。在把 MySQL 賣給甲骨文後,他開始了這個新版本。早期版本始於原始的程式碼庫,但最新版本增加了一些特性,可以加快處理極大資料集的速度。SQL 語法的許多基本特性和核心部分是相同的,所以許多開發人員可以在它們之間自由切換。在未來,這種差異可能還會擴大。例如,MariaDB 已經增加了與 Cassandra、 TokuDB 和 sphinx 等流行資料庫的整合。
SequoiaDB 是一個支援 SQL、鍵值文件儲存和直接 JSON 儲存的大型分散式資料庫。資料庫將各種節點連線在一起,每個節點可能是不同的儲存引擎,如 MySQL 或 PostgreSQL。資料庫將查詢路由到適當的節點,同時確保事務可以提供 acid 級別的併發性。核心是在 AGPL 下發布的,而有些聯結器是由 Apache 許可證管理的。
雖然許多新的資料庫都是開源的,但並非所有公司都接受這種模式。例如,Fauna 為它的分散式資料庫選擇了一個商業許可證。對企業友好的特性針對的是那些必須兼顧資料保留策略和快速擴充套件的管理人員。新的開發人員可能無法訪問原始碼,但是他們可以使用託管服務的免費層,該層嚴格限制每月可讀或寫的元素數量。
如何治理開源資料庫軟體的控制是吸引許多使用者使用開源資料庫的原因,他們願意為專有軟體公司出售的產品按時支付工資,通常是為了避免供應商鎖定可能帶來麻煩。開源許可證明確地使使用者成為控制程式碼的正式合作伙伴。
但是,這種夥伴關係的性質和侷限性仍然受到質疑。最近,幾家資料庫公司對某些雲公司將硬體和維護捆綁在一起的方式表示反感。MongoDB 和 Elastic 都對這一過程是否公平提出了質疑,部分原因是雲公司不直接與原公司分享收入。雲計算公司並沒有違反開源許可協議的字面意思,但有些人認為他們保留了大部分的付款份額,違背了開源協議的精神。
最近,Elastic 的執行長 Shay Banon 宣佈,他們正在將所有新的開發轉移到一套更嚴格的許可證,旨在阻止大型雲提供商自由轉售他們的工具,同時不限制終端使用者。
他說:“我們嘗試了所有可能的途徑,包括透過法院。但鑑於 AWS 的持續行為,我們決定改變我們的許可證,這樣我們就可以專注於生產產品和創新,而不是訴訟。”
作為迴應,亞馬遜宣佈將為 Elastic“fork”程式碼。也就是說,他們將公開獲取最新版本,並繼續自己維護同時在雲中轉售它。
亞馬遜的 Carl Meadows、Jules Graybill、Kyle Davis 和 Mehul Shah “今天,我們在亞馬遜 ES 上提供18個 Elasticsearch 版本,沒有一個受到許可證變更的影響。未來,亞馬遜的 ES 將由 Elasticsearch 和 Kibana 的新分支提供動力。我們將繼續提供新的特性、修復和增強功能。”
這其中有兩條路徑可能沿著相同的方向發展,也可能不會。核心功能可能保持不變,但使用者可能需要與其中一個保持一致。他們的程式碼可能在兩者之間順利工作,或者可能存在問題。我們不知道開發團隊會做出哪些決定。
過去已經開發出了這種 Forks 這種方式,甲骨文版本的 MySQL 仍然與 MariaDB 非常相似,並且看起來兩家公司都認為保持緊密的相容性非常重要,至少在核心特性和語法上是這樣。
另一家資料庫公司 MongoDB 是採用限制性更強的許可證——伺服器端公共許可證(SSPL)的先驅之一,該許可證限制非合作伙伴的雲提供商。自 2018 年以來,它一直在這個許可下發布產品,平衡了公司和使用者的需求。
MongoDB 執行長兼總裁 Dev Ittycheria 在一次採訪中說,“我們希望為開發人員提供一種簡單的方式來訪問我們的產品,這樣他們就可以以無摩擦的方式使用、修改和重新發布我們的產品,這在 SSPL 下沒有什麼不同。”
但他也指出,MongoDB 已經在研發方面投資了7億美元,這是由合作伙伴支付的。他解釋說: “我們希望對抗超級雲供應商拿走我們的免費產品並提供服務而不付出任何回報的威脅。自從我們將許可改為 SSPL 以來,已經過去兩年多了,這對使用者接受程度和我們作為一家公司的成功沒有產生任何負面影響。”
開源的真正意義是,竭盡全力支援自由閱讀、使用和修改程式碼的最初願景。
作為開源軟體運動的原始開發者之一,Richard Stallman 曾說過這樣一句話:“Open source is free as in freedom, not as in beer.”
編譯:芒果果 | 發自:思否編輯部
此文是翻譯,原文在這裡:
https://venturebeat.com/2021/02/18/understanding-open-source-databases/