Unbundling Databases

Summary: The “database-inside-out” approach where database components (like indexes and materialized views) are decomposed into separate services connected by dataflow.

Sources: chapter12

Last updated: 2026-04-18


Unbundling databases is a design pattern that treats the various functions of a database—storage, indexing, and query processing—as separate components that can be composed using application code. This is also referred to as the “database-inside-out” approach (source: chapter12).

Key Concepts

  • Database-Inside-Out: Instead of a single integrated database product, the system is built from diverse components (e.g., an OLTP database for writes, a search index for full-text search, and a cache for performance) that are kept in sync via an asynchronous event log.
  • Dataflow as Derivation: Indexes and materialized views are treated as derived datasets. When the source data changes, the changes flow through a pipeline to update all derived representations (source: chapter12).
  • Unix Philosophy: Similar to how Unix tools are composed with pipes, unbundled components communicate through a uniform low-level API (event logs) and can be composed to build complex systems.

Integrated vs. Unbundled

Traditional integrated databases provide a high-level abstraction (SQL) that hides implementation details like concurrency control and recovery. While convenient, they often struggle with specialized workloads (e.g., full-text search or graph queries) that a single engine cannot handle optimally. Unbundling allows for breadth, enabling the use of the best tool for each specific access pattern (source: chapter12).