Overall Satisfaction with Amazon DynamoDB
DynamoDB was used by our enterprise data platform team to store data in forms that would often change over time. It was a great NoSQL option for us since the entire team was already on AWS anyways and acquainted with its UI. While it had many advantages, DynamoDB was more of a niche solution for us since, as a data platform, we required the more advanced query and indexing capabilities of an RDS database. DynamoDB was never a permanent solution for us, only a temporary place-holder until we had the database schema finalized for an RDS database. Because of its elastic nature and ease-of-use to set up with our existing infrastructure, it worked well for our team.
- Pro: Scalable to Infinity. There are no problems with data when it comes to DynamoDB. We set up a script in our monitoring application that would automatically allocate more storage through the AWS API's whenever our capacity hit 80% of allocated storage.
- Pro: Easy Setup. DynamoDB will automatically scale horizontally and vertically (if requested) with no maintenance or human intervention required. Set it up once and it will run forever.
- Pro: EMR integration. If you use Elastic Map Reduce for your analytics, DynamoDB will integrate nicely.
- Cons: NoSQL limitations. You can only do ~1MB queries and ~64kb of row size, something that will become a real bottleneck as your database grows and your queries become more complex. NoSQL also means that querying non-indexed data is incredibly limited and will often become completely impossible when your table grows. This is why my team opted for DynamoDB as a temporary solution until we finalized our RDS options.
- Cons: AWS limitations. You can only deploy this on AWS, meaning access from Azure or GCloud is going to be more of a challenge and a security risk. I would not recommend DynamoDB unless you already have your infrastructure on AWS.
- Cons: Backing Up. Backing up is quite tedious on DynamoDB compared with RDS. While RDS can be as simple as a button click, DynamoDB can take hours of tedious work. AWS gets around this by horizontally scaling your instances, but any good team is going to want to back up their data and on DynamoDB that will be postponed as long as possible.
- DynamoDB allowed us to quickly launch applications and data ingestions that we thought would take months to implement. While it turned out to be an unfruitful DBaaS system to support an application, its quick launch and self-sustaining capabilities allowed it to work effortlessly while our DevOps team could focus on more permanent application solutions.
Easy to use and easy to stop using. It is the perfect interim solution for any team needing a rapid database solution without the hassle and restrictions of a full-RDS database. While it is a pain to use outside of infrastructure systems hosted on AWS, it is perfect for those that are.
Great for temporary data storage or data that has a particularly short lifecycle and can be processed then disposed of quickly. I would not recommend DynamoDB for any long-standing applications or user-based systems. DynamoDB data should be ingested, processed, analyzed, then removed. The infrastructure setup allows for confidence that your data will be there when you need it but only for a short period of time. Backups are not worth the effort, so keep that in mind.