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.
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.
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.