FoundationDB has announced the general availability of SQL Layer, and ANSI SQL engine that runs on top of their key-value store. The result is a relational database backed up by a scalable, fault-tolerant, shared-nothing, distributed NoSQL store with support for multi-key ACID transactions.
FoundationDB’s approach was to separate the data model from its storage. For example, the data store does not have indexing built in. The respective functionality is provided by an upper layer which implements indexing by creating and storing a pair of key-values, one for the data and one for the index.
Providing simple storage access through an API and delegating some of the functionality to an upper layer enables developers to create various layers on top of FoundationDB. One layer is the SQL Layer. The community has created a number of other layers, such as Protocol Buffers for Ruby, Fowl – a query layer for Node.js, and others.
SQL data normally organized in tables is stored in FoundationDB as tuples. The data is accessed through ordered keys which are also tuples. Besides the data index, such a tuple contains information about the table a data belongs to and relations with other tables. Through the use of tuples it is possible to retrieve/store ranges of data in one operation.
SQL Layer is written in Java and uses FoundationDB SQL Parser which is derived from Apache Derby, and it is compatible with several ORMs – Hibernate, Entity Framework, ActiveRecord, Django, SQLAlchemy, Doctrine. The layer is available on GitHub under a GNU GPL license.
FoundationDB supports a number of languages for development – Java, .NET, C, Ruby, Node.js, Go, PHP, Python –, and can be deployed on Linux, Mac OS X or Windows, on a single machine, on a cluster of them, on premises or in the cloud. Besides the paid Silver, Gold and Platinum editions, FoundationDB offers a free edition that is limited in production to 6 processes.