A database system is the combination of a database—a structured collection of data stored persistently—and the software that manages it, known as a database management system (DBMS). The DBMS provides the means to define, create, query, update, and administer the database, while also enforcing rules about data integrity, security, and concurrency. The central subject of the field is not merely storing data, but doing so reliably, efficiently, and usefully in the face of large volumes, many simultaneous users, and the constant risk of hardware or software failure.
The enduring questions of database systems revolve around a small set of intertwined challenges. Data modeling asks how to represent the structure of real-world information—entities, their attributes, and the relationships among them—in a way that is both expressive and implementable. Query processing concerns how to translate a user's high-level request for data into an efficient sequence of operations, given that many different execution strategies may produce the same answer. Transaction management addresses the problem of multiple users reading and writing the same data concurrently, requiring mechanisms to ensure that operations do not interfere destructively and that the database remains consistent even when a crash occurs mid-operation. Storage and indexing deals with how data is physically laid out on disk or in memory, and what auxiliary structures (such as B-trees or hash tables) accelerate access. Finally, integrity and security involve enforcing constraints on the data and controlling who may read or modify it.
These problems are not independent. A choice about the data model affects how queries are written and optimized; a decision about indexing affects transaction performance; a guarantee about durability affects storage design. The field's history is largely a series of attempts to solve these problems in an integrated way, with each major approach representing a different set of trade-offs.
The first commercial database systems of the 1960s used either the hierarchical model (organizing records in a tree) or the network model (organizing records in a graph with explicit links). These were navigational: programmers wrote code that walked from record to record along predefined paths. They were efficient for well-known access patterns but required the programmer to know the physical structure of the data and made ad-hoc queries difficult.
The relational model, proposed by Edgar F. Codd in 1970, was a radical departure. It organized data into tables (relations) with rows (tuples) and columns (attributes), and defined operations on these tables using a formal language based on set theory and predicate logic. Its key insight was data independence: the user specifies what data they want, not how to find it. The system's query optimizer would determine the access path. This separation of logical structure from physical implementation was the model's great intellectual contribution.
The relational model took over a decade to become practical. Early prototypes and commercial systems faced severe performance problems, which were gradually solved through better indexing techniques, query optimization, and the development of SQL (Structured Query Language) as a standard interface. By the 1980s, relational database systems had become the dominant commercial technology, a position they still hold. The model's success rested on its combination of a clean mathematical foundation, a simple and uniform user interface, and the ability to support ad-hoc queries that navigational systems could not easily express.
Running alongside the development of the relational model was a separate line of work on transactions. A transaction is a sequence of operations that must be executed atomically—either all of its effects are applied, or none are. The classic example is a bank transfer: money must be debited from one account and credited to another; if the system crashes between the two steps, the database would be inconsistent.
The theory of transactions was formalized around the ACID properties: Atomicity (all-or-nothing execution), Consistency (the database moves from one valid state to another), Isolation (concurrent transactions appear to run serially), and Durability (committed changes survive crashes). The mechanisms for achieving these properties—locking protocols to prevent interference, write-ahead logging to enable recovery after a crash, and two-phase commit to coordinate transactions across multiple servers—became a core part of database systems research. This transactional tradition is often described as the "OLTP" (online transaction processing) side of the field, concerned with high volumes of short, atomic operations.
The ACID model is powerful but not free. Enforcing full isolation through locking can limit concurrency, and the coordination required for distributed transactions is expensive. This tension has led to a persistent line of research on weaker consistency models, which relax some guarantees in exchange for higher performance or availability, particularly in distributed settings.
Beginning in the late 1980s and accelerating through the 1990s, new data types and application demands exposed the limits of the relational model. Applications in engineering, multimedia, and scientific computing needed to store complex nested structures, arrays, and objects that did not fit naturally into flat tables. This led to object-oriented databases, which attempted to integrate database functionality directly into programming languages, and later to object-relational systems, which added user-defined types and functions to SQL. Neither fully displaced the relational model, but the object-relational extensions became standard features of major commercial systems.
A more significant shift came with the rise of the internet and large-scale web services in the late 1990s and 2000s. Companies like Google and Amazon faced data volumes and request rates that exceeded what traditional relational systems could handle on a single server. This motivated the development of NoSQL systems, a broad and heterogeneous category. Some NoSQL systems are key-value stores, offering a simple interface of get and put operations on a single key. Others are document stores, which treat each record as a self-contained document (often in JSON) with a flexible schema. Still others are column-family stores, which organize data by columns rather than rows to optimize analytical queries over wide tables. And graph databases focus on efficiently traversing relationships between entities.
The common thread among NoSQL systems is a willingness to relax some of the guarantees of the relational model—typically consistency or the expressive power of the query language—in exchange for horizontal scalability (distributing data across many commodity servers) and high availability. Many of these systems adopt the CAP theorem as a guiding principle, which states that a distributed system cannot simultaneously guarantee consistency, availability, and partition tolerance (the ability to continue operating when network links fail). Since partitions are unavoidable in practice, designers must choose between consistency and availability during a partition. This framing has shaped the design of many distributed databases, though its interpretation remains a subject of ongoing debate.
A separate thread of development concerns analytical processing—queries that scan large volumes of data to compute aggregates, trends, and summaries, as opposed to the point lookups and small updates of OLTP. In the 1990s, the term OLAP (online analytical processing) was coined to describe this workload, and a distinction was drawn between row-oriented storage (efficient for transactions, where a single record is read or written) and column-oriented storage (efficient for analytics, where a single column is read across millions of rows). Columnar systems compress data well and can skip entire columns that are not needed for a query, making them dramatically faster for analytical workloads.
The rise of data warehousing—the practice of consolidating data from multiple operational systems into a single repository for analysis—created a demand for specialized database systems. More recently, the term data lake has emerged for a more flexible approach that stores raw data in its native format, often in a distributed file system, and applies schema and structure only at query time. The distinction between warehouse and lake has blurred over time, with many systems offering both structured and semi-structured data support.
The contemporary database landscape is not a single paradigm but a spectrum of systems optimized for different workloads. The relational model and SQL remain the standard for transactional applications and for any situation where data integrity and ad-hoc querying are paramount. NoSQL systems have carved out durable niches in web-scale applications, real-time data ingestion, and use cases with flexible or evolving schemas. Meanwhile, NewSQL systems attempt to combine the scalability of NoSQL with the transactional guarantees and SQL interface of traditional relational databases, often through sophisticated distributed coordination protocols.
Two further developments have reshaped the field in recent years. The first is the integration of machine learning into database systems, both as a tool for improving query optimization, indexing, and tuning, and as a workload that databases must support. The second is the rise of cloud databases, where the database is offered as a managed service with elastic scaling, automated backups, and pay-as-you-go pricing. Cloud deployment has changed the economics of database operation and has made it feasible for small organizations to run systems that would previously have required significant infrastructure expertise.
Throughout these changes, the core problems of the field have remained remarkably stable. The data model has evolved from hierarchical to relational to a multiplicity of models, but the question of how to represent the world in data persists. Query processing has grown more sophisticated, but the fundamental challenge of finding the best execution plan among many possibilities remains. Transaction management has been extended to distributed settings, but the tension between consistency, availability, and performance is as central as ever. The field's history is best understood not as a linear progression from primitive to advanced, but as a series of responses to changing hardware, workloads, and application demands, each of which has left a lasting imprint on the systems we use today.