BT

Apple Open Sources FoundationDB

| by Sergio De Simone Follow 17 Followers on Apr 29, 2018. Estimated reading time: 1 minute |

Apple has open sourced its distributed database core, FoundationDB, which it acquired back in 2015 from the company of the same name. FoundationDB is designed to handle large volumes of data stored across clusters of commodity servers, and to favor data consistency by supporting fully global, cross-row ACID transactions.

FoundationDB, as its name implies, provides a low-level foundational interface for systems that need to store data by preserving consistency and being able to scale. The basic idea behind FoundationDB is to provide a datastore "core" that exposes an ordered key-value store with transactions, on top of which multiple database front-ends with different data models and query languages can be built. This includes, for example, an SQL database, a document database, a graph database, or more specialized APIs, such as Lucene/ElasticSearch, Zookeeper, and so on. All of them would use the underlying datastore core to ensure scalability and consistency of operation.

According to Apple, FoundationDB scales well as you add machines to the clusters, which are additionally able to automatically heal from hardware failures.

One of the founders of FoundationDB, the company that originally developed the FoundationDB datastore, provided a few more details about its design on Hacker News. FoundationDB uses optimistic concurrency, and handles the possibility of conflicts through lexicographic conflict ranges rather than using locks. Each range is an interval of one or more keys read or written by a transaction, with minimum granularity of a single key. Conflict ranges intersections are resolved by a set of internal microservices which partition up the key space independently of the way it is partitioned for data storage.

Furthermore, to improve scalability, FoundationDB represents indexes directly in the key/value store and keeps them consistent with the data through transactions. The benefit of this approach is it does not require the broadcast of indexes to all nodes. Another interesting feature of FoundationDB is strict serializable isolation with external consistency for all transactions.

Developers can interact with FoundationDB using API bindings available for a number of languages, including C, Go, Java, Python, and Ruby. Binary installers are available for macOS, Windows, and Linux. While the macOS platform is fully supported for development purposes, it is useful to keep in mind that production use is only supported by the Linux version.

Rate this Article

Adoption Stage
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Discuss

Login to InfoQ to interact with what matters most to you.


Recover your password...

Follow

Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.

Like

More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.

Notifications

Stay up-to-date

Set up your notifications and don't miss out on content that matters to you

BT