symisc/unqlite logo

symisc/unqlite

Free

An Embedded NoSQL, Transactional Database Engine

FreeFree tier
Type
Open Source
Company
symisc

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