I recently came across this question from Yehuda-Daniel Korotkin in the NoSQL forum of Linkedin asking “Do you think it possible to make transactions in NoSQL?”
I encounter this question in one form or another pretty much all the time and respondents usually steer the person to the many resources that show that, quite reasonably, you can make a transaction with NoSQL… if the database technology is architected form the start to support it.
This time, however, one of the first comments started dismissing the need for the requirement: “Support for ACID transactions makes NoSQL databases a little useless because they become significantly slower while offering much less functionality than traditional databases.”
No No No! Don’t worry Daniel – you can have transactions with NoSQL! And unlike the hopeful legend of Virginia and Santa Claus where the answer is about faith… you can, very tangibly and without giving up functionality, have it today with Enterprise NoSQL.
Here is a quick summary of my post to that thread:
- Yes, you can have ACID with NoSQL!
- Not having it means that the system didn’t consider the ‘Management System’ part of the DBMS in its original design
- MarkLogic does this with Multi Version Concurrency Control (timestamp control over the cluster), shared nothing scale out (to simplify the updates and power truly parallelized query processing) and clusters to clusters to manage even the biggest data sets. And we’re happy to show anyone how we do it, here is a deep-dive a paper and an overview presentation on exactly what MarkLogic does under the hood.
- This isn’t theory (or faith): some of the larger MarkLogic databases are a 1024 cluster that maintained performance as it scaled out and a 36-billion document database where a single document value update was reflected in the next search or query . . . Not to mention the 100s of MarkLogic-powered mission critical applications where people rely on data constancy to run their business.
- Without ACID, transactions and data consistency in the database, creating and managing this functionality is left as an exercise for the developers. The results are plain to see for anyone whose Linkedin update didn’t stick or Facebook posts come in randomly and in duplicate. And those are excellent, engineering focused technology companies – just think about what’s going in places whose main business isn’t technology!
So start with the right DBMS and yes, Daniel, you (and everyone else looking for the new generation of database) can have NoSQL with ACID!
Now as to that other big question around this time of year… here is a very old post about Santa (and actually batch updates with transactions) that certainly puts me in the Virginia camp!