蘋果從新開源分佈式數據庫FoundationDB,已在內部使用三年!

策劃編輯|Natalie
編譯|核子可樂
AI 前線導讀:2015 年蘋果公司收購了數據提供商 FoundationDB,目的是爲了提高旗下 App Store、iTunes Connect、 iTunes 服務在雲端的服務器技術。FoundationDB 隨之從開源變爲閉源,開源社區怨聲載道。而三年後的如今,北京時間 4 月 20 日凌晨,蘋果公司宣佈 FoundationDB 又從新開源了!現在的 FoundationDB 在蘋果內部通過多年的開發和生產環境使用,已經很是成熟完善了,它會給競爭激烈的分佈式數據庫圈帶來什麼樣的新變化呢?

更多幹貨內容請關注微信公衆號「AI 前線」,(ID:ai-front)

FoundationDB 是「一個能在多集羣服務器上存放大規模結構化數據的分佈式數據庫」。該數據庫系統專一於高性能、高可擴展性和不錯的容錯能力。這意味着使用該數據庫的項目運行起來更高效且維護成本低。html

FoundationDB 由戴夫·羅森塔爾(Dave Rosenthal)、戴夫·謝勒(Dave Scherer)、和尼克拉維澤(Nick Lavezzo)於 2009 年開發,旨在創建一個符合 ACID 約束的 NoSQL 數據庫(ACID 是一種即便在發生錯誤時也保證數據完整性的數據庫機制)。前端

蘋果公司在 2015 年收購了 FoundationDB,並可能早已將此數據庫用於 iCloud 雲存儲服務。在一份 CloudKit 的使用說明中,蘋果工程師提到了對於 NoSQL 數據庫的使用,使得應用開發者們能夠以一種通用的且易操做的方式在不一樣設備間同步用戶數據。CloudKit 爲許多 iCloud 服務提供數據存儲服務,包括 iOS 備份、照片同步、iWork 辦公、和 iCloud 網盤。git

以系統封閉著稱的蘋果公司之因此會對 FoundationDB 這樣一個小團隊產品產生興趣,是由於蘋果在大數據時代繼續填補技術基因,而 FoundationDB 做爲一款加強型 NoSQL(相似鍵值數據庫 Hbase,同時又可以運行 ACID 交易),對蘋果來講,正好藉此提高本身的雲端服務能力。github

但這在當時引起了開源社區的不滿,開源生態的開發者和參與者紛紛對商業收購開源項目的行爲表示擔心和不安,認爲這樣對於開源項目的貢獻者和參與者來講加大了風險,甚至對開源項目自己也是一種傷害甚至扼殺。數據庫

就在今天凌晨,蘋果宣佈 FoundationDB 分佈式數據庫從新開源!服務器

這個消息在 HackerNews 上引起了轟動,消息發出僅 1 小時就收穫了 300 多支持和 78 個評論,截至發稿時間,這個報道已經獲得了 1381 個支持和 278 個評論。網友wwilson 表示:微信

這個消息真是使人振奮!FoundationDB 是我使用過的最出色的軟件!對於任何但願構建分佈式系統的用戶而言,這都是一套卓越的原型方案。架構

簡而言之,FoundationDB 是一套大規模可擴展且速度極快的分佈式數據庫,擁有最出色的測試與容錯能力。目前,蘋果及多家其它大型廠商都在普遍使用 FoundationDB。app

但真正有趣的部分在於,它可以爲其它須要可擴展性以及存儲一致性的系統提供極爲高效的底層接口。在 FoundationDB 公司,咱們的初衷在於利用 FoundationDB 編寫出多種不一樣數據庫前端,且其分別使用不一樣的數據模型與查詢語言(包括 SQL 數據庫、文檔數據庫等),且保證這些語言將數據存儲在同一底層系統以內。在此基礎上,客戶能夠隨意選擇本身須要的數據庫前端,甚至同時選取多種,但仍只需面對同一種分佈式數據庫方案。分佈式

這樣的思路無疑富有遠見。在 FoundationDB 上可以輕鬆實現 Zookeeper API,這進一步幫助用戶減輕了負擔。另外,FoundationDB 也可以完美地解決在分佈式文件系統上進行元數據存儲的需求,分佈式任務隊列一樣沒有問題。用戶甚至可以利用其它具有更強伸縮能力的方案替換原有 Lucene/ElasticSearch 索引!

