AWS Certified Cloud Practitioner
RDS vs Aurora vs DynamoDB: which AWS database to choose
Amazon RDS runs managed relational databases with engines such as MySQL, PostgreSQL, Oracle and SQL Server. Amazon Aurora is a relational engine within RDS, compatible with MySQL and PostgreSQL. Amazon DynamoDB is a serverless NoSQL database with no servers, versions or maintenance windows, and it does not support SQL JOINs.
Amazon RDS: managed relational databases
Amazon RDS sets up, operates and scales a relational database in the AWS Cloud. It supports IBM Db2, MariaDB, Microsoft SQL Server, MySQL, Oracle Database and PostgreSQL.
RDS manages backups, software patching, automatic failure detection and recovery. A Multi-AZ deployment keeps a standby DB instance in a different Availability Zone to fail over to. Read replicas increase read scaling.
AWS compares who does what. Running a database yourself on EC2, AWS handles the hardware, but you patch the operating system and the database software, take backups and set up high availability. On RDS, AWS takes over those tasks. Application optimization and query tuning stay with you in every model.
Amazon Aurora
Aurora is a fully managed relational database engine compatible with MySQL and PostgreSQL. The code, tools and applications you use with those databases work with Aurora.
AWS states Aurora delivers up to 6x the throughput of stock MySQL and up to 6x the throughput of stock PostgreSQL on similar hardware. Its storage grows automatically as needed.
Aurora is part of Amazon RDS. You pick Aurora MySQL or Aurora PostgreSQL as the engine, and RDS handles provisioning, patching, backup, recovery and repair.
Amazon DynamoDB: serverless NoSQL
DynamoDB is a serverless, fully managed NoSQL database with single-digit millisecond performance at any scale. It supports key-value and document data models.
There are no servers to provision and no software to patch or install. DynamoDB has no versions to upgrade and no maintenance windows, and maintenance has zero downtime.
Unlike relational databases, DynamoDB does not support a JOIN operator. It does support ACID transactions across one or more tables. By default it replicates data across three Availability Zones, and global tables replicate to AWS Regions you choose.
Access is controlled through IAM, so DynamoDB has no database user names or passwords.
Where the exam catches people
- Believing query tuning becomes AWS's job on RDS: query tuning and application optimization stay with the customer.
- Believing hardware lifecycle moves to AWS when you move from EC2 to RDS: AWS already handles hardware on EC2; OS patching is what moves.
- Believing Aurora is a separate service from RDS: Aurora is an engine choice within Amazon RDS.
- Believing DynamoDB can join tables with SQL: it has no JOIN operator, so you denormalize your data model.
- Believing RDS is serverless with no maintenance windows: that describes DynamoDB.