蘋果FoundationDB資料庫再升級,添加文件資料庫功能
蘋果今開源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上執行。
※NASA重返月球有這九家民間公司參與
※獵豹移動8款移動程序遭指控,詐騙數百萬美元獎勵金,股價大跌
TAG:十輪網 |