FoundationDB Document Layer is a document-oriented database that extends the core functionality of the FoundationDB key-value store.
FoundationDB is open sourcing the FoundationDB Document Layer, a document-oriented database. It extends the core functionality of the FoundationDB key-value store.
FoundationDB is a distributed database designed to handle large volumes of structured data across clusters of commodity servers. It organizes the data in ordered key-value store format and employs ACID transactions for all operations.
The FoundationDB Document Layer is a stateless microserver which is backed by the scalable and transactional features of FoundationDB. Released under an Apache v2 license, it provides the ease-of-use of a document database in the form of the familiar MongoDB API.
The Document Layer is now available on GitHub.
Extension to FoundationDB
The Document Layer extends FoundationDB to add a number features such as indexes, data typing, and query engine.
“The FoundationDB key-value store is powerful but its features remain narrowly scoped to distributed transactions and stateful storage. The Document Layer takes the key-value store’s focused API and uses it to model a much more complex style of data storage,” said the team at FoundationDB in a blog.
“Because the Document Layer exposes a new, general-purpose API we think of this as an extension to FoundationDB,” they added.
Fundamental design advantages of Document Layer over MongoDB
No write locks: The Document Layer does not implement locks on the database for write operations. The Key-Value Store uses optimistic concurrency control instead of locking.
No sharding: The Document Layer does not rely on a fixed shard key for distributing data. The data partitioning and rebalancing is managed by the key-value store, automatically. This feature has been inherited from FoundationDB which provides robust horizontal scalability and avoids client-level complexity.
Easy scaling: The instances of Document Layer are stateless, and are configured only with the FoundationDB cluster, where the data is stored. This stateless design allows the Document Layer’s instances to be put behind a load balancer so that queries from any client and for any document can be easily handled.
Safe defaults: The write operations on the Document Layer execute with full isolation and atomicity by default. Unsuccessful operations are reported to the client, rather than failing silently after execution.