FoundationDB releases beta of its "NoSQL/YesACID" database
FoundationDB has released a beta version of its NoSQL database which it says offers ACID transactions, a feature that is often sacrificed to create scalable NoSQL systems. The company has been working on FoundationDB for three years and the beta comes after a year-long alpha test. Based around an ordered key/value store written in Flow, FoundationDB wraps the store in a selection of data model layers; Flow is an Actor-based concurrency system written for C++11 by FoundationDB. The core key/value store works solely with byte strings.
Of the surrounding layers, support for Tuples is built in, while other layers offer Arrays, Tables, Graphs, Documents, Multimaps and Simple indexes. The Tuple layer offers support for encoding integers, Unicode strings and floating point numbers and the other data model layers are built on top of the Tuple layer. Operations on these layers can be grouped as transactions which then offer rollback on failure.
These data models are complemented by utility layers which offer support for Blobs, Publish/Subscribe, Compressed columns, spatial indexes and task buckets (for distributing work between clients). Above those layers are implementations of Counters and Queues to help with high contention data sets. Developers can communicate with these layers through APIs in Python, Ruby, Node.js, Java and C.
The company claims high performance from the database when used on a 24-machine cluster but does note a range of design limitations in FoundationDB, such as transaction size maxima of 10MB, maximum sizes of keys (10,000 bytes) and values (100,000 bytes) and a decision made not to support transactions that take over 5 seconds.
FoundationDB is not open source, but the developers say they will be looking at open sourcing some of the layers and language bindings. When the final version is released, as well as the full commercial version of FoundationDB, a "community version" of FoundationDB will also be available which will work with small clusters. Access to the beta is available through a registration form and agreement with a beta licence.