Technical Overview

These documents explain the engineering design of FoundationDB, with detailed information on its features, architecture, and performance.

  • Architecture provides a diagrammatic description of FoundationDB’s logical architecture.
  • Layer Concept: Applications use layers to add capabilities to FoundationDB’s minimal key-value API. A layer can provide a new data model, encapsulate an algorithm, or even be an entire framework.
  • Transaction Processing: FoundationDB supports transaction processing over a distributed cluster. We use optimistic concurrency control with a transactional authority running on a small number of transaction servers.
  • Performance describes the scaling, latency, throughput, and concurrency behavior of FoundationDB under various workloads and configurations.
  • Benchmarking describes how we approach testing FoundationDB using different client concurrencies and cluster sizes.
  • Features describes the fundamental properties of FoundationDB, as well as those that relate to performance, concurrency, and operations.
  • Anti-Features: What a system isn’t is sometimes as important as what it is. FoundationDB explicitly excludes some features either because they are at odds with the overall system design, or because they are better implemented as layers.
  • Engineering summarizes the unique tools and capabilities behind FoundationDB.
  • Fault Tolerance: FoundationDB provides fault tolerance by intelligently replicating data across a distributed cluster of machines. Our architecture is designed to minimize service interruption and data loss in the event of machine failures.
  • Flow: FoundationDB faces rigorous engineering challenges for high performance and scalability. To meet these challenges, we implemented Flow, an extension to C++ that supports actor-based concurrency with new keywords and control-flow primitives while retaining speed and I/O efficiency.
  • Simulation and Testing: FoundationDB uses a combined regime of robust simulation, live performance testing, and hardware-based failure testing to meet exacting standards of correctness and performance.