查看原文
其他

苹果重新开源分布式数据库FoundationDB,已在内部使用三年!

2018-04-20 业界轰动 AI前线
策划编辑|Natalie
编译|核子可乐
AI 前线导读:2015 年苹果公司收购了数据提供商 FoundationDB,目的是为了提升旗下 App Store、iTunes Connect、 iTunes 服务在云端的服务器技术。FoundationDB 随之从开源变为闭源,开源社区怨声载道。而三年后的现在,北京时间 4 月 20 日凌晨,苹果公司宣布 FoundationDB 又重新开源了!如今的 FoundationDB 在苹果内部经过多年的开发和生产环境使用,已经非常成熟完善了,它会给竞争激烈的分布式数据库圈带来什么样的新变化呢?

更多干货内容请关注微信公众号“AI 前线”,(ID:ai-front)

FoundationDB 是“一个能在多集群服务器上存放大规模结构化数据的分布式数据库”。该数据库系统专注于高性能、高可扩展性和不错的容错能力。这意味着使用该数据库的项目运行起来更高效且维护成本低。

FoundationDB 由戴夫·罗森塔尔(Dave Rosenthal)、戴夫·谢勒(Dave Scherer)、和尼克拉维泽(Nick Lavezzo)于 2009 年开发,旨在建立一个符合 ACID 约束的 NoSQL 数据库(ACID 是一种即使在发生错误时也保证数据完整性的数据库机制)。

苹果公司在 2015 年收购了 FoundationDB,并可能早已将此数据库用于 iCloud 云存储服务。在一份 CloudKit 的使用说明中,苹果工程师提到了对于 NoSQL 数据库的使用,使得应用开发者们可以以一种通用的且易操作的方式在不同设备间同步用户数据。CloudKit 为许多 iCloud 服务提供数据存储服务,包括 iOS 备份、照片同步、iWork 办公、和 iCloud 网盘。

以系统封闭著称的苹果公司之所以会对 FoundationDB 这样一个小团队产品产生兴趣,是因为苹果在大数据时代继续填补技术基因,而 FoundationDB 作为一款增强型 NoSQL(类似键值数据库 Hbase,同时又能够运行 ACID 交易),对苹果来说,正好借此提升自己的云端服务能力。

但这在当时引发了开源社区的不满,开源生态的开发者和参与者纷纷对商业收购开源项目的行为表示担忧和不安,认为这样对于开源项目的贡献者和参与者来说加大了风险,甚至对开源项目本身也是一种伤害甚至扼杀。

就在今天凌晨,苹果宣布 FoundationDB 分布式数据库重新开源!

这个消息在 HackerNews 上引发了轰动,消息发出仅 1 小时就收获了 300 多支持和 78 个评论,截至发稿时间,这个报道已经得到了 1381 个支持和 278 个评论。网友wwilson 表示:

这个消息真是令人振奋!FoundationDB 是我使用过的最出色的软件!对于任何希望构建分布式系统的用户而言,这都是一套卓越的原型方案。

简而言之,FoundationDB 是一套大规模可扩展且速度极快的分布式数据库,拥有最出色的测试与容错能力。目前,苹果及多家其它大型厂商都在广泛使用 FoundationDB。

但真正有趣的部分在于,它能够为其它需要可扩展性以及存储一致性的系统提供极为高效的底层接口。在 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 革命尚未发生


新书推荐

每个技术人成长到一个阶段,都会思考:下一步到底要怎么走?

坚持走技术专业路线,还是转向技术管理?

转型路上可能会遇到哪些坑?如何管理技术团队?

职业生涯如何突破瓶颈,建立个人影响力?

计算机博士,Airbnb 技术经理朱赟通过新书《跃迁:从技术到管理的硅谷路径》告诉你,从技术到管理如何达到最优解。4.20 首发特惠,原价 59 元,首发价 49 元

AI前线紧跟前沿的AI技术社群


如果你喜欢这篇文章,或希望看到更多类似优质报道,记得给我留言和点赞哦!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存