Software Engineering @ Spotify. Previously Senior Software Engineer @ Goldman Sachs, Quant @ Natixis.

September 16, 2019

Choosing a database

Choosing a database management system for a new project can be tricky. Several criteria should be taken into consideration. In this article, I compare relational, NoSQL and NewSQL database models.

While choosing a database model, we generally have to keep these considerations in mind:

  • Does it need to support *OLTP* operations?
  • Does it need to support *OLAP* operations?
  • Is my data structured?
  • Do I have a high volume of data?
Database Model ideal for not ideal for
Relational OLTP, Structured data High volume of data
NoSQL High volume of data, OLAP OLTP, Structured data
NewSQL High volume of data, OLAP, OLTP, Structured Data

The NewSQL solution seems to promise the best of two worlds; ACID compliant (like relational databases) and horizontally scalable (like NoSQL databases). The only problem seems to be the solution’s maturity; it’s not as mature as relational and NoSQL DBMSs.

Below are some useful material for further reading/listening/viewing.

  • The women in tech show podcast with Deepthi Sigireddi on databases scaling.
  • Software engineering daily podcast with Bryan Reinero on MongoDB.
  • Uber engineering blog on Schemaless.
  • Using Cassandra for storing financial transactions talk.
  • Introduction to Database Management Systems book.
  • Database Systems: Concepts, Design and Applications book.

Hope this article helped with understanding the different tradeoffs we face when choosing a DBMS. You can reach out to me via Twitter if you want to chat more about it!

©2020 Salwa Fathallah

Hugo, Kiss & bb