What is a DBMS ?

A DBMS is a piece of software intended to manage large amount of data in a robust and efficient manner. A DBMS simplifies the storage and retrieval of data from user perspective. It engages a complex data structure based internal engine for processing the data and provides a simple external interface to user for performing various operations on data. This way the user does not have to bother micromanaging the storage and access methods.

A database often refers to the actual data that the DBMS uses. But due to the close relationship between database and DBMS typically these terms are interchangeably used. We can collectively call them Database System.

Typical DBMS Architecture


A DBMS gives certain advantages over the classic file system based storage mechanisms:

  1. Data independence : Database applications need to be independent from the internal details of data representation and storage. The DBMS provides an abstract view of the data to insulate application code from such details.
  2. Efficient data access : A DBMS uses some sophisticated techniques to store and retrieve data efficiently.
  3. Data integrity and security : Data if always accessed through DBMS, integrity constraints on data can be enforced. The DBMS can regulate access controls and make the data visible to candidate users.
  4. Data administration : When several users share the data, centralizing the administration of data offers visible improvements. Database administrators can organize the data representation to minimize redundancy and fine-tune the storage of the data to make retrieval efficient.
  5. Concurrent access : Concurrent  accesses to the data are scheduled in such a manner that gives user a view of data being accessed by only one user at a time.
  6. Scalability : The database should be able to handle higher workload with addition of new hardware resources.
  7. High availability and crash recovery : The DBMS can provide uninterrupted access to data despite of hardware/software failures.

Note : A DBMS can be highly optimized for certain kinds of workloads. Its performance may not be adequate for all use cases or some specialized applications.