Dave Engberg has published on the Evernote Techblog a post explaining why the Atomicity, Consistency, and Durability characteristics of a single replicated MySQL/InnoDB deployment are essential to the way Evernote operates.
While it’s difficult to argue about a technical decision with so little details available, I still wanted to point out a couple of things:
Atomicity: most of the NoSQL databases offer atomic operation at the level of a single record. For distributed systems that do not want to rely on 2PC, it is the multi-row atomic operations that are not supported.
The example presented in the post does not require multi-row transactions, but rather guaranteed client operation ordering. This is achievable in most NoSQL databases.
Consistency: the post talks about data consistency from the perspective of data integrity guarantees through usage of foreign keys.
In the world of NoSQL similar behavior could be achieved by different data modeling solutions. Using Cassandra as an example for the notebook deletion scenario, one could store all the notes of a notebook in a single Cassandra row, thus making the delete operation safe.
It’s also worth mentioning that many of the eventually consistent NoSQL databases offer different consistent read and write operations.
Durability: with just a few known exceptions, most NoSQL databases offer strong durability guarantees.
In conclusion, based only on the few details of the post, one could easily argument that a NoSQL database would fit the bill. But most of the time the reality behind is much different, making technical decisions a tad more complicated.
Original title and link: WhySQL: MySQL/InnoDB ACID Guarantees for Evernote ( ©myNoSQL)