Also see:
- https://matt.sh/datakit
- https://matt.sh/best-database-ever
- https://matt.sh/trillion-dollar-data-structure
Usage
mkdir build cd build cmake .. make -j8 ctest -j8 --output-on-failure --stop-on-failure
Documentation
Comprehensive documentation is now available in the docs/ directory!
Quick Start
- Getting Started Guide - Build instructions and first examples
- Architecture Overview - Design patterns and philosophy
- API Quick Reference - Common operations at a glance
- Documentation Index - Complete module listing
Module Documentation
Core & Utilities:
- databox - Universal 16-byte container
- flex - Compressed variable-length arrays
- mflex - Transparent LZ4 compression wrapper
- String utilities:
- str - Core string operations
- dks - Dynamic key strings (mds/mdsc)
- strDoubleFormat - Efficient double formatting
- String utils - Additional utilities
Scale-Aware Containers:
- multimap - Key-value store (small/medium/full/atom variants)
- multilist - Linked lists with multi-element nodes
- multiarray - Dynamic arrays (small/medium/large variants)
- multidict - Generic hash table
- multilru - Multi-level LRU cache
- multiroar - Roaring bitmaps
Integer Sets & Cardinality:
- intset - Variable-width integer sets (16/32/64-bit)
- intsetU32 - Fixed 32-bit integer sets
- hyperloglog - Probabilistic cardinality estimation
Compression & Encoding:
- xof - XOR filter for double compression
- dod - Delta-of-delta integer encoding
- float16 - Half-precision floats
Memory & System:
- membound - Memory allocation limits
- fibbuf - Fibonacci buffer sizing
- jebuf - Jemalloc-aligned allocation
- System modules:
- fastmutex - Fast mutex primitives
- multiTimer - High-performance timers
- osRegulate - Resource regulation
- setproctitle - Process title setting
- timeUtil - Time utilities
- versionOSRuntime - OS version detection
Advanced Topics
- Scale-Aware Design - Choosing the right size variant
- Performance Guide - Optimization techniques
- Memory Patterns - Understanding memory efficiency
- Thread Safety - Concurrent usage patterns
- Platform Support - Cross-platform considerations
Examples & Development
- Common Patterns - Frequently used code patterns
- Use Cases - Real-world applications
- Benchmarks - Performance comparisons
- Migration Guide - From Redis, STL, glib, etc.
- Testing Guide - Running and writing tests
- Building Guide - Detailed build instructions
- Debugging Guide - Troubleshooting techniques
Status
This is a recently updated development snapshot.
Many components are complete and now fully documented.
Some components are a first or second draft and need another feature refactoring cycle or two.