Version 10.0.1
WiredTiger Architecture Guide

WiredTiger is built as a library that is linked into the application. Applications use the API interface to direct WiredTiger's operations (see Getting Started with the API). Here is an overview of the software components in WiredTiger and how they are organized. An arrow indicates the "from" component uses "to" component.

We go into some detail for some of the internal components.

Backup

Hot backup uses a type of cursor to backup the database.

Block Manager

The Block Manager manages the reading and writing of disk blocks.

B-Trees (Architecture Guide) A B-Tree is one type of underlying data source in a dhandle and is organized into pages.

Cache (Architecture Guide)

Cache is represented by the various shared data structures that make up in-memory Btrees and subordinate data structures.

Checkpoint

A checkpoint is created by WiredTiger to serve as a point from which it can recover.

Connection

A connection is a handle to a WiredTiger database instance.

Cursor

Cursors are used to get and modify data.

Data File Format

The format of the data file is given by structures in block.h .

Data Handles

An internal structure called a Data Handle (dhandle) is used to represent and access Btrees and other data sources in WiredTiger.

Eviction

Eviction represents the process or removing old data from the cache, writing it to disk if it is dirty.

File System and Operating System Interface

A layer of abstraction is above all operating system calls and a set of functions can be registered to be called for each file system operation.

History Store

The History Store tracks old versions of records.

Logging

WiredTiger writes all changes into a write-ahead log when configured.

Log File Format

The format of a log file is defined in log.h .

Metadata

Metadata is stored as uri, config K/V pairs in a designated table.

Python API

WiredTiger has a Python API that is useful for scripting and experimentation.

Row Store and Column Store

Row stores and column store are B-Trees. Row stores have a variable size key and data while column stores have as their key a record id.

Rollback to Stable

Rollback to stable to remove the unstable updates from the database.

Schema

A schema defines the format of the application data in WiredTiger.

Session

A session defines the context for most operations performed in WiredTiger.

Snapshot

Snapshots are implemented by storing transaction ids committed before the transaction started.

Transactions

Transactions provide a powerful abstraction for multiple threads to operate on data concurrently.

Architecture Guide Glossary of Terms

WiredTiger assigns specific meanings to certain words. Here we decode them.