Data-Intensive Applications Series :: Chapter II – Data Models and Query Languages

Hi!

This weekend, I read Chapter II of Designing Data-Intensive Applications. It was a long chapter, but very interesting.

A Data Model is an abstraction of how you represent your data. It shows how your data elements are organized and how they relate to one another. Data Models are one of the most important parts of developing software because they represent how you approach the problem you are solving. You will have to write your code based on the data model that you select for your application. It is important to think in your functional and non-functional requirements when you select the “best fit” – data model.

In this chapter, the author covered the history of Data Models, an overview of each model, and how each model is good in its respective domain.

Data started being represented as one big tree (hierarchical model), but this was not a good model for the “many-to-many” relationships. The relational data model came into the picture to solve this problem. The relational data model has been the dominant for a while because of its simplicity and the broad variety of use cases it can cover.

As technology continues to evolve, applications require different functionalities that the relational data model cannot cover. NoSQL data stores aim to fill this gap. New nonrelational datastores have diverged in two main directions: Document databases and Graph Databases.

My main takeaway from this chapter is: Different data models (document, relational, and graph) are designed to satisfy different use cases. It is important to consider the functional and non-functional requirements to pick a data model that is suitable for your application.

Check my notes to learn more about Data Models.

One thought on “Data-Intensive Applications Series :: Chapter II – Data Models and Query Languages”

Leave a comment