The Different Types Of Database Management Systems (DBMS)
...and which one to use for your next project
In my last post on Object-Relational Mapping (ORM), I open up by placing emphasis on the importance of adequate data management. I know there is a concept in programming called DRY (Don't Repeat Yourself!), but since we are outside of the IDE I am going to anyways! I will continue to double down on that statement until I have reason to believe otherwise. The configuration and maintenance of a proper data management system can be quite robust however, often requiring a lot of planning. One way to ensure an efficient system when dealing with large quantities of data, is the implementation of a Database Management System.
What Is a Database Management System?
A Database Management System (DBMS) acts as an interface between the end user and the database, handling the storage, retrieval, and updating of data in a computer system. Aside from the primary responsibilities of storing and retrieving data, DBMS also offers a slew of additional benefits as well. DBMS leverages a multitude of different techniques to ensure data security - masking, tokenization, encryption, access control lists, permissions, firewalls, and virtual private networks, just to name a few .
The Different Types of DBMS:
There are many different types of DBMS, but for the purposes of this writing, we are going to take a look at some of the most common database models that they manage:
Relational
Relational Database Management Systems (RDBMS) are a type of database that store and provide access to data points that are related to one another. Relational databases are based on the relational model, an intuitive, straightforward way of representing data in tables. Data is stored in independent tables, and indexed with a unique ID, called a key. Each compartmentalized table may share a relationship with other tables. Relational databases are the most common and widely used databases.
Pro's: Simplicity, Speed, Security
Con's: Cost, Storage
Popular DBMS: Microsoft SQL Server, MySQL, PostgreSQL, Oracle Database, Amazon RDS
Hierarchical
Hierarchical databases are data models in which data is organized into parent-child structures, where one parent node can have many child nodes connected through links, similar to a tree. Therefore a hierarchical approach to data storage is great for data that is explicitly structured in hierarchal fashion, featuring one-to-many relationships, such as a coach with many players, or a boss with many employees. While this works well for this linear approach, more complex data structures, featuring many-to-many relationships become less ideal given this rigidity.
Pro's: Logically Simple, Clear Chain of Command
Con's: Flexibility
Popular DBMS: IBM IMS, Windows Registry
Network
Inverse of the tree-like structure of a hierarchical database, a network database is a model wherein multiple member records or files can be linked to multiple owner files and vice versa. While both hierarchical and network databases allow each record to have multiple child records, only network databases allow each record to also have multiple parent records.
Pro's: Logically Simple, Supports Multiple Types of Relationships, Data Integrity
Con's: Complex Implementation, Flexibility
Popular DBMS: IDS, IDMS, Raima Database Manage
NoSQL
A bit of a misnomer considering NoSQL stands for “not only SQL” rather than “no SQL” (although storing and retrieving data can in fact be accomplished without using any SQL). NoSQL databases are non-tabular, meaning they store data in documents rather than relational tables. As a result they offer a high degree of flexibility, since they don't rely on fixed schemas, like some of the other methods listed above. This flexibility makes them an ideal candidate for semi-structured and unstructured data. There are even different sub-types of NoSQL, with the 4 most common being: Document, Key-Value, Wide-Column, & Graph databases.
Pro's: Flexibility, Scalability, High-Performance, Highly Functional
Con's: Lack of Standardization, Inadequate Backup, Consistency
Popular DBMS: MongoDB, Apache Cassandra, Couchbase
Conclusion
As mentioned, there are even more types of database structures than those listed above. Hopefully this illustrates by now just how many different ways there are to organize data. With a solid vision and game-plan in place however, we can make informed decisions related to which configuration best satisfies the needs of our application. With an adequate back-end roadmap in place, we can then seek out a corresponding DBMS to help us interact with the data. There are many DBMS providers on the market, each with their own advantages and disadvantages, but the most important step is understanding how we want to format and interact with our data.