DBMS vs database vs database engines



I am currently doing some self study on Flask web development with Python and I am stuck on the “Database” topic.

In that particular chapter of the book, it was mentioned that there are many different database framework packages that one can choose from to integrate it with the web application that one is currently developing.

From my understanding on what I have read in the book, database frameworks are database management systems (DBMS) which are software system like MySQL, SQLite, Redis, MongoDB, CouchDB, SQLAlchemy etc that can be used to manage and manipulate the database. However, upon further research on this topic, i find the following pretty confusing:


My question is based on the picture attached above: Are database management system (DBMS), database and database engines the same thing? From the snapshot above, snapshot 1 is saying DBMS (MySQL, SQLite etc.) is a computer software application that is used to manage the database itself. Snapshot 2 is saying that the database is a collection of organized information. Snapshot 3 is saying database engines are software components (InnoDB, Aria etc.) that is used by a DBMS to manage database. These 3 points are totally different and I could not see that how a “database engine” can be equivalent to a DBMS and also the “database” itself as stated in the extract in Snapshot 4 and 5.

Appreciate if someone could enlighten me on this.



Hi @JY93 thank you for the question I never thought about it. I found a Wikipedia-Article about it. Maybe it helpes.

Quote form the article:

Formally, a “database” refers to a set of related data and the way it is organized. Access to this data is usually provided by a “database management system” (DBMS) consisting of an integrated set of computer software that allows users to interact with one or more databases and provides access to all of the data contained in the database (although restrictions may exist that limit access to particular data). The DBMS provides various functions that allow entry, storage and retrieval of large quantities of information and provides ways to manage how that information is organized.

Because of the close relationship between them, the term “database” is often used casually to refer to both a database and the DBMS used to manipulate it.


@DidierCH has the right answer, but basically when programmers say “database” they can mean a DBMS server like MySQL or they can mean “that bag of stuff in the cloud I store”. You just have to infer from context how it’s used.


@zedshaw, @DidierCH:

Thanks for the explanation on the concept of DBMS vs database.
I think i kinda get what do they mean by now.

But I still can’t quite get the definition of “database engine”.
A quote from an article from wikipedia:

The first sentence of the first paragraph is saying that “database engine” or “storage engine” is the underlying software component that a DBMS uses to create, read, update and delete a data from a database.

The first sentence of the second paragraph is saying that “database engine” is frequently used interchangeably with DBMS.

So, based on the description above, what i understood is the following (please correct me if i am wrong):

  1. database engine = storage engine = DBMS = software programs like MySQL, SQLite, Redix etc.

In a later section of the same wikipedia article (picture below), storage engines has been referred to software modules like Aria, InnoDB, MyISAM etc.


My question is how could database engine (Aria, InnoDB etc) be equivalent to DBMS (mySQL, SQLite etc) if in the first place they are referring to different software modules?



Hi @JY93 I draw a little diagramm to show whats going on:


On the bottom you have the DATABASE (a file or a collection of files with the data)

In the middle is the DBMS, the database magement system. This is the database engine. It deals with the data from the DATABASE. It knows how to store, access and alter the data in the database.

On top you have the user, this can be a human working with the DBMS/DATABASE (through command line or a GUI-Tool) or a programm. Notice that every interaction from the user goes throug the DBMS to access and alter data in the database.

Sometimes the two entities DBMS and DATABASE are referred to as one thing.

Often the term “database” is also used to loosely refer to any of the DBMS, the database system or an application associated with the database.

Hope that helps.


I think I understand now what confuses you. I found the article you referring to and there is statet:

A database engine (or storage engine ) is the underlying software component that a database management system (DBMS) uses to create, read, update and delete (CRUD) data from a database.

An other article says:

Connolly and Begg define Database Management System (DBMS) as a “software system that enables users to define, create, maintain and control access to the database”.

That means that I have to update my little graphic:

Explained: The user deals with the DBMS, the DBMS deals with the database engine or with multiple ones and the database engine deals with the database.


@DidierCH your diagram for not include where the user (DBA) hacks data directly into the DB :joy:



Thank you for taking time to draw out a diagram that depicts the relationship between database and DBMS. It really helps a lot.

However, I am still confuse on the following:

Link: https://en.wikipedia.org/wiki/Database_engine

Link: https://www.quora.com/What-are-some-database-storage-engines



On the Quora-Thread you mentioned is a quote, that might help you differentiate the things a bit:

MySQL is a database management system, InnoDB and MyISAM are database engines inside of MySQL.