I have gone through the definition on http://en.wikipedia.org/wiki/Database_engine several times:

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.

What I do not understand is what is left to do, isn't CRUD all that the databases do?

If the database engine performs these functions, what does the rest of the database do?

  • For a direct answer to the question posed in bold (what does the rest of the database do?), see Bryan's answer. For more clarity on what a database engine does, besides CRUD, see Leigh's answer.
    – nealmcb
    Feb 4 '16 at 15:54

CRUD is meant to define the characteristics necessary for a database as it relates to persistent storage. It is not meant to describe everything that could be done by a database engine.

To make a comparison, fundamentally a vehicle is a device used for transport. While true, this definition certainly doesn't include all the detail entailed in a modern automobile.

A database engine might handle multiple users, transactions, MVCC (Multiversion Concurrency Control), buffers and caches, ACID (atomicity, consistency, isolation, durability), as well as different isolation levels. A read may pull data from memory, remote databases, and multiple tables on disk processing it using SQL through multiple explicit and/or implicit code paths in order to present it to the requesting application. A create may allocate storage, provision structures, assign values, and do it's own processing before storing data. Etc.

  • This is a very compact, yet complete, answer. +1 !!! Aug 13 '11 at 21:28
  • BTW Nice analogy about vehicle versus specific type of vehicle. Aug 13 '11 at 21:30
  • 1
    @Leigh, Isn't concurrency (of lack of) a feature of the storage engine and not of the DBMS? If it's a feature of the DBMS, then why couldn't MariaDB/MySQL do transactions for certain storage engines like MyISAM?
    – Pacerier
    Nov 1 '14 at 13:01
  • 1
    @Pacerier - This may be true for systems that make a separation between the DBMS and storage engine, for others the distinction is meaningless. Nov 3 '14 at 21:27
  • 1
    @nealmcb The bold question also has a misconception. Most databases have no distinction between the database engine and the rest of the database. Those that separate the database engine have more than CRUD in the engine. The question cannot be answered directly because it has a false premise. Feb 1 '16 at 16:39

Some databases can run many engines, depending on the best fit for the job. For example, many of my applications use InnoDB for most data (key constraints and row level locking), MyISAM for session data (fast, less processing) and ArchiveDB for audit trail (compressed and insert/select only, no update/delete).

The "rest" of the database software provides a common interface for use through APIs or terminals, allows complex actions (like joins, subqueries, etc.) and manages the health/status and configuration of the included engines. There is a lot to the feeding and care of an engine, and the database software hides all of that complexity.

  • Thanks for actually answering the question posed in bold!
    – nealmcb
    Feb 1 '16 at 15:33

Your Answer

