When comparing RethinkDB vs DynamoDB, the Slant community recommends RethinkDB for most people. In the question“What are the best NoSQL databases for web applications?” RethinkDB is ranked 1st while DynamoDB is ranked 12th. The most important reason people chose RethinkDB is:
Only takes about 30 seconds to install. They also have a docker file for running it on AWS, Google Cloud or your own.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Easy install
Only takes about 30 seconds to install. They also have a docker file for running it on AWS, Google Cloud or your own.
Pro Changefeeds (change listeners)
You can listen to changes and trigger code based on these changes.
Pro Powerful query language
RethinkDB's ReQL is a very powerful functional query language. The functional aspects of ReQL and the straightforward implementation of the Node driver for Rethinkdb make it a natural fit for Javascript developers. You no longer have to type some obscure syntax in quotes (aka SQL), your queries are just "natural" Javascript functions in the same way you would use lodash to handle your collections.
Pro Auto master promotion
Unlike a lot of other databases where if the master is down the system is down, this one if the master is down someone else is made master so much more peer to peer.
Pro CLI and web administration tools
RethinkDB has administration tools in both CLI and GUI (web app). You can view whats going on right away by going to localhost:8080. The data explorer allows you to run queries on the db.
Pro Horizontal scalability
RethinkDB is scalable horizontally. It has support for sharding, parallel queries and MVCC concurrency.
Pro Ease of cluster setup
You can directly tell it to shard/replicate and how many shards/replicas depending on the amount of nodes. Each node doesn't need anything except one other node's ip/port in the cluster to join and maybe the auth.
Pro Free tier
DynamoDB offers a free tier which allows up to 40 million database operations a month for free.
Pro Trigger tasks (AWS Lambda) on write
When a new record is written, it can trigger one or many AWS Lambda functions. With Lambda functions in Java, JavaScript, and Python and the other con of "Easy integration with other Amazon services", Lambda functions may be all you need to process the events. This is particularly useful for creating projections (often as other DynamoDB tables) and other read models in a CQRS pattern.
Pro High uptime
Data hosted on DynamoDB is automatically replicated across multiple AWS availability zones, this way the data is protected from any malfunction that may cause loss and it also ensures high uptime.
Pro Easy integration with other Amazon services
Since it's part of AWS, like with other services that Amazon provides, it's very easy to integrate DynamoDB with any other AWS service that you may be using.
Cons
Con Cannot run queries from its CLI
Con No user accounts
This is just the database, you need to setup your own auth and user accounts (such as using Auth0).
Con No specific features for Event Sourcing
DynamoDB is just a general purpose NoSQL database; hence, there are no features specific to the domain of Event Sourcing, such as event ordering or projections. As a developer, you will need to decide how to implement these.
Con Poor documentation
In true AWS fashion, the documentation for DynamoDB is not top notch. While the learning curve is generally very soft and it's not hard to learn, you need to have at least some experience with cloud and database management to be able to start using DynamoDB and understand the documentation.