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.
Block Manager (Architecture Guide)
The Block Manager manages the reading and writing of disk blocks.
Cache is represented by the various shared data structures that make up in-memory Btrees and subordinate data structures.
Checkpoint (Architecture Guide)
A checkpoint is created by WiredTiger to serve as a point from which it can recover.
Column Store (Architecture Guide)
Column Stores are Btrees that have as their key a record id.
Cursors are used to get and modify data.
Data File Format (Architecture Guide)
The format of the data file is given by structures in block.h
.
Data Handles and Btrees (Architecture Guide)
An internal structure called a Data Handle (dhandle) is used to represent and access Btrees and other data sources in WiredTiger.
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 (Architecture Guide)
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 (Architecture Guide)
The History Store tracks old versions of records.
WiredTiger writes all changes into a write-ahead log when configured.
Log File Format (Architecture Guide)
The format of a log file is defined in log.h
.
Metadata is stored as uri, config
K/V pairs in a designated table.
Python API (Architecture Guide)
WiredTiger has a Python API that is useful for scripting and experimentation.
Row Store (Architecture Guide)
Row Stores are Btrees that have a variable size key and data.
Rollback to stable (Architecture Guide)
Rollback to stable to remove the unstable updates from the database.
A schema defines the format of the application data in WiredTiger.
Snapshots are implemented by storing transaction ids committed before the transaction started.
Transactions (Architecture Guide)
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.