DynamoDB: a pain in the ass worth it for some use cases
October 09, 2015

DynamoDB: a pain in the ass worth it for some use cases

Jordan Bayles | TrustRadius Reviewer
Score 8 out of 10
Vetted Review
Verified User

Software Version

Latest

Modules Used

  • AWSSDK for .NET with DynamoDB backing

Overall Satisfaction with Amazon DynamoDB

Amazon DynamoDB is utilized by my company on a client-by-client basis to solve issues with responsiveness. We use it in conjuction with Amazon CloudSearch to provide extremely fast lookup and modification of entities that would otherwise be difficult to retrieve through a more traditional relational database (such as our current relational database at my current client, PostgreSQL).
  • Amazon DynamoDB excels at quite, intuitive object retrievals. The usage of hash and range keys to retrieve flat objects means it's easy to understand what you are going to get and how to map out objects into entities in your data access layer.
  • Amazon DynamoDB is great at adding new indexes to a table, making it fast and intuitive for prototyping.
  • The ability to use Amazon CloudWatch monitoring on Amazon DynamoDB is very helpful for managing data analysis and discovering issues without a large investment.
  • Because of the lack of relations in AmazonDynamoDB, mapping very complex objects that you would typically decompose into related entities is difficult. Amazon DynamoDB is typically not great for this use case.
  • Amazon DynamoDB doesn't do strong type checking (there is typing, but it's relatively limited), so depending on your language you may have to expend some effort to properly map an Amazon DynamoDB object to a programmatical entity.
  • Depending on how much need you have for Amazon DynamoDB's performance, it can be a major pain to maintain... especially if you also have a relational database. In my current project, we utilize Amazon DynamoDB alongside PostgreSQL and entities live in one, the other, or both as appropriate. Synchronizing the database is a pain point.
  • We have had to back out some entities out of Amazon DynamoDB in favor of a relational database, which has been a major issue costing us around 20 man days of effort.
  • Amazon DynamoDB has given us extremely fast search, by indexing dynamo entities in Amazon CloudSearch and then doing fast lookup in dynamo of the key stored in Amazon CloudSearch.
  • Overall, Dynamo has been a pain point due to smaller situations typically requiring a simple, relational database. I would be enthusiastic about Dynamo for large tables, but when needs are smaller it can be overkill.
Amazon DynamoDB is a strong contender for an enterprise NoSQL database. We chose Amazon DynamoDB due to:

  1. easy inclusion in our AWS architecture
  2. fast performance with no setup
  3. appropriate balance of object retention and speed compared to other databases available in AWS
Many of our projects are too small to fully appreciate the value of Amazon DynamoDB. I would be enthusiastic if I felt the use case warranted Amazon DynamoDB, otherwise it's just a major pain.
How performant does my solution need to be? Amazon DynamoDB is very fast.
What is the total scope of my entities? Do they need to be relational? If they serialize well as a flat entry, Amazon DynamoDB is a great choice.