I read everywhere that Aurora is more performant (claims etc). If that's the case and cost differences are ignored, what would be the reason for any one to use RDS MySQL? What are the technical differences between the two which would make someone not choose Aurora?


Solution 1:

The technical differences are summarised nicely in this SlideShare - http://www.slideshare.net/AmazonWebServices/amazon-aurora-amazons-new-relational-database-engine

It's really quite a different architecture/implementation under the covers from standard MySQL, and one that is fundamentally closed.

Amazon are being coy about the extent to which the front end is a MySQL derivative or a complete rewrite that is protocol-compatible - see http://www.theregister.co.uk/2014/11/26/inside_aurora_how_disruptive_is_amazons_mysql_clone/?page=2 - but it looks likely it's at least a major fork with lots of new code. It will have different bugs from the main MySQL releases, which users will be reliant on Amazon to fix. A distributed transactional database backend is a complex thing to write, and while Amazon have some of the best engineers in the world for this sort of system, it's still quite new.

It relies on a completely new Amazon-specific multi-tenanted storage backend, and the updated software isn't freely available as open source, so you can't just download it and run it on your own servers. It may diverge over time (e.g. years) in terms of functional features supported, meaning that code developed against Aurora may no longer work against mainstream MySQL releases, providing a risk of increased lock-in to Amazon.

Regardless, especially if your application needs them, the performance, low replica lag, scalability and recovery time reductions over standard MySQL look pretty compelling in the short term. The lock-in and costs are certainly much lower than with, for example, Oracle's Exadata - which is really the class of solution that Amazon are targetting.

Solution 2:

Aurora is 5.6 compatible so if for some reason you need something below 5.6 you wouldn't use it. Also Aurora only supports innodb so if you utilize and need myisam tables then you would use MySQL

Solution 3:

With Aurora you also get integrations to other AWS services on a natural way:

  • Lambda functions
  • LOAD DATA FROM S3 or LOAD XML FROM S3
  • SELECT INTO OUTFILE S3

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Integrate.html