Database Management System (DBMS) is a software that helps define, create, manage and control databases.
It's like the guy (or entire staff) in the office that stores, sorts, archives, finds and presents the data in your company. And you're the boss - with the use of native language like SQL you directly, or with the proxy of an application, BI tool or other software, can ask to store or return the data, reports or analytics.
Characters of the movie Office Space (1999) - Peter (left) and his boss Bill (right).
Functions of DBMS
DBMS are widely used because they offer a number of useful functionalities:
- Definition of data models (tables, columns, relationships etc.),
- Access control,
- Handling CRUD operations (Create, Read, Update, Delete),
- Ensuring data consistency,
- Query access with interface (e.g. SQL),
- Handling concurrent users,
- Providing and maintaining a data dictionary,
- Transaction management - making sure that all operations in a transaction either complete or are not made at all.
Types of DBMS
There are hundreds of DBMS software out there and you can group them into different categories.
Depending on data model:
- Relational DBMS (SQL databases) store data organized in predefined tables and columns with strict data type and size.
- Document DBMS store data in JSON documents, which are hierarchical sets of key-value pairs.
- Key-value store store data in simple pairs of key-value (in simpliest case both are plain strings), meaning that you can store some value under certain label.
- Graph DBMS represent data as networks built from nodes and relationships.
- Wide column store organize data in columns and can handle large amounts of columns without negative impact on storage (empty cells don't take up space).
- Time series DBMS are databases optimized for handling time series data - arrays of numbers indexed by time.
- Object oriented DBMS represent data in objects, their properties and relationships as defined in object-oriented programming, rather than tables, columns and foreign keys.
The first one (Relational DBMS) refered to as SQL and the rest of them as NoSQL.
You can also clasify DBMS depending on the architecture:
- Client-server database
- In-memory database is a database that uses RAM memory rather than disk storage.
- Embedded database are software embedded into an application (e.g. mobile application) rather than as stand alone service.
- Cloud database is a database available in private or public cloud infrastructure.
- Distributed database is a database that storage is located on disks on separate computers in a network.
- Column-orented database are databases that store data physically organized by colum, rather than rows as in regular databases. This improves performance of analytical queries significantly.
- SQL Server
- IBM Db2
- Berkley DB
Wide column stores
- Apache Cassandra
- Apache HBase
- Google Bigtable
- Oracle BerkleyDB
- SAP SQL Anywhere
- SAP HANA