In an effort to combine the best of two database technologies, startup FoundationDB has launched a new data store that it claims can offer the reliability of transactional databases and the scalability and speed of NoSQL.
The data store, also called FoundationDB, is being marketed for organizations that want to consolidate their NoSQL databases into a single architecture.
[ Andrew C. Oliver answers the question on everyone's mind: Which freaking database should I use? | Keep up with the latest approaches to managing information overload and compliance in InfoWorld's Enterprise Data Explosion Digital Spotlight. ]
"Everyone is trying to figure out what the next generation platform will be," said David Rosenthal, co-founder of the company, based in Vienna, Virginia. Many organizations now have a mishmash of NoSQL systems, such as Cassandra or MongoDB, to execute various data storage jobs not well handled by traditional SQL databases. "It becomes an operational issue, having all these different clusters of computers to manage," Rosenthal said.
After over three years of development, the company has released a beta version of this database, which it says is ready for production use.
"People just coming into the NoSQL market will probably pick up MongoDB. But people who have been using those tools for several years, and have been burned by transaction and consistency issues, are looking for something with transactional integrity," said Rosenthal.
FoundationDB is not so much a database as a data storage engine, able to support multiple data storage models, Rosenthal said. The software stores data as simple key-value pairs, and offers a wide variety of data models, including models for storing graphs, documents, arrays, tables, and associative arrays.
FoundationDB doesn't offer the traditional SQL interface, but instead offers data access through C, Python, Ruby, Node.js and Java APIs.
"FoundationDB is a storage engine that can support [multiple] NoSQL data models. We can support a document data model to replace MongoDB, or support a key-value model to replace memcached, or support a graph model to replace Neo4J," Rosenthal said.
The secret to handling these different types of data models is transactional integrity, long thought to be impossible to achieve with distributed NoSQL-style databases.
Once you partition a database across multiple nodes, according to Eric Brewer's now famous CAP Theorem, that system can offer consistency (in which all nodes have the same data) or availability (in which the system always responds to an incoming requests even when some nodes are not working), but not both.
NoSQL data stores have grown in popularity over the past few years for offering the ability to easily scale across multiple nodes, even if many only offer what is called eventual consistency, in which data is not immediately synchronized across multiple nodes. The downside is that this could lead to different responses to the same query within short periods of time.