MSSQL vs Aurora vs DynamoDB vs ElastiCache

Just a few years ago, the number of database technologies could almost be counted on the fingers of one hand. Nowadays there are as many options for each use case.
As ever, the abundance of options contributes to the complexity of making a choice. The type of data which will be stored, its amount, the way it is used, accessed and stored are points that need to be well-considered before jumping on-board with a (or several) database technology(ies).
In many cases, it is difficult to use a single technology for all data storage needs and can end up with a data architecture consisted of several technologies.
There is a hypnotic side in the complication of a harmonic mixed data architecture.
Mixed Data Architecture
Polyglot Persistence by Alex Garland, 2015, April

This blog is about the performance comparison of just four relational and NoSQL database technologies; Microsoft SQL Server, Aurora, DynamoDB and memcached on ElastiCache, which all are available in Amazon Web Services.
You can read more about database technologies at “Don’t get distracted by new database technology“.

Knowing how different database technologies operate for different functions, helps to choose the right technology. As we needed a speed comparison of the few technologies we were considering. I started by setting up small applications for the create, read, update, delete(CRUD) operations with each database technology and executed the applications on EC2, to provide the same connectivity for all databases. All the databases were hosted on AWS and accessed from a Windows EC2 instance.
The performance test was run for 100 and 1000 records consecutively and results are displayed in the following graphs.

Database Performances for 100 Records
Database Performances for 1000 Records

I was not surprised by how slow MS SQL performed, however did not expect that Aurora would do so well, even compared to the NOSQL DynamoDB. In the other hand, even though ElastiCache is not in the same league as the other three, still having it in the graph puts things in perspective.

These results have helped us distribute our database across three technologies and try to get the most of each. I hope this will be useful to someone.

8 thoughts on “MSSQL vs Aurora vs DynamoDB vs ElastiCache”

  1. I’d suggest a breakdown of the hardware configuration and queries executed as all other performance studies show that SQL Server as well as Oracle are 5-6x as fast as any mySQL implementation, Aurora or otherwise. It is difficult to give this comparison when the basic tenants of technology comparisons are left out …

  2. All the database were generated via AWS RDS with equivalent configuration. The application was stored on an AWS EC2 instance each time and executed the same dataset(a user list) 3 times against each database and used the averages.
    You are right IrishSamurai, I could have added more information about the test environment.

  3. Would be good if you could expand on which MS SQL you were using & how you used it. eg:
    a. Amazon’s RDS (Their version of SQL Server is pretty ordinary. Most RDS features aren’t supported. )
    b. SQL Server on a VM. If so, which version, how was it configured, was it optimized for the workload (eg: In-memory tables, row level compression etc etc)

    Would also be good to compare Aurora (Amazon’s DBaas product) with Microsoft’s equivalent – Azure SQL. Unlike the AWS RDS offering, Azure SQL has been optimized for cloud. eg: Fault tolerant, distributed storage, auto-scale etc.

Leave a Reply

Your email address will not be published. Required fields are marked *