苹果FoundationDB资料库再升级不只是键值NoSQL资料库也新增文件资料库功能

每日动态2021-02-26 08:04:30
最佳答案

苹果今开源FoundationDB文件层(Document Layer),这是一个文件导向的资料库,由扩展FoundationDB键值储存的核心功能而来。

2009年成立的FoundationDB,在2015年的时候被苹果收购,并于4月时开源了其核心。FoundationDB是一个多重模型的NoSQL资料库,使用无共享架构(Shared-Nothing Architecture)。整体功能设计围绕着其核心,透过增加不同的扩充层(Layer)扩充功能,而核心仅包含不可能在扩充层中实作的功能,FoundationDB以扩充层模拟特定类型的资料并处理其存取模式,而最新开源的文件层便用来扩充FoundationDB键值储存。

FoundationDB文件层使用MongoDB API的形式,提供开发人员熟悉的操作,并且与MongoDB协定相容,因此使用MongoDB的简易应用程式,可以轻易的搬迁到FoundationDB文件层上。开发者可以使用任何现有的MongoDB客户端,进行将应用程式连接到文件层的操作。

透过扩充FoundationDB,文件层继承了核心专案的关键特性,包括可扩展性、ACID交易支援以及出色的效能,使其成为无状态伺服器,而这也让文件层具有多种创新功能。FoundationDB没有写入锁定,即便是在单一文件上的写入操作也不锁定。FoundationDB中的交易是无锁的(Lockless),并藉由将文件储存为多个键值对,让文件层支援多个平行写入器,在部分情况,非冲突操作可以平行进行。

FoundationDB文件层的另一个优势是无分片(Sharding),文件层不依赖固定的分片键值来分散资料,而是让所有资料分区和重新平衡都由键值储存自动管理。该设计直接继承自FoundationDB核心,可提供强大的水平可伸缩性,同时还能降低客户端设计複杂性。由于文件层每个执行个体都是无状态应用程式,只使用储存资料的FoundationDB丛集进行配置,这种无状态设计代表文件层的执行个体,可以放置在负载平衡器之后,并处理来自任何客户端对任何文件的查询。

在预设情况中,文件层的写入操作符合完全隔离和原子性,索引和文件资料始终保持一致,无论客户端的选择,写入始终保持完全一致,读取也会呈现强健的因果一致性,如此能让开发者更容易撰写,具同时处理多请求能力的应用程式。

FoundationDB键值储存功能强大,但是仅限于分散式交易和有状态储存,但是文件层聚焦于键值储存功能的API,以建模出更複杂的资料储存方法。由于FoundationDB键值储存缺少了完整的资料库系统功能,不仅没有索引、资料类型,也没有查询引擎,文件层为FoundationDB增加了这些功能类似的概念。FoundationDB文件层以Apache v2授权许可发布于GitHub,其二进位档可在macOS和Linux上执行。

免责声明:本文由用户上传,如有侵权请联系删除!