Today you have more choices than ever when it comes to DBMS engines. There are the “traditional” RDBMS engines (like MySQL, PostgreSQL, Microsoft SQL Server, Oracle…), NoSQL/NewSQL engines (MongoDb, Redis, Cassandra…), and BigData engines (Hadoop, Spark…), with more entrants every quarter.
This array of choices can be dizzying for an architect, as how do you know which to use, and which engine(s) are right for your application? Do you rely on a single DBMS engine, or do you need more than one to fit your requirements? More importantly, how do you ensure you are using the selected engine properly?
With all these types of DBMS engines available, there is one thing that remains constant in my mind: All Data is Relational.
This idea may sound surprising, and ever-so “1980s” but bear with me while I explain my reasoning. I think you’ll see that this concept applies to all DBMS engines, understanding and applying this simple concept can help you tame your database tier in the most effective way for your application.
The Meaning of Data
Data is only useful if it has meaning – meaning that is interpreted and used by your application. For data to have meaning, it must be related to other data. In fact, I would go so far as to say that it’s a relational world we live in, and data in a database is best described as a representation of that world.
For example, let’s say you have a piece of data: colour
Immediately, you will ask the question colour of what? Well, it could be the colour of a chair, an image, an animal… almost anything.
Now let’s say we are talking about a car, and by colour we are referring to an attribute of a specific car. Through this relationship the data now has meaning, now we understand what we are talking about.
Of course there are lots of more complex relationships than this in the world. For example, a single car manufacturer produces many cars; this is a one-to-many relationship. A customer can buy many cars; this is another one-to-many relationship. In a single family there can be many drivers, and many cars; this describes a many-to-many relationship between car and driver.
In a social network, a friend is associated with other friends, another example of a one-to-many relationship. However, this is only partially true, because each friend in the network can have many friends. Therefore, friend to friend is also a many-to-many relationship. (This description is the basic definition of a social graph, a very special type of relationship management.) The common saying “you are who you know” embodies the very idea that data has meaning through relationships.
Just take a look around you, there are data relationships everywhere, this is how the world is organized, and how we understand things. Even as you read this article, you are one of many readers, yet another one-to-many relationship.
THIS IS A PREVIEW. DOWNLOAD ISSUE 12 TO READ THE FULL ARTICLE.