The FoundationDB NoSQL database’s new Record Layer supports relational database semantics, schema management, primary and secondary indexes, and query capabilities. The FoundationDB team announced last month the open source release of the Record Layer.
FoundationDB is an open-source “multi-model” NoSQL database originally developed by Apple, but since its open sourcing many different companies have contributed to its development. The database is designed with a cloud-friendly “shared nothing architecture“. FoundationDB was designed around a “core” key-value database, with additional features supplied in a “layers”, which extend the functionality by adding features and data models to allow new data access patterns. Built on top of FoundationDB, the Record Layer supports managing records with fields and types, an evolving schema, primary and secondary indexes, and declarative query execution. This Layer is intended to be composable and can be extended via other systems, enabling a new class of layers and applications on top of FoundationDB.
The Record Layer also includes features that are not typically found in relational databases, such as nested data types, indexes on the commit-time of records, and indexes and queries that span different types of records.
The Record Layer applies FoundationDB’s transactional semantics to secondary indexes, which means the indexes are always up-to-date with the latest changes to the data. Since it’s stateless, Record Layer can scale up by simply launching more instances of the database. It supports multi-tenancy and isolates all the data belonging to a tenant.
Other features in the Record Layer include:
- Records being represented as Protocol Buffer messages, providing industry-standard serialization and schema evolution. Transactional secondary indexing feature is based on the Protocol Buffer data model.
- Support for advanced index types such as grouped counts, full text indexes, ordinal rank indexes, and extensible functional indexes.
- Query planner for turning those queries into concrete database operations.
- Extension points: Users can build custom index maintainers and query planning features to integrate new index types.
- Serialization API that supports client-defined encryption and compression algorithms.
The Record Layer and FoundationDB are used in production at Apple to support applications and services like Apple’s CloudKit.
The FoundationDB installation package supports macOS, Ubuntu, RHEL/CentOS EL6 & EL7, and Windows operating systems. It also supports the API language bindings for C, Python, Ruby, Java 8+, and Go 1.1+ programming languages. The team wrote a paper describing how CloudKit uses the Record Layer.
If you are interested in learning more about the Record Layer feature in FoundationDB database, checkout the following resources: