What is a Database Management System
In the earlier article What Is a Database we learned that databases are just files or groups of files that contained structured data. This leaves us with the obvious question then of "What are these huge applications that we install an call databases?" That's a great question. These applications that we often simply refer to as databases as actually Database Management Systems or DBMS, for short.
Some common examples of DBMSs include Microsoft SQL Server, Oracle Database, MySQL, MariaDB, PostgreSQL, Firebird, IBM Informix, Sybase ASE, MongoDB, Redis, CouchDB, ElasticSearch, Cassandra, HBase, and RIAK. We use DBMSs nearly everywhere. It is generally a DBMS that provides the real "power" of what we think of as databases.
The DBMS is what converts a simple database file into a living, breathing service. In order for there to be safe multiple-application access to a database, it must be through a DBMS. In order for a database to talk over a network connection, there must be a DBMS. In order for there to be users and access controls (beyond ACLs on the database files themselves) you need a DBMS. Replication, backups, monitoring - basically everything that a database does is really the DBMS doing the work for us. Most aspects of database performance come from this layer, as well, including things like in-memory caching.
What a DBMS really is, is an application that connects to the database file(s) and then presents them to the world, sort of a "gatekeeper" of sorts. The DBMS can cache reads and writes going to the database files, can ensure that the right access permissions and priorities are maintained, can execute queries, arbitrates multi-user access and so forth. A DBMS is truly one of the most powerful and useful types of software that we will ever use. And that terminology provides us with an important distinction - a database is just a file, a database management system is software; structured data vs. code that manages structured data.
It is most common that a single DBMS will manage many databases. For example, if we were to install MariaDB on a server, we could easily have two or three or even one hundred different databases being managed by a single DBMS instance. When accessing MariaDB over a network connection, we have to first tell MariaDB which of its databases we want to access as part of our connection string. MariaDB then checks the user and network permissions for that specific database and grants or denies access based on those permissions. MariaDB "networkifies" the database, provides memory caching and runs the queries against it.
A DBMS can also have one or more "database engines." The database engine is the common name for the library, driver or portion of code that is used to read and write directly to the on-disk database file itself. Many DBMS have just one engine, but more and more we find that two or more are common. MariaDB famously has many engine options and more can be installed. Each engine allows for a different on-disk file format or type and has different features and performance characteristics. The two most common MariaDB database engines are MyISAM and InnoDB, but there are many more. Someone developing a database with MariaDB would choose their database engine based on needs - MyISAM tends to be much faster, but InnoDB has more features.
This article is part of a series of Foundational IT Knowledge - SAM IT Basics.
Quick Note on Pronunciation:
SQL is a language developed by IBM and is pronounced like the English word "sequel." It is, in fact, an abbreviation of that word. It's original name was actually SEQUEL but due to copyright issues, it was changed to SQL.
MS SQL Server is pronounced MS "sequel" Server. Never spell it out.
MySQL is proncounced "My S-Q-L", never "My Sequel." This is a commercial product with an official pronunciation.
PostgreSQL is pronounced "Post - Gres - Q - L". It's a weird name, what can we say.
Discussion on pronunciation was sent over to: https://mangolassi.it/topic/12698/pronunciations-of-sql-derived-database-names-and-terms
To me, any acronym's pronunciation is about saving time with fewer syllables or by using a pronunciation that is an actual English word. Even though the longer ess kew ell is considered to be historically original, it has more syllables than sequel, thereby making it utterly inefficient at expressing the same acronym for people whose time is valuable. Fewer syllables = I'm not spending any extra time saying what I need to say. Regardless of what anyone thinks is "standard" or "accepted", the pronunciation with fewer syllables should always win. Unless you just like hearing yourself talk.
As far as wikipedia is concerned, I was not allowed to use it as a reference for any of my papers or it would not be considered a reference and that was the reasoning from the school. This was also 10 years ago too. Times change, and so might wikipedia now.
I didn't look into it too much deeper as I was just a fledgling college student with no credibility yet and so, no point on fighting about it. It was their rule, I simply obeyed it and carried it with me as a rule afterwards.
Still true here today, FYI.
You will often hear or see the term RDBMS or Relational Database Management System. This term refers to a subset of DBMS, not an alternative, and is specific to those DBMS that handle relational database formats. The term SQL is often incorrectly applied to these, but SQL is a language and relational databases are a mathematical model. While the two have a relationship (no pun intended) they are different things completely and are not directly tied together. Today, what is and is not an RDBMS is increasingly unclear as nearly all DBMS have some relational element and even the most traditional RDBMS stalwarts have begun to add non-relational engines or options.