深入了解開源數(shù)據(jù)庫

編譯:芒果果丨發(fā)自 思否編輯部
開源數(shù)據(jù)庫只是隨其源代碼一起分發(fā)的常規(guī)數(shù)據(jù)庫。
用戶可以自由地閱讀、修改和擴展軟件。對于許多人來說,最有吸引力的特性可能是它可以在任何時候在任何地方的任何硬件上運行它。源代碼是所有程序員都可以根據(jù)自己的需要使用的公共資源。
什么是開源數(shù)據(jù)庫
并不是說架構(gòu)、語言或者定義開源數(shù)據(jù)庫的特性集有什么不同。事實上,許多開源選項就像它們的專有版本一樣使用 SQL 版本。
對于與專有軟件供應(yīng)商重新授權(quán)談判的管理人員來說,許可一直很有吸引力。如果源代碼不被共享,他們唯一的選擇就是轉(zhuǎn)移到另一個產(chǎn)品,這通常包括大量的重寫。
但是,天下沒有免費的午餐。這些源代碼或許也存在一些“陷阱”,有些比較明顯有些則是隱藏起來的。許多開源許可證中,有些對用戶幾乎沒有任何限制,有些則堅持要求用戶共享任何增強,從根本上確保公共代碼對所有人保持開放。
另一個沒有明確說明但對用戶來說非常重要的就是,必須有人付錢給開發(fā)人員。
一些使用開放源碼數(shù)據(jù)庫的公司會雇人為代碼庫做貢獻。他們不是購買專有許可證,而是通過向開發(fā)人員支付薪水。選擇這種方式的公司傾向于他們對所獲得的代碼庫的控制。
許多開源數(shù)據(jù)庫是在混合模式下發(fā)布的。有些人會創(chuàng)建兩個不同的版本,其中更簡單、更通用的代碼可以被稱為“社區(qū)版”,并且可以自由發(fā)布。探索該技術(shù)并創(chuàng)建新原型的開發(fā)人員可以免費下載它。
支持開發(fā)的公司的賬單通常由逐漸采用”商業(yè)版本”的公司支付,這種版本通常提供與處理較大數(shù)據(jù)集或提供更好的安全性有關(guān)的額外功能。它們通常是新開發(fā)人員不需要的特性,但是對于運行生產(chǎn)代碼的團隊來說,它們提供了長期的價值。設(shè)置多個版本并確保每個版本都有正確的特性是一門藝術(shù)。在商業(yè)版中保留太多的功能,沒有人會去嘗試。在社區(qū)版中留下太多,沒有人會覺得需要升級和付費。
開放源碼數(shù)據(jù)庫可以分為很多類別,這些類別在很大程度上取決于它們的發(fā)展時代。最早的工具,如 MySQL 或 PostgreSQL,仿效了商業(yè)領(lǐng)袖。它們使用 SQL 語言,并將數(shù)據(jù)存儲在按索引排序、由 JOIN 例程鏈接的關(guān)系表中。有時它們并不提供同樣完整的特性選擇,但是它們逐漸進化到支持相同的數(shù)據(jù)存儲風(fēng)格。
后來的 NoSQL 數(shù)據(jù)庫,如 MongoDB 和 Cassandra,以其靈活的模式和文檔風(fēng)格的鍵值對存儲而聞名。這種特殊類型的數(shù)據(jù)庫在很大程度上演化為開放源碼。
一些最新的數(shù)據(jù)庫,比如那些支持分類賬或地理數(shù)據(jù)的數(shù)據(jù)庫,通常是幾對產(chǎn)品的混合體。一個是免費提供的功能齊全的社區(qū)版本。另一個通常被稱為“企業(yè)版”,因為它包含的特性支持更大的數(shù)據(jù)集,而這些數(shù)據(jù)集可能需要更高的穩(wěn)定性和可靠性。這些額外的功能通常只有在付費的情況下才能使用。
主要供應(yīng)商是如何接受開源的
甲骨文在 2009 年收購 Sun Microsystems 的過程中收購了 MySQL,有效地認(rèn)識到了開源模式的力量,于是他們繼續(xù)開發(fā)和支持?jǐn)?shù)據(jù)庫。用戶可以選擇免費版,也就是所謂的社區(qū)版,也可以選擇更高級的版本,其中包含大公司所需的額外功能。其中,備份、額外的安全性和集群管理是需要付費的。
甲骨文還收購了 BerkeleyDB,這是一組常常被編譯成程序的鍵值數(shù)據(jù)庫。它們使開發(fā)人員可以減輕維護數(shù)據(jù)結(jié)構(gòu)的工作。
微軟已經(jīng)選擇在 Azure 云上托管一些主要的開源數(shù)據(jù)庫。希望依賴 PostgreSQL 或 MySQL 的團隊可以啟動由微軟管理的實例,從而省去配置和維護服務(wù)器的麻煩。
其他云供應(yīng)商也在遵循類似的路徑,亞馬遜、谷歌、DigitalOcean、Rackspace 和其他幾家公司都提供了租用全配置服務(wù)器的選擇,這些服務(wù)器都有主流開源數(shù)據(jù)庫的運行版本。亞馬遜獨自提供了大多數(shù)主要開源數(shù)據(jù)庫的托管版本。
這些托管實例的出現(xiàn)使一些開發(fā)人員感到困擾。許多云計算提供商發(fā)布的新產(chǎn)品公告都提供了安裝和維護開源軟件包的信息。這些不是無關(guān)緊要的任務(wù),但是工作可以自動化。這導(dǎo)致了工具開發(fā)人員和云公司之間的摩擦,而這些沖突還遠未解決。
從開源項目開始的新數(shù)據(jù)庫
許多新數(shù)據(jù)庫都是從開源項目開始的。有數(shù)十家新公司根據(jù)社區(qū)開源許可證發(fā)布了新數(shù)據(jù)庫。其中大多數(shù)公司還試圖通過出售一些支持和額外的專有功能來支持自己。
這些開源項目中,有些項目建立在以前的版本之上。MariaDB 是 MySQL 的創(chuàng)始人之一 Monty Widenius 發(fā)起的 MySQL 的分支。在把 MySQL 賣給甲骨文后,他開始了這個新版本。早期版本始于原始的代碼庫,但最新版本增加了一些特性,可以加快處理極大數(shù)據(jù)集的速度。SQL 語法的許多基本特性和核心部分是相同的,所以許多開發(fā)人員可以在它們之間自由切換。在未來,這種差異可能還會擴大。例如,MariaDB 已經(jīng)增加了與 Cassandra、 TokuDB 和 sphinx 等流行數(shù)據(jù)庫的集成。
SequoiaDB 是一個支持 SQL、鍵值文檔存儲和直接 JSON 存儲的大型分布式數(shù)據(jù)庫。數(shù)據(jù)庫將各種節(jié)點連接在一起,每個節(jié)點可能是不同的存儲引擎,如 MySQL 或 PostgreSQL。數(shù)據(jù)庫將查詢路由到適當(dāng)?shù)墓?jié)點,同時確保事務(wù)可以提供 acid 級別的并發(fā)性。核心是在 AGPL 下發(fā)布的,而有些連接器是由 Apache 許可證管理的。
雖然許多新的數(shù)據(jù)庫都是開源的,但并非所有公司都接受這種模式。例如,F(xiàn)auna 為它的分布式數(shù)據(jù)庫選擇了一個商業(yè)許可證。對企業(yè)友好的特性針對的是那些必須兼顧數(shù)據(jù)保留策略和快速擴展的管理人員。新的開發(fā)人員可能無法訪問源代碼,但是他們可以使用托管服務(wù)的免費層,該層嚴(yán)格限制每月可讀或?qū)懙脑財?shù)量。
如何治理開源數(shù)據(jù)庫
軟件的控制是吸引許多用戶使用開源數(shù)據(jù)庫的原因,他們愿意為專有軟件公司出售的產(chǎn)品按時支付工資,通常是為了避免供應(yīng)商鎖定可能帶來麻煩。開源許可證明確地使用戶成為控制代碼的正式合作伙伴。
但是,這種伙伴關(guān)系的性質(zhì)和局限性仍然受到質(zhì)疑。最近,幾家數(shù)據(jù)庫公司對某些云公司將硬件和維護捆綁在一起的方式表示反感。MongoDB 和 Elastic 都對這一過程是否公平提出了質(zhì)疑,部分原因是云公司不直接與原公司分享收入。云計算公司并沒有違反開源許可協(xié)議的字面意思,但有些人認(rèn)為他們保留了大部分的付款份額,違背了開源協(xié)議的精神。
最近,Elastic 的首席執(zhí)行官 Shay Banon 宣布,他們正在將所有新的開發(fā)轉(zhuǎn)移到一套更嚴(yán)格的許可證,旨在阻止大型云提供商自由轉(zhuǎn)售他們的工具,同時不限制終端用戶。
他說:“我們嘗試了所有可能的途徑,包括通過法院。但鑒于 AWS 的持續(xù)行為,我們決定改變我們的許可證,這樣我們就可以專注于生產(chǎn)產(chǎn)品和創(chuàng)新,而不是訴訟?!?/span>
作為回應(yīng),亞馬遜宣布將為 Elastic“fork”代碼。也就是說,他們將公開獲取最新版本,并繼續(xù)自己維護同時在云中轉(zhuǎn)售它。

