In our previous posts, we focused attention on different AWS services and the benefits of migrating to Amazon’s relational databases. But which Amazon relational database fits you best? The most common dilemma is choosing between Amazon Aurora and Amazon RDS.
Amazon Aurora is one of Amazon’s most rapidly developing database services. Aurora is a fully managed relational database that brings its users the performance and availability of traditional enterprise databases, as well as the simplicity and cost-effectiveness of open-source databases. It is also known for its strong emphasis on reliability and business continuity.
Amazon RDS, a distributed relational database service with which we have solid expertise, it allows its users to provision, setup, patch, and backup Aurora, MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, and Oracle database engines on AWS. Amazon RDS is close to being a fully managed solution, but it leaves some space for simple database configuration.
In this article, we will compare the two technologies and tell you about their common use cases. Keep reading to know which choice fits you best and when you should go with Aurora or RDS.
A complex database management system migration from Oracle to PostgreSQL involving Aurora and RDS
ABCloudz helped a large educational technology company migrate their customer-facing database management system from Oracle to PostgreSQL in an effort to cut their database maintenance cost. The edtech company needed to adjust their solutions to the needs of their customers. Most of their customers were ready to run their database management systems on Amazon RDS, but some wanted to use Amazon Aurora. The reason was that these customers didn’t want to handle any database maintenance, configuration, and instance switches. Even though Amazon RDS is a more cost-efficient solution than Amazon Aurora, some customers prefer to pay more just to have all database management tasks handled by the provider.
The ABCloudz team used AWS SCT to automatically convert the objects from Oracle to PostgreSQL on Amazon Aurora and pre-configured Amazon RDS servers. Some of these objects could not be converted automatically. We thoroughly researched the infrastructure and converted them manually according to our custom practices. In particular, we applied custom approaches to converting Java, C, Cobol, and Shell data bulk processing apps to Java code that was perfectly compatible with PostgreSQL.
We handled this project in style and brough the customer the main benefits of both Aurora and RDS in a single project. However, not all of our customers want to go with both relational database services. In a situation where there can be only one, it is important to thoroughly compare Aurora and RDS, evaluate their benefits, and understand how the two solutions respond to your needs.
Amazon Aurora vs. Amazon RDS: a comparison
Now it’s time to review and compare the most critical features of Amazon Aurora and Amazon RDS. Based on their vast experience with both technologies, our database specialists have completed the table below.
Aurora | RDS |
---|---|
Performance | |
The throughput performance provided by Aurora is two times higher than the performance of PostgreSQL and five times higher than the performance of MySQL running on similar hardware.
One of the key features behind Aurora’s high performance is that the database service writes logs directly to the storage without keeping any log buffers. In Aurora, all replicas are stored within the same storage cluster, which reduces the replica lag to a minimum. This step helps Aurora’s performance stay consistent even when the loads increase dramatically. |
RDS offers two storage options. The first SSD-backed option provides high performance, which is still lower than the one provided by Aurora.
There’s also a more-cost efficient SSD-backed option that fits general-purpose use cases where high performance is not critical. |
Pricing | |
Aurora is priced according to a pay-as-you-go principle. | RDS is a more cost-efficient option than Aurora. You can try it with no minimum or upfront fees. You will only pay for what you use with Reserver or On-Demand Instances. |
Database compatibility | |
Aurora is compatible with PostgreSQL and MySQL. | RDS is compatible with MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, and Oracle. |
Architecture design | |
Aurora provides a reliable and fault-tolerant architecture by design. It keeps data separate from the instances and makes 6 data copies to 3 Availability Zones. | In RDS, Amazon EBS volumes handle database and log storage. To ensure availability, you must manually enable the Multi-AZ feature on your RDS instance and replicate it synchronously to a standby replica in another Availability Zone. Meanwhile, some vital database architecture features, such as database provisioning and maintenance are handled by AWS. |
Storage and scalability | |
In response to growing workloads, Aurora automatically scales up to a maximum of 128 TiB in minimal increments of 10GB.
Aurora provides automated dynamic scaling without downtime. Also, it can add or delete Aurora Replicas in response to workload changes. |
RDS automatically scales up to 64 TiB in response to growing workloads.
It also offers extensive functionality for manual vertical scaling without downtime. |
Availability and durability | |
Due to its continuous backups and data restoration with a very low recovery point objective, Aurora provides extremely high availability and durability. | You may reach Aurora’s levels of availability and durability with RDS but this will require you to manually max out your read replicas. |
Replication | |
Aurora automatically provides up to 15 replicas in milliseconds. | In RDS, you can provision up to 5 replicas. |
Failover | |
Aurora runs a failover to read replica automatically. It prevents you from data loss and downtime. | Typically, failover to read replica is done manually in RDS. But you can use the Multi-AZ feature to automate failover. |
Cluster endpoints | |
Aurora has a cluster endpoint for read queries. It also offers you a reader endpoint acting as a load balancer for your read replicas | RDS offers you a cluster endpoint that you can use for write queries. In read replicas, you must balance the load in your application with instance endpoints. The problem is that RDS does not provide a load balancer for read replicas. |
Backup | |
Aurora runs continuous and automated backups that do not impact its performance. You can quickly restore your database to any point within the backup retention period. Aurora stores backups in Amazon S3. | RDS uses a backup window of your DB instance to automatically backup the entire instance. RDS allows you to recover your database to any point in time during the backup retention period. All backups are stored in Amazon S3. |
Security | |
You can use AWS Identity and Amazon Access Management (IAM), native to SQL Server and PostgreSQL authentication approaches, or Kerberos for Aurora database authentication. Also, Aurora creates database clusters in a virtual private cloud (VPC). | RDS allows you to encrypt your keys with AWS Key Management Service (KMS). You can also run RDS database instances in a virtual private cloud (VPC). Finally, to manage RDS authentication and permissions, you can use Amazon IAM. |
Limitations | |
There’s a limited number of PostgreSQL extensions for Aurora. | RDS provides a limited number of features for Oracle and there are limitations for Amazon extensions working with PostgreSQL. |
Amazon Aurora vs. Amazon RDS: what to choose and when?
Both Aurora and RDS have many pros and different ideal use cases.
We recommend that you use Amazon Aurora when you’re running enterprise-level or high-load apps where high availability, durability, and performance are vital. Also, if reliability is your top priority, Aurora, which supports more replicas and database copies than RDS, will perfectly fit. Go with Aurora if you prioritize online transaction processing (OLTP) and real-time analytics, data warehousing, and serverless computing.
Serverless computing is supported with a unique storage-optimized instance called Aurora Serverless, which can be integrated with AWS Lambda. Also, Aurora would be a great solution if you want to focus solely on your business needs instead of manually configuring and managing your relational database.
Meanwhile, Amazon RDS will become your dream solution if your budget is limited and your app will deal with small to medium-sized workloads that don’t require extremely high performance. Additionally, RDS will be a perfect solution if you need some customizability in configuring your infrastructure and operating system.
It will fit your needs if you have enough capacity and need to control minor configuration tasks and switch between the instances manually. Also, go with Amazon RDS if you need to run Oracle, MSSQL, and MariaDB databases, which are not compatible with Aurora.
Finally, you may need to use RDS while dealing with legacy apps that don’t run with Aurora or implementing hybrid cloud environments that can be integrated with on-premises databases with the help of AWS Direct Connect.
Conclusions
Different situations will require you to use different relational database services. In some cases, you will need to use both Amazon Aurora and Amazon RDS in your data infrastructure. The good news is that ABCloudz has exceptional expertise in handling database projects that involve both services. Contact us to discuss your needs and see how we will help you benefit from Amazon Aurora, Amazon RDS, or both.