PUCCA – A five-dimensional evaluation framework to choose which among DynamoDB, Cassandra & MongoDB suits your workload!
I was struggling despite tons of internet materials about how to choose among DynamoDB, Cassandra & MongoDB for my workloads, due to lack of a simple/concise set of guidelines, that I can keep handy & use when I need to.
So I created this acronym as PUCCA to help ask meaningful questions for the right evaluation which of these databases suit the need.
Performance – What are my latency needs? Is a primary key available either in full or part, or do I need alternate indexes or table scans? How my READs & WRITEs will spike, are those predictable or sudden? Can my partitioning strategy lead to hotkeys & throttling? Is multi-master cross-region replication needed? Can I survive a single point of failure? Can storage pattern (key/value, columnar, JSON) impact performance?
Use case – What is my use case? Is it analytics, or an IoT or recommendation engine or gaming app, or is it just a regular CRUD?
CAP/(Consistency, Availability, Partition-Tolerance) – Are my imperatives high availability, fault-tolerance & scalability in processing, or is it the consistency of data?
Cost – If my use case write-heavy then which option costs more? What is the cost of scalability?
Administration – Does it make more sense to go serverless or do I need control over my environment?
Happy to share thoughts.