亞馬遜的 Carl Meadows、Jules Graybill、Kyle Davis 和 Mehul Shah “今天,我們在亞馬遜 ES 上提供18個 Elasticsearch 版本,沒有一個受到許可證變更的影響。未來,亞馬遜的 ES 將由 Elasticsearch 和 Kibana 的新分支提供動力。我們將繼續(xù)提供新的特性、修復(fù)和增強功能?!?/span>
這其中有兩條路徑可能沿著相同的方向發(fā)展,也可能不會。核心功能可能保持不變,但用戶可能需要與其中一個保持一致。他們的代碼可能在兩者之間順利工作,或者可能存在問題。我們不知道開發(fā)團隊會做出哪些決定。
過去已經(jīng)開發(fā)出了這種 Forks 這種方式,甲骨文版本的 MySQL 仍然與 MariaDB 非常相似,并且看起來兩家公司都認(rèn)為保持緊密的兼容性非常重要,至少在核心特性和語法上是這樣。
另一家數(shù)據(jù)庫公司 MongoDB 是采用限制性更強的許可證——服務(wù)器端公共許可證(SSPL)的先驅(qū)之一,該許可證限制非合作伙伴的云提供商。自 2018 年以來,它一直在這個許可下發(fā)布產(chǎn)品,平衡了公司和用戶的需求。
MongoDB 首席執(zhí)行官兼總裁 Dev Ittycheria 在一次采訪中說,“我們希望為開發(fā)人員提供一種簡單的方式來訪問我們的產(chǎn)品,這樣他們就可以以無摩擦的方式使用、修改和重新發(fā)布我們的產(chǎn)品,這在 SSPL 下沒有什么不同?!?/span>
但他也指出,MongoDB 已經(jīng)在研發(fā)方面投資了7億美元,這是由合作伙伴支付的。他解釋說: “我們希望對抗超級云供應(yīng)商拿走我們的免費產(chǎn)品并提供服務(wù)而不付出任何回報的威脅。自從我們將許可改為 SSPL 以來,已經(jīng)過去兩年多了,這對用戶接受程度和我們作為一家公司的成功沒有產(chǎn)生任何負(fù)面影響。”
開源的真正意義是,竭盡全力支持自由閱讀、使用和修改代碼的最初愿景。
作為開源軟件運動的原始開發(fā)者之一,Richard Stallman 曾說過這樣一句話:“Open source is free as in freedom, not as in beer.”
本文是翻譯,閱讀原文:
https://venturebeat.com/2021/02/18/understanding-open-source-databases/

