WiredTiger: Writing WiredTiger applications

| Version 3.1.0

Fork me on GitHub Join my user group
Writing WiredTiger applications

This section covers topics of interest for programmers writing WiredTiger applications.

We follow SQL terminology: a database is set of tables managed together. Tables consist of rows, where each row is a key and its associated value. Tables may optionally have an associated schema, splitting the value into a set of columns. Tables may also have associated indices, each of which is ordered by one or more columns.

## Using the API

- Getting Started with the API
- Configuration Strings
- Cursors
- Transactions
- Error handling

## Storage options

- Schema, Columns, Column Groups, Indices and Projections
- Log-Structured Merge Trees
- File formats and compression
- Compressors
- Encryptors

## Programming notes

- Multithreading
- Name spaces
- Database read-only mode
- Signal handling

## Advanced topics

- Asynchronous operations
- Backups
- Compaction
- Checkpoint durability
- Commit-level durability
- In-memory databases
- Join cursors
- Log cursors
- Track function calls
- Named Snapshots
- Rebalance
- Per-process shared caches
- Statistics
- Upgrading and downgrading databases

## Extending WiredTiger

- Extending WiredTiger
- Custom Collators
- Custom Extractors
- Custom Data Sources
- Custom File Systems
- WiredTiger Helium support

## Performance monitoring and tuning

- Performance monitoring with statistics
- Simulating workloads with wtperf

- gcc/clang build options
- Bulk-load
- Cache and eviction tuning
- Checksums
- Connection close
- Cursor persistence
- Commit-level durability
- File allocation
- Memory allocator
- Mutexes
- Tuning page size and compression
- Read-only objects
- System buffer cache
- Linux transparent huge pages
- Linux zone reclamation memory management