Databases

A database is an organized collection of structured or semi-structured data, stored so that it can be queried, updated, and managed programmatically. The software that mediates access to a database is a database management system (DBMS), which exposes a data model, a query language, and concurrency, durability, and access controls to applications.

Databases are a foundational building block of most software systems. The choice of database shapes how data is modeled, how it can be queried, how it scales, and which consistency and transactional guarantees it can offer. No single database fits every workload, so the field has produced a range of specialized families organized along several overlapping axes.

The most common axis is the data model. Relational databases organize data into tables of rows and columns linked by foreign keys. NoSQL databases drop the relational model in favor of schema-less designs tuned to specific access patterns and horizontal scale.

A second, orthogonal axis separates transactional databases, which serve live operational workloads (OLTP), from analytical databases, which serve read-heavy analytics (OLAP). Either class can be relational or non-relational.

A third axis is deployment topology. Distributed databases spread data across multiple nodes for scale and fault tolerance, while others run on a single node or are held in memory for the lowest possible latency.

Database types

See also