17.1 RDS Supported Engines: MySQL, PostgreSQL, MariaDB, Oracle, SQL Server
Right, let’s talk engines. This is where you choose your database’s entire personality. RDS doesn’t build the car; it just gives you a world-class, managed garage and pit crew for a few specific models. Your job is to pick the right one for the race you’re running. The big five are MySQL, PostgreSQL, MariaDB, Oracle, and SQL Server. Each has its own quirks, costs, and reasons for existing. I’ll be honest with you, the choice here isn’t just technical; it’s often political and financial. Let’s cut through the noise.
The Open Source Trio: MySQL, PostgreSQL, MariaDB
These are the workhorses of the internet for a reason. The biggest benefit here, frankly, is that the license cost is zero. You pay for the underlying AWS resources, not the database software itself.
PostgreSQL is the academic overachiever that grew up to be incredibly robust. Its SQL compliance is excellent, and it’s packed with advanced features like native support for JSONB (which is JSON, but actually useful for querying), range types, and fantastic geospatial capabilities with the PostGIS extension. If you need to do something complex and correct, Postgres is probably your answer. Setting one up is blissfully simple.
aws rds create-db-instance \
--db-instance-identifier my-smart-postgres-db \
--db-instance-class db.t3.micro \
--engine postgres \
--master-username postgres \
--master-user-password Sup3rS3cr3t! \
--allocated-storage 20 \
--no-publicly-accessible
MySQL is the speedy populist. It got famous for being fast and easy to use, often at the expense of strict SQL standards. That’s changed a lot in recent years, and it’s now a profoundly serious database. Its replication story is solid, and it has immense ecosystem support. You’ll find more third-party tools that connect to MySQL than perhaps any other database. Just be prepared for some of its… unique default configurations (I’m looking at you, ONLY_FULL_GROUP_BY).
MariaDB is MySQL’s fork, born from concerns when Oracle acquired Sun Microsystems (and thus MySQL). It positions itself as the “open” alternative and often introduces new features faster. For most use cases, it’s a drop-in replacement for MySQL. The question of “MySQL or MariaDB?” is often decided by your company’s stance on Oracle. The technical differences are, for the vast majority of us, negligible.
The Corporate Heavyweights: Oracle and SQL Server
Here’s where your CFO starts getting nervous. You’re no longer just paying AWS; you’re also paying Oracle or Microsoft. The licensing is the single most important and convoluted part of this decision.
Oracle on RDS is what you use when a massive, legacy enterprise application demands it, or you’re deeply invested in the Oracle ecosystem with things like PL/SQL. The licensing models are a nightmare—you can bring your own license (BYOL) or use License Included (which is just AWS baking the eye-watering cost into your bill). My advice? Don’t make this decision yourself. Involve whoever signs the checks and an oracle DBA (the job role, not the database). It’s a different world.
SQL Server is the king of the Windows ecosystem. If your company runs on .NET, Active Directory, and Windows servers, this is your natural habitat. The integration is seamless. Like Oracle, you have BYOL and License Included options. It also has specific editions on RDS (Express, Web, Standard, Enterprise) which have hard limits on database size and features. Don’t get caught out by the 10GB limit of SQL Server Express on RDS—it’s a trap for the unwary.
# Creating a SQL Server instance with License Included
aws rds create-db-instance \
--db-instance-identifier my-windows-app-db \
--db-instance-class db.t3.small \
--engine sqlserver-se \
--license-model license-included \ # This is the important bit
--master-username admin \
--master-user-password Sup3rS3cr3t! \
--allocated-storage 50
The Critical Choice: Engine Versioning
This isn’t just “pick PostgreSQL.” You must pick a major version of PostgreSQL. This is a crucial long-term decision. RDS will happily let you run ancient, unsupported versions, but for the love of all that is holy, don’t. Always choose a currently supported major version. Minor version upgrades (e.g., PostgreSQL 15.2 to 15.3) are handled automatically by AWS with zero downtime—it’s one of the best features of RDS. But major version upgrades (e.g., PostgreSQL 14 to 15) are a manual process that requires a downtime window. You can’t procrastinate forever; eventually, your old version will be deprecated. Start new projects on the latest stable major version to give yourself the longest runway possible.