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 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,