正由於如此,蘋果公司才睿智地選擇了 FoundationDB。蘋果是一家專一的企業,他們沒有理由親手動手爲各種數據編寫不一樣存儲層。而在選擇 FoundationDB 並投入開發資源以後,FoundationDB 社區所產出的每一種產品都將給蘋果公司帶來回報。這真的是一種理想的良性循環。

FoundationDB 官網聲明
新的篇章

從今天起,FoundationDB 將以開源項目的姿態迎來新的發展篇章。

FoundationDB 是一款分佈式數據存儲方案,在設計當中充分考慮到商用硬件集羣的部署需求。這些集羣容許用戶隨意添加機器並實現良好擴展,自動實現硬件故障恢復,同時提供簡單的 API。其鍵 - 值存儲支持全面全局、跨行 ACID 事務,從而提供最高級別的數據一致性水平。更具體地講,如此強大的一致性將使你們的應用程序代碼更簡單、數據模型效率更高,且故障模式更易於處理。

最重要的是,FoundationDB 已經很是成熟,它已在蘋果內部通過多年的開發與生產使用。咱們計劃推進 FoundationDB 轉型爲社區項目,固然也熱烈歡迎各位的積極參與。

強大的抽象能力

咱們相信 FoundationDB 將成爲下一代分佈式數據庫的實現基礎。自 2010 年誕生以來,整個數據庫世界就在逐步與 FoundationDB 保持一致,從而支持內部數據的一致性。

FoundationDB 的發展願景從一套簡單而強大的內核開始,然後逐步添加「層」對其進行擴展。這套開源鍵 - 值存儲數據庫的核心,專一於整合那些沒法被寫入至各層中的功能。而各層將經過添加功能以模擬特定類型的數據,同時處理其訪問模式以實現核心擴展。

FoundationDB 的基礎架構,包括其對層概念的使用,顯著補充了系統可伸縮性與可管理性方面的最佳實踐。經過在單一集羣上運行多個層(例如文檔存儲層與圖形層),用戶能夠將特定應用程序與最佳數據模型進行匹配,從而下降基礎設施的運行成本,最終幫助企業節約運營與技術類開銷。

經過對 FoundationDB 核心進行開源,咱們預計層的具體數量與種類將迅速增長。而着眼於 FoundationDB 社區,咱們會根據核心自己及其支持的層生態系統推進相關發展。

構建開放社區

經過對 FoundationDB 項目進行開源,咱們的目標是創建起一個開放的技術社區。一切主要發展成果都將在開放背景下完成。咱們已經發布了一份概述性文件,旨在確保工做透明度並充分考慮社區成員的意見。此外,咱們還採起一系列步驟以制定項目治理方式,但願藉此提供一套基礎架構,幫助社區成員們積極參與其中並在決策中發揮更大的話語權。

咱們但願爲 FoundationDB 創建起健康且活躍的社區。爲此,咱們還經過了以貢獻者約定爲基礎的行爲準則,其中闡述了咱們鼓勵及禁止的各種行爲。

咱們期待着您的參與。您能夠經過如下幾種方式加入咱們的社區:

  • 在 FoundationDB 社區論壇上提問:forums.foundationdb.org。咱們在這裏討論各種與用戶相關的問題(例如如何使用某功能)以及開發問題(如何深刻挖掘 FoundationDB 核心並調整某功能)。來跟你們打個招呼吧!

  • 經過 GitHub 上報 bug 以改善這款軟件。

  • 爲核心軟件與文檔提供貢獻(請參閱項目的貢獻指南)。

如今就開始吧!

FoundationDB 當前最新版本爲 5.1.5,目前 FoundationDB 源代碼已經公佈於:

github.com/apple/foundationdb

請參閱指南:https://apple.github.io/foundationdb/getting-started-mac.html,以瞭解與如何安裝、使用以及開發 FoundationDB 相關的基礎知識。也能夠訪問 www.foundationdb.org/download/ 獲取適用於 macOS、Windows 以及 Linux 的二進制安裝程序。

若是你對 FoundationDB 感興趣,快打開該項目的 GitHub 地址體驗一下吧!歡迎與 AI 前線分享你的使用感覺!

原文連接:

https://www.foundationdb.org/blog/foundationdb-is-open-source/


更多幹貨內容請關注微信公衆號「AI 前線」,(ID:ai-front)

相關文章
相關標籤/搜索