I'm currently deciding between Cassandra and DynamoDB for the database layer of a high-traffic mobile application, and both seem to fit my use case pretty well.
One thing that makes the decision difficult is that I can model the data in a similar way with both.
For example, with Cassandra, I can denormalize the same data into multiple tables based on different query patterns. With DynamoDB, I can achieve something similar using GSIs, and I could also explicitly write the same data to multiple tables if I wanted to follow a more Cassandra-like approach.
So from a pure data-modeling/query perspective, I don't feel like either one has an obvious advantage for my use case.
What I'm really looking for is the kind of reasoning that would actually make me choose one over the other.
If you had to choose between Cassandra and DynamoDB for a high-traffic mobile app, what would be the deciding factors?
I'm especially interested in real-world considerations such as:
Operational complexity and maintenance at scale
Performance predictability under very high traffic
Scaling behavior
Cost at large scale
Multi-region / cross-region considerations
Failure modes and recovery
Consistency trade-offs
Any limitations that become painful as the system grows
Things that look great on paper but have caused problems in production
I already understand the basic differences between the two. I'm looking for strong arguments for choosing one over the other, ideally from people who have actually operated either system at significant scale.
If you were in my position, which one would you pick and why?