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

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

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

