Managing a database can be time-consuming, and often there’s no need to.
In recent years, more and more providers have been offering managed, cloud-based database services, meaning they handle infrastructure needs, software patching, back-ups and many other administrative tasks.
AWS offers a range of database solutions, with the four most popular being Amazon Aurora, Redshift, RDS and DynamoDB.
However, each service is very different, and it can be difficult to determine which best fits your need. In many situations, multiple databases are part of the solution. Here’s an overview of each one to help inform your decision.
What database solutions are offered by AWS?
Amazon RDS is the first-port-of-call service. The one for when you’re simply looking to offload your database management workload. It’s compatible with six popular database engines – Amazon Aurora, MySQL, MariaDB, PostgreSQL, Oracle and Microsoft SQL Server, which means it can be operated just like any of these databases.
It’s worth noting here that RDS is the only DB on this list compatible with the popular Microsoft SQL Server, although those wishing to access the benefits of the other services might consider migrating to an engine compatible with Redshift, DynamoDB or Aurora.
Like all the other databases on this list, excluding DynamoDB, RDS is a relational database which simply refers to the nature of the data storage.
As in an Excel workbook which has been formatted as a table, the data is constituted by its value – the data in the cell – and the relationship that cell has to its column/row headers. This is a little simplified, as a relational database is a little more complex than an Excel workbook, but not much, and it’s a good way of explaining the meaning of the phrase.
Amazon Redshift is also a managed database service and a relational database, running its own engine adapted from PostgreSQL. It can be more costly, more complex to work with and much more powerful.
Redshift is an OLAP database, standing for ‘online analytical processing’. This means it’s especially suited to processing analytical queries involving more complex calculations. Because of its vast storage potential and differing functionality, Redshift is sometimes referred to as a data warehouse.
Redshift is an enterprise-level DB, mostly used by large companies.
DynamoDB is a key-value database which runs the NoSQL engine, this means it treats all data within it as being composed of a list of attributes and values as opposed to data points constituted by the relationships between cells and column/row headers (as in a relational database).
This makes the data stored in DynamoDB ‘dynamic’ which means it’s easier to modify. Key-value databases are best suited to certain use cases such as session data and shopping cart information and can achieve a fast throughput of read/write requests.
DynamoDB is also an enterprise-level solution.
Amazon Aurora is a database engine that can be run on RDS or as Aurora Severless. Aurora is MySQL and PostgreSQL compatible which means that the language which programmes it is functionally similar to these engines, although it is an engine in its own right.
Further, Aurora has significantly higher performance stats compared to MySQL and PostgreSQL run on RDS.
Aurora is also an enterprise solution, even when used with RDS.
How do they compare?
RDS – Because RDS is less complex, it’s easier to scale – requiring just a few clicks on the AWS Console to determine an auto-scale max capacity. It can be run using a reserved capacity or on-demand.
Redshift – Redshift’s infrastructure is more complicated, meaning there’ll be more downtime and complexity involved in scaling. Using Elastic Resize, Redshift can be scaled more quickly, but it still doesn’t quite close the gap with RDS. At the extreme end of things, however, Redshift is probably the better choice, since its Concurrency Scaling feature – which costs extra – allows it to take on a virtually limitless amount of queries.
DynamoDB – DynamoDB scales seamlessly with no impact on performance. And the user may choose to run DynamoDB on on-demand or in provisioned capacity mode, in which a limit can be set on scale, much like RDS.
Aurora – How Aurora scales depends on whether it’s running on RDS or Aurora Serverless. On RDS, it scales as described above. Aurora Serverless, however, will automatically start-up, scale-up, scale down and shut down in-line with your application’s needs. But although this sounds impressive, Aurora Serverless is not the most robust solution, being more subject that most of the other solutions on this list to restrictions.
If you have standard scaling needs, RDS is the better option. If you have enterprise needs, and the time and budget, Redshift might be preferable depending on the types of queries you’ll be running. Similarly, if you have a very high-volume of read/write requests, DynamoDB may work better. And if you want a more powerful relational database for non-analytical purposes, Aurora might be best, although you should consider the restrictions ‘serverless’ will impose on your work.
It depends on what you need to scale.
RDS – RDS’s storage limit depends on which engine you’re running, but it tops out at 64 TB using Amazon Aurora. SQL accommodates 16 TB, and all the other engines allow for 32TB.
Redshift – Redshift’s max capacity is much higher at 2PB.
DynamoDB – DynamoDB has limitless storage capacity.
Aurora – Aurora’s max capacity is 64TB when run on RDS, as stated above.
Not complicated – Redshift has more storage and DynamoDB has limitless storage.
RDS – Again, RDS’s pricing is affected by the engine used, but generally it’s cheaper than the others. RDS is available under a pay-as-you-go model, with a higher tariff, or a reserved instance model at a lower tariff and a commitment to a certain amount of usage. This includes when running Aurora. More on how the DB engines affect RDS can be found here.
Redshift – Redshift is also available on a reserved instance and an on-demand model, with additional features, such as Concurrency Scaling, being charged under a different scheme.
DynamoDB – DynamoDB can be charged under an on-demand or provisioned model like RDS but with some variation. Under on-demand, users will be charged per read/write and in the provisioned model, which is similar to AWS’s reserved Instances, users pay at a lower rate for an anticipated amount of read/write.
However, it’s worth noting that the key-value system can make DynamoDB the most costly DB by far if not managed correctly.
Aurora – Aurora’s pricing falls under RDS’s when run as such. When run serverless, you’re charged by ACUs, (Aurora capacity units) which equal 2GB of memory and corresponding compute and network.
Redshift is more expensive at its base rate and has additional pricing models for additional features. DynamoDB’s pricing is similar to RDS but reflects its differing functionality. Aurora is priced as RDS when run as RDS but differently when run serverless.
RDS & DynamoDB – Your RDS and DynamoDB instances will be maintained by AWS for the most part, with the user having the option to defer certain updates.
Redshift – Redhsift requires more maintenance. Users are advised to perform ‘vacuuming’, which makes cells from which data has been deleted available for storage. It’s also advised that you monitor your queries’ performance. Using AWS Console, you can check how long it takes for your query to be performed, how much CPU it’s using, and more.
However, Redshift is still easier to maintain than a traditional database.
Aurora – Aurora’s maintenance is synonymous with RDS’s when run with RDS. When run serverless, there is virtually no maintenance required.
While all are managed database services, Redshift’s complexity incurs some user maintenance costs. Dynamo DB’s doesn’t. Aurora can be run as a managed database or serverless, requiring very little maintenance.
- If you’re most interested in offloading the management costs of a relatively simple database: one with a max volume in the terabytes and standard queries, you’ll probably pick RDS.
- If you have the time, financial resources and the requirement to invest in, and maintain, a DB service to deal with complex queries and vast amounts of storage need, then Redshift is the one for you.
- If you have enterprise-level requirements suited to key-value databases, then you’ll obviously pick DynamoDB
- For an enterprise-level relational database, with serverless options, there’s Aurora.
- Which database you use depends on your needs, and most people use multiple databases.
If you’re having trouble picking a database and would like further information, or someone to take your the job off your hands, get in touch.
For more help with AWS service comparisons, check out our piece on EBS vs EFS vs S3.