DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

Aurora


Amazon Aurora is a relational database offered as a service integrated in AWS's Relational Database Service. Based on the open source MySQL, it is a commercial database that claims to be compatible with MySQL and PostgreSQL while providing superior throughput. As a cloud service, Aurora promises high availability. The system is being actively maintained and updated by Amazon.

Developer
Country of Origin
US
Start Year
2014
Project Type
Commercial
Written in
C
Supported Languages
SQL
Derived From
MySQL
Operating System
Hosted

Database Entry

Aurora


Amazon Aurora is a relational database offered as a service integrated in AWS's Relational Database Service. Based on the open source MySQL, it is a commercial database that claims to be compatible with MySQL and PostgreSQL while providing superior throughput. As a cloud service, Aurora promises high availability. The system is being actively maintained and updated by Amazon.

History


Aurora was announced on Nov. 12, 2014 in Amazon's re:Invent conference in Las Vegas. It's officially released and ready to use as a service in AWS on July 27, 2015 by being added into Amazon Relational Database Service. A major patch of Aurora was added in October 24, 2017, where Aurora was extended with PostgreSQL compatibilities.

Checkpoints[03]


As claimed in the Aurora paper, the system doesn't need checkpointing to do fast recovery. The system has the following features to make that possible: + Using a distributed replication of backend storage. This makes it possible to use quorum based read for recovery. + The database engine only propagates logs to the backend storage, where the backend storage keeps processing these logs asynchronously to bring the database to its latest state. These designs make fast logging recovery very easy in Aurora, since the system can easily be brought to a consistent state that is not far from the time of crushing, by utilizing read quorums among all replicated backend storages.

Concurrency Control[04][03]


Aurora decouples the storage engine from its database engine, and the concurrency control protocol is entirely decided by the database engine it used. In the paper that introduced Aurora, the concurrency control model was stated to be exactly the same as the database engine it inherited from. So Aurora has the same concurrency control protocol, MVCC, as MySQL/InnoDB does. InnoDB's MVCC protocol stores a separate data structure for "rollback segments", which are actually undo logs. In the situation of a consistent read (for isolation levels beyond read committed), the logs will be applied in place to reconstruct the requested earlier versions of a row.

Data Model[05]


Aurora is stated to be a relational database engine. That can also be inferred from its full inheritance of MySQL/InnoDB's database engine and storage layout.

Foreign Keys[06]


Aurora supports foreign keys, just as MySQL/InnoDB does. Best practice guide on Aurora's documentation provided some insights on how to properly use foreign keys, please refer to the citation for more details.

Indexes[07][08][09]


Aurora uses the same indexes as MySQL/InnoDB. In MySQL, both b-tree and hash indexes are used. The default index choice for MySQL is b-tree unless explicitly specified. Aurora also supports spatial indexes, and its implementation utilizes a b-tree.

Isolation Levels[10][03]


In the paper that introduced Aurora, the authors stated that Aurora has exactly the same isolation levels as MySQL. The supported isolation levels includes the standard ANSI levels and Snapshot Isolation.

Joins[11]


Aurora has the different join algorithm as MySQL. It supports hash join in addition to the already-existing nested loop join in MySQL. When the hash join option is enabled, the optimizer will automatically choose a join method as it evaluates the query plan. However, there are several restrictions when trying to use hash join in Aurora. In specific, Left-right outer joins, semijoins such as subqueries and multiple-table updates or deletes are not supported.

Logging[03]


Aurora's logging design is typically logical logging. It uses a design that separates the database engine and the backend storage, where the database engine propagates logs continuously to the backend storage. Such logs are then asynchronously processed by the distributed storage servers to bring the database to its latest state.

Query Compilation


Similar to MySQL, Aurora doesn't support query conpilation.

Query Execution


Aurora uses the same query execution engine as MySQL.

Query Interface[08][12][13]


SQL

Aurora supports the standard SQL query interface. It inherits the SQL compatibility from MySQL, as well as the extensions MySQL made to the SQL standard.

Storage Architecture[03]


Aurora is a disk-oriented database.

Citations

13 sources
  1. Relational Database – Amazon Aurora MySQL PostgreSQL – AWS amazon.com
  2. Managing an Amazon Aurora DB cluster - Amazon Aurora amazon.com
  3. https://www.allthingsdistributed.com/files/p1041-verbitski.pdf allthingsdistributed.com Dead — Check Archive
  4. https://dev.mysql.com/doc/refman/8.0/en/innodb-multi-versioning.html mysql.com
  5. Amazon Aurora DB clusters - Amazon Aurora amazon.com
  6. Best practices with Amazon Aurora MySQL - Amazon Aurora amazon.com
  7. https://dev.mysql.com/doc/refman/5.7/en/create-index.html mysql.com
  8. Working with Amazon Aurora MySQL - Amazon Aurora amazon.com
  9. https://dev.mysql.com/doc/refman/5.7/en/index-btree-hash.html mysql.com
  10. https://dev.mysql.com/doc/refman/5.7/en/innodb-transaction-isolation-levels.html mysql.com
  11. Best practices with Amazon Aurora MySQL - Amazon Aurora amazon.com
  12. https://dev.mysql.com/doc/refman/5.7/en/compatibility.html mysql.com
  13. https://dev.mysql.com/doc/refman/5.7/en/extensions-to-ansi.html mysql.com
Revision #5