One of our readers recently sent me a link to GitHub, demonstrating how you can achieve ACID capabilities in the Amazon DynammoDB. Amazon DynamoDB is a distributed database engine running in the Amazon services. It released with the capabilities of supporting Consistency and Durability, without focusing on Atomicity and Isolation.
Lookup ACID on Wiki if you are not familiar with the Acronym.
By providing CD in DynamoDB, Amazon provided an engine that was streamlined, scalable, and maintained reliable data in the physical storage. If you do not have concurrent reads against the same data, then the additional overhead of Atomicity and Isolation slows performance. A database that is primarily writes would follow this pattern.
As the use of distributed database engines continues to grow, they are moving closer to the complete ACID stack we have come to require in traditional database engines. The blog our reader sent demonstrates how you may add in Atomicity, and/or Isolation to your database queries through the use of transactions. By separating these features it provides the developer the power to determine when they are used. However, unlike the SQL Counterparts, the implementation is a little bit more complicated.
I’d like to see some benchmarks to see what the impact of performance is by adding these capabilities. Their implementation of ACID capabilities is pretty traditional. It is definitely different from that demonstrated on the CockroachDB presented a few days ago.
See what you think. Share your experience on DynamoDB in our comments. Are you even considering NoSql engines?