symisc/unqlite
FreeAn Embedded NoSQL, Transactional Database Engine
FreeFree tier
About symisc/unqlite
UnQLite is a self-contained, serverless, transactional database engine for C and C++ applications. It runs in-process, stores data in a single portable file, and ships as a small embed-friendly codebase with no external runtime dependency. UnQLite exposes two layers: a raw key/value store for binary-safe records and a document store powered by the Jx9 embedded scripting language. It supports both on-disk and in-memory databases, provides key/value CRUD APIs and cursor APIs, and offers optional threading support via compile-time flags. The recommended integration path is the amalgamation (single-file) distribution, making it easy to embed into any C/C++ project.
Key Features
Self-contained and serverless (no separate daemon, no socket protocol)
ACID transactional semantics for local storage workloads
Single portable database file on disk
Raw key/value store for binary-safe records
Document store powered by the Jx9 embedded scripting language
In-memory and on-disk database support
Key/value CRUD APIs and cursor APIs
Optional threading support (compile-time flag UNQLITE_ENABLE_THREADS)
Small embed-friendly codebase with no external runtime dependency
Simple amalgamation integration (single unqlite.c + unqlite.h)
Pros & Cons
Pros
- Embedded: no separate daemon, no socket protocol, no service to deploy
- Transactional: ACID semantics for local storage workloads
- Simple distribution: a database is typically one file on disk
- Portable: the file format is cross-platform
- Flexible: use key/value APIs directly, or use the document store and Jx9 layer
- Small integration surface: the recommended embed path is the amalgamation
- Optional threading support: enable at compile time with UNQLITE_ENABLE_THREADS
Best For
Embedded local storage for C/C++ applicationsIn-process database for desktop, mobile, or IoT devicesServerless applications requiring a lightweight transactional data storePrototyping and production use where a full database server is overkill