AWS currently offers three relational database services:
- AWS RDS
- AWS Aurora
- AWS Redshift
Which relational database service to pick?
- If you don’t have any special requirements, then AWS RDS offers a good balance between performance, pricing, and flexibility. It is compatible with MySQL, MariaDB, PostgreSQL, Oracle, and Microsoft SQL Server allowing you to migrate without changes to your application.
- If you are looking for an OLAP database to run your data warehouse, then the higher storage capacity and performance of AWS Redshift might make the difference. It supports up to 2 PB of storage, compared to 32 GB of RDS. Redshift runs its own engine adapted from PostgreSQL. While being still easier to maintain than a traditional database, it requires more maintenance effort compared to RDS or Aurora.
- If you need a high-performance enterprise-level OLTP database, then AWS Aurora might be the best choice for you. It scales incredibly well, and offers significantly higher performance stats compared to RDS. It is the perfect candidate for database consolidation which can provide significant cost savings.
Monitor and optimize performance
You can use DevOps Guru or RDS Performance Insights to monitor the performance of your database. This will allow you to right-size both the instance and storage size. You can also optimize your performance and costs by:
- Choosing the region according to your needs to avoid unnecessary transfer costs.
- Choosing the right database engine to accommodate your needs but also cut costs.
- Consolidating your databases rather than running multiple instances.
- Choosing the optimal storage class, right-size it and enable storage autoscaling.
- Choosing the appropriate pricing model. You can use on-demand pricing for development database servers, and use AWS Instance scheduler to shut them down when unused.
- Enabling Multi-AZ only when needed. If you don’t need very high availability, then disable Multi-AZ and cut costs significantly.
- Choosing your optimal backup retention period, and removing unused snapshots to cut unnecessary costs.