What's the difference between DBMS, database engine and storage engine?
I am not from a CS / software engineering background but recently I have started begin self studying on Flask web development with Python.
I am currently on the "Database" topic and upon doing further research on this topic on the internet, I have came across a few terminology, which are database, DBMS, database engine and storage engine. Different sources in the Internet seems to be giving a different definitions of the above.
From the internet and Miguel Grinberg's web development book, this are some of the points that I am confused about:
In Miguel's Grinberg book, the author seems to be inferring that database engine = DBMS = software applications like MySQL, SQLite, Postgres etc.
Source: Pg 53 of Miguel Grinberg's book under the Database chapterIn Wikipedia, database engine (or storage engine, which is stated in Wikipedia) is mentioned to be software application like InnoDB, MyISAM, Aria etc.
Link: https://en.wikipedia.org/wiki/Database_engineIn Quora, a commenter (Stephen Kinght) was saying that DBMS and database engine is two different entities, whereby database engine is just part of a component in the DBMS which is in charge of managing the database.
Link: https://www.quora.com/What-are-some-database-storage-engines
So, based on the three points above, the questions that I have in mind are as follow:
Is DBMS = database engine / storage engine = software applications like MySQL, SQLite, Postgres etc?
ORIs DBMS != database engine / storage engine? (whereby DBMS = MySQL, SQLite, Postgres and database engine / storage engine = InnoDB, Aria, MyISAM etc respectively?)
I really appreciate if someone could help to clear my doubts on this terminology. I have tried doing research on the Internet and also going through the post in Stack Overflow but I still can't really get the concept right.
Thanks!
database
add a comment |
I am not from a CS / software engineering background but recently I have started begin self studying on Flask web development with Python.
I am currently on the "Database" topic and upon doing further research on this topic on the internet, I have came across a few terminology, which are database, DBMS, database engine and storage engine. Different sources in the Internet seems to be giving a different definitions of the above.
From the internet and Miguel Grinberg's web development book, this are some of the points that I am confused about:
In Miguel's Grinberg book, the author seems to be inferring that database engine = DBMS = software applications like MySQL, SQLite, Postgres etc.
Source: Pg 53 of Miguel Grinberg's book under the Database chapterIn Wikipedia, database engine (or storage engine, which is stated in Wikipedia) is mentioned to be software application like InnoDB, MyISAM, Aria etc.
Link: https://en.wikipedia.org/wiki/Database_engineIn Quora, a commenter (Stephen Kinght) was saying that DBMS and database engine is two different entities, whereby database engine is just part of a component in the DBMS which is in charge of managing the database.
Link: https://www.quora.com/What-are-some-database-storage-engines
So, based on the three points above, the questions that I have in mind are as follow:
Is DBMS = database engine / storage engine = software applications like MySQL, SQLite, Postgres etc?
ORIs DBMS != database engine / storage engine? (whereby DBMS = MySQL, SQLite, Postgres and database engine / storage engine = InnoDB, Aria, MyISAM etc respectively?)
I really appreciate if someone could help to clear my doubts on this terminology. I have tried doing research on the Internet and also going through the post in Stack Overflow but I still can't really get the concept right.
Thanks!
database
add a comment |
I am not from a CS / software engineering background but recently I have started begin self studying on Flask web development with Python.
I am currently on the "Database" topic and upon doing further research on this topic on the internet, I have came across a few terminology, which are database, DBMS, database engine and storage engine. Different sources in the Internet seems to be giving a different definitions of the above.
From the internet and Miguel Grinberg's web development book, this are some of the points that I am confused about:
In Miguel's Grinberg book, the author seems to be inferring that database engine = DBMS = software applications like MySQL, SQLite, Postgres etc.
Source: Pg 53 of Miguel Grinberg's book under the Database chapterIn Wikipedia, database engine (or storage engine, which is stated in Wikipedia) is mentioned to be software application like InnoDB, MyISAM, Aria etc.
Link: https://en.wikipedia.org/wiki/Database_engineIn Quora, a commenter (Stephen Kinght) was saying that DBMS and database engine is two different entities, whereby database engine is just part of a component in the DBMS which is in charge of managing the database.
Link: https://www.quora.com/What-are-some-database-storage-engines
So, based on the three points above, the questions that I have in mind are as follow:
Is DBMS = database engine / storage engine = software applications like MySQL, SQLite, Postgres etc?
ORIs DBMS != database engine / storage engine? (whereby DBMS = MySQL, SQLite, Postgres and database engine / storage engine = InnoDB, Aria, MyISAM etc respectively?)
I really appreciate if someone could help to clear my doubts on this terminology. I have tried doing research on the Internet and also going through the post in Stack Overflow but I still can't really get the concept right.
Thanks!
database
I am not from a CS / software engineering background but recently I have started begin self studying on Flask web development with Python.
I am currently on the "Database" topic and upon doing further research on this topic on the internet, I have came across a few terminology, which are database, DBMS, database engine and storage engine. Different sources in the Internet seems to be giving a different definitions of the above.
From the internet and Miguel Grinberg's web development book, this are some of the points that I am confused about:
In Miguel's Grinberg book, the author seems to be inferring that database engine = DBMS = software applications like MySQL, SQLite, Postgres etc.
Source: Pg 53 of Miguel Grinberg's book under the Database chapterIn Wikipedia, database engine (or storage engine, which is stated in Wikipedia) is mentioned to be software application like InnoDB, MyISAM, Aria etc.
Link: https://en.wikipedia.org/wiki/Database_engineIn Quora, a commenter (Stephen Kinght) was saying that DBMS and database engine is two different entities, whereby database engine is just part of a component in the DBMS which is in charge of managing the database.
Link: https://www.quora.com/What-are-some-database-storage-engines
So, based on the three points above, the questions that I have in mind are as follow:
Is DBMS = database engine / storage engine = software applications like MySQL, SQLite, Postgres etc?
ORIs DBMS != database engine / storage engine? (whereby DBMS = MySQL, SQLite, Postgres and database engine / storage engine = InnoDB, Aria, MyISAM etc respectively?)
I really appreciate if someone could help to clear my doubts on this terminology. I have tried doing research on the Internet and also going through the post in Stack Overflow but I still can't really get the concept right.
Thanks!
database
database
asked Nov 16 '18 at 7:27
user10661325user10661325
162
162
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
A DBMS must always include a storage engine to play their role. That's modulo the in-memory-only systems that are deliberately designed to lose all data once switched off (and of which it might for that reason be considered questionable to call them 'DBMS' in the first place).
But a DBMS does more for a user than a mere storage engine does. E.g. a DBMS also performs integrity checks on the data presented by the user during database updating.
And DBMS stands for Data Base Management System which clearly indicates that it is a software (/engine) used for the purpose of managing a database (an organized collection of data).
So by conventional wisdom, you'd have DBMS = database engine = IMS / IDMS / DB2 / PostgreSQL / ... and storage engine = storage component used by a DBMS, often proprietary and in fact unnamed but not always, with some of the "named" storage engines MyISAM, InnoDB, Microsoft Jet, BerkeleyDB (???) and possibly others.
Unfortunately a vast majority of database practitioners in the industry are guilty of using these terms interchangeably, sloppily and wrongly, thereby causing/contributing to/perpetuating the very confusion that caused you to ask this question. You've been warned :-)
add a comment |
I would consider DBMS to refer to the software product as a whole - PostgreSQL, Oracle, DB2 etc.
These are large, complex products, however. As is usual for complex software they are split into components, each with its own specific function and with well-defined interfaces between them. One component will deal with validating and parsing SQL; one will look after memory; another will handle IO, and so on. This last - the IO one - is often referred to as the storage engine, I guess because it "drives" the data to and from disk. Why it's called an engine rather than a component or sub-system is anyone's guess.
There is no ISO standard for these names. So any vendor, academic or bloggist is free to use, re-use and define the terms as he or she sees fit.
Some DBMS allow for a variety of IO components, each implementing different technologies. MySQL has InnoDB and MyISAM. MongoDB has WiredTiger and MMap. SQL Server has different on-disk formats and behind-the-scenes algorithms if the data is in "normal" tables, in-memory tables, or has a columnstore index. These could be thought of as different storage engines if that is the terms the author choses to use.
Since the basic purpose of a DBMS is to store and retrieve data it is easy to see how the storage part can become synonymous with the product as a whole. From this perspective the other components are seen as ancillary to storage. Perhaps this was true once. In modern systems that support sophisticated authentication, multi-model APIs and memory-only storage I think this would no longer be defensible.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53333241%2fwhats-the-difference-between-dbms-database-engine-and-storage-engine%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
A DBMS must always include a storage engine to play their role. That's modulo the in-memory-only systems that are deliberately designed to lose all data once switched off (and of which it might for that reason be considered questionable to call them 'DBMS' in the first place).
But a DBMS does more for a user than a mere storage engine does. E.g. a DBMS also performs integrity checks on the data presented by the user during database updating.
And DBMS stands for Data Base Management System which clearly indicates that it is a software (/engine) used for the purpose of managing a database (an organized collection of data).
So by conventional wisdom, you'd have DBMS = database engine = IMS / IDMS / DB2 / PostgreSQL / ... and storage engine = storage component used by a DBMS, often proprietary and in fact unnamed but not always, with some of the "named" storage engines MyISAM, InnoDB, Microsoft Jet, BerkeleyDB (???) and possibly others.
Unfortunately a vast majority of database practitioners in the industry are guilty of using these terms interchangeably, sloppily and wrongly, thereby causing/contributing to/perpetuating the very confusion that caused you to ask this question. You've been warned :-)
add a comment |
A DBMS must always include a storage engine to play their role. That's modulo the in-memory-only systems that are deliberately designed to lose all data once switched off (and of which it might for that reason be considered questionable to call them 'DBMS' in the first place).
But a DBMS does more for a user than a mere storage engine does. E.g. a DBMS also performs integrity checks on the data presented by the user during database updating.
And DBMS stands for Data Base Management System which clearly indicates that it is a software (/engine) used for the purpose of managing a database (an organized collection of data).
So by conventional wisdom, you'd have DBMS = database engine = IMS / IDMS / DB2 / PostgreSQL / ... and storage engine = storage component used by a DBMS, often proprietary and in fact unnamed but not always, with some of the "named" storage engines MyISAM, InnoDB, Microsoft Jet, BerkeleyDB (???) and possibly others.
Unfortunately a vast majority of database practitioners in the industry are guilty of using these terms interchangeably, sloppily and wrongly, thereby causing/contributing to/perpetuating the very confusion that caused you to ask this question. You've been warned :-)
add a comment |
A DBMS must always include a storage engine to play their role. That's modulo the in-memory-only systems that are deliberately designed to lose all data once switched off (and of which it might for that reason be considered questionable to call them 'DBMS' in the first place).
But a DBMS does more for a user than a mere storage engine does. E.g. a DBMS also performs integrity checks on the data presented by the user during database updating.
And DBMS stands for Data Base Management System which clearly indicates that it is a software (/engine) used for the purpose of managing a database (an organized collection of data).
So by conventional wisdom, you'd have DBMS = database engine = IMS / IDMS / DB2 / PostgreSQL / ... and storage engine = storage component used by a DBMS, often proprietary and in fact unnamed but not always, with some of the "named" storage engines MyISAM, InnoDB, Microsoft Jet, BerkeleyDB (???) and possibly others.
Unfortunately a vast majority of database practitioners in the industry are guilty of using these terms interchangeably, sloppily and wrongly, thereby causing/contributing to/perpetuating the very confusion that caused you to ask this question. You've been warned :-)
A DBMS must always include a storage engine to play their role. That's modulo the in-memory-only systems that are deliberately designed to lose all data once switched off (and of which it might for that reason be considered questionable to call them 'DBMS' in the first place).
But a DBMS does more for a user than a mere storage engine does. E.g. a DBMS also performs integrity checks on the data presented by the user during database updating.
And DBMS stands for Data Base Management System which clearly indicates that it is a software (/engine) used for the purpose of managing a database (an organized collection of data).
So by conventional wisdom, you'd have DBMS = database engine = IMS / IDMS / DB2 / PostgreSQL / ... and storage engine = storage component used by a DBMS, often proprietary and in fact unnamed but not always, with some of the "named" storage engines MyISAM, InnoDB, Microsoft Jet, BerkeleyDB (???) and possibly others.
Unfortunately a vast majority of database practitioners in the industry are guilty of using these terms interchangeably, sloppily and wrongly, thereby causing/contributing to/perpetuating the very confusion that caused you to ask this question. You've been warned :-)
edited Nov 19 '18 at 7:59
answered Nov 16 '18 at 10:40
Erwin SmoutErwin Smout
15.4k42249
15.4k42249
add a comment |
add a comment |
I would consider DBMS to refer to the software product as a whole - PostgreSQL, Oracle, DB2 etc.
These are large, complex products, however. As is usual for complex software they are split into components, each with its own specific function and with well-defined interfaces between them. One component will deal with validating and parsing SQL; one will look after memory; another will handle IO, and so on. This last - the IO one - is often referred to as the storage engine, I guess because it "drives" the data to and from disk. Why it's called an engine rather than a component or sub-system is anyone's guess.
There is no ISO standard for these names. So any vendor, academic or bloggist is free to use, re-use and define the terms as he or she sees fit.
Some DBMS allow for a variety of IO components, each implementing different technologies. MySQL has InnoDB and MyISAM. MongoDB has WiredTiger and MMap. SQL Server has different on-disk formats and behind-the-scenes algorithms if the data is in "normal" tables, in-memory tables, or has a columnstore index. These could be thought of as different storage engines if that is the terms the author choses to use.
Since the basic purpose of a DBMS is to store and retrieve data it is easy to see how the storage part can become synonymous with the product as a whole. From this perspective the other components are seen as ancillary to storage. Perhaps this was true once. In modern systems that support sophisticated authentication, multi-model APIs and memory-only storage I think this would no longer be defensible.
add a comment |
I would consider DBMS to refer to the software product as a whole - PostgreSQL, Oracle, DB2 etc.
These are large, complex products, however. As is usual for complex software they are split into components, each with its own specific function and with well-defined interfaces between them. One component will deal with validating and parsing SQL; one will look after memory; another will handle IO, and so on. This last - the IO one - is often referred to as the storage engine, I guess because it "drives" the data to and from disk. Why it's called an engine rather than a component or sub-system is anyone's guess.
There is no ISO standard for these names. So any vendor, academic or bloggist is free to use, re-use and define the terms as he or she sees fit.
Some DBMS allow for a variety of IO components, each implementing different technologies. MySQL has InnoDB and MyISAM. MongoDB has WiredTiger and MMap. SQL Server has different on-disk formats and behind-the-scenes algorithms if the data is in "normal" tables, in-memory tables, or has a columnstore index. These could be thought of as different storage engines if that is the terms the author choses to use.
Since the basic purpose of a DBMS is to store and retrieve data it is easy to see how the storage part can become synonymous with the product as a whole. From this perspective the other components are seen as ancillary to storage. Perhaps this was true once. In modern systems that support sophisticated authentication, multi-model APIs and memory-only storage I think this would no longer be defensible.
add a comment |
I would consider DBMS to refer to the software product as a whole - PostgreSQL, Oracle, DB2 etc.
These are large, complex products, however. As is usual for complex software they are split into components, each with its own specific function and with well-defined interfaces between them. One component will deal with validating and parsing SQL; one will look after memory; another will handle IO, and so on. This last - the IO one - is often referred to as the storage engine, I guess because it "drives" the data to and from disk. Why it's called an engine rather than a component or sub-system is anyone's guess.
There is no ISO standard for these names. So any vendor, academic or bloggist is free to use, re-use and define the terms as he or she sees fit.
Some DBMS allow for a variety of IO components, each implementing different technologies. MySQL has InnoDB and MyISAM. MongoDB has WiredTiger and MMap. SQL Server has different on-disk formats and behind-the-scenes algorithms if the data is in "normal" tables, in-memory tables, or has a columnstore index. These could be thought of as different storage engines if that is the terms the author choses to use.
Since the basic purpose of a DBMS is to store and retrieve data it is easy to see how the storage part can become synonymous with the product as a whole. From this perspective the other components are seen as ancillary to storage. Perhaps this was true once. In modern systems that support sophisticated authentication, multi-model APIs and memory-only storage I think this would no longer be defensible.
I would consider DBMS to refer to the software product as a whole - PostgreSQL, Oracle, DB2 etc.
These are large, complex products, however. As is usual for complex software they are split into components, each with its own specific function and with well-defined interfaces between them. One component will deal with validating and parsing SQL; one will look after memory; another will handle IO, and so on. This last - the IO one - is often referred to as the storage engine, I guess because it "drives" the data to and from disk. Why it's called an engine rather than a component or sub-system is anyone's guess.
There is no ISO standard for these names. So any vendor, academic or bloggist is free to use, re-use and define the terms as he or she sees fit.
Some DBMS allow for a variety of IO components, each implementing different technologies. MySQL has InnoDB and MyISAM. MongoDB has WiredTiger and MMap. SQL Server has different on-disk formats and behind-the-scenes algorithms if the data is in "normal" tables, in-memory tables, or has a columnstore index. These could be thought of as different storage engines if that is the terms the author choses to use.
Since the basic purpose of a DBMS is to store and retrieve data it is easy to see how the storage part can become synonymous with the product as a whole. From this perspective the other components are seen as ancillary to storage. Perhaps this was true once. In modern systems that support sophisticated authentication, multi-model APIs and memory-only storage I think this would no longer be defensible.
answered Nov 18 '18 at 10:00
Michael GreenMichael Green
1,20111422
1,20111422
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53333241%2fwhats-the-difference-between-dbms-database-engine-and-storage-engine%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown