FoundationDB, which combines a NoSQL key-value store with support for ACID transactions to ensure consistency, has reached general availability after an 18-month Alpha and Beta testing program involving more than 2,000 participants.

Current NoSQL databases have, in general, not included support for ACID (Atomic, Consistent, Isolated, Durable) transactions, meaning the database developer has to either write their own code for transaction management or live with potential problems if a transaction doesn’t complete correctly. Transactions should be atomic in the sense that all changes to data are performed as if they are a single operation. That is, all the changes are performed, or none of them are. Money isn’t transferred out of one account unless it’s successfully transferred into another, for example.

The transaction should be consistent in the sense that data is in a consistent state when the transaction starts and when it ends. Using our money transfer example, the total value of the money taking both accounts into consideration should be the same at the beginning and the end of the transaction.

A transaction should be isolated in the sense that the intermediate states of the transaction are invisible to other transactions so that more than one transaction can run at the same time. When transferring the money in our imaginary transaction, another transaction would see the money in one account or the other, but never in both, and never in neither account. Durability ensures that once the transaction is completed, the changes are permanent and not undone, even if there’s a system failure. These four qualities of transactions underpin standard databases.

In this short video FoundationDB's Developer Evangelist Stephen Pimentel explains the advantages of ACID transactions:

While other NoSQL databases stop short of full support for ACID transactions, FoundationDB has this support. Announcing the new release, OpenSource Connections says:

"many of the new NoSQL databases frequently have rigid transactionality features. HBase, for example, only gives you transactionality guarantees for a single row”.

FoundationDB is a key-value store that implements its ACID compliance using a C++-based language called Flow that is used by machines in a cluster to communicate about transaction processing and conflict resolution. Flow adds actor-based concurrency to C++ via a set of new keywords and control-flow primitives for managing concurrency. It is implemented as a compiler which analyzes an asynchronous function (actor) and rewrites it as an object with many different sub-functions that use callbacks to avoid blocking. Streamlinejs is a similar concept using JavaScript. The Flow compiler's output is normal C++11 code, which is then compiled to a binary using traditional tools. A whitepaper on Flow explains how it works.

FoundationDB can be deployed in configurations from a single server, to a cluster in a private datacenter, or in the cloud, or anything in between. It comes with APIs for C, Python, Ruby, Node.js and Java. It supports a number of different models including JSON document, graph, and SQL following FoundationDB's purchase of Akiban this July.

You can try FoundationDB out for free under its Community License, and run as many server processes as you’d like to in non-production use. You can even use up to six processes in production for free with no sign up necessary. Commerical licences start at $99 per process per month.

FoundationDB can be downloaded for Ubuntu, RHEL/CentOS, OS X, Windows and Amazon EC2,

Just when you thought the the adversarial image flaw in neural networks couldn't get any worse someone comes along and shows how to build such images in the real world. Yes, a stop sign can be changed [ ... ]

Barely a year after the launch of the Stack Overflow Documentation website, the decision has been taken to close it with almost immediate effect. It turns out that this ambitious project was simply fi [ ... ]