A high-performance, lock-free, shared-memory key-value store for C++11 with zero dependencies, designed for interprocess communication.
SimDB is a high-performance, lock-free key-value store implemented in C++11, using shared memory for efficient interprocess communication. It solves the problem of low-latency data sharing between threads and processes in concurrent applications, with zero external dependencies. The store is designed as a foundational building block for real-time debugging and visualization systems.
C++ developers building highly concurrent applications, real-time systems, or tools requiring fast interprocess communication, such as live debugging or visualization frameworks.
Developers choose SimDB for its exceptional performance, lock-free design, and simplicity—it requires only a single header file and the C++11 standard library, with no platform-specific dependencies. Its shared-memory approach makes it uniquely suited for cross-process data exchange without serialization overhead.
A high performance, shared memory, lock free, cross platform, single file, no dependencies, C++11 key-value store
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Benchmarks suggest approximately 500,000 small get/put operations per logical core per second, with performance scaling across multiple threads due to the lock-free design.
Thread-safe operations are implemented without locks (except during file creation), enabling highly concurrent access without contention overhead, as highlighted in the README.
Uses memory-mapped files for interprocess communication on Windows, Linux, and macOS without external dependencies, making it exceptionally good for IPC without serialization costs.
Requires only a single header file (simdb.hpp) and the C++11 standard library, with no additional SDKs or packages, simplifying adoption and reducing bloat.
The README explicitly labels it as alpha software, admitting potential undiscovered bugs and design issues, making it risky for production or critical systems.
Only supports basic key-value operations (get, put, del) without transactions, querying, indexing, or built-in persistence, restricting it to simple use cases.
As noted in the README, operations like len() and get() can fail if keys are modified concurrently, requiring careful handling by developers to avoid data corruption.