Skip to main content

OverDrive-DB embedded SDK - zero-config JSON document database

Project description

OverDrive-DB InCode SDK v2.2.0

Zero-config embedded document database with SQL, MVCC transactions, and 6 storage engines — in 5 languages.

version Rust Node.js Go Java Python


Features

Feature Description
Zero-config Open a file, start querying — no setup needed
JSON Native Store, query, and index JSON documents
SQL Queries SELECT, INSERT, UPDATE, DELETE, WHERE, ORDER BY, LIMIT
Aggregations COUNT, SUM, AVG, MIN, MAX, GROUP BY
Full-text Search Built-in text search across documents
B-Tree Indexes Secondary indexes for fast lookups
ACID Transactions MVCC with 4 isolation levels
Encryption AES-256-GCM via Argon2id key derivation
RAM Engine Sub-microsecond in-memory storage
Watchdog File integrity monitoring
Cross-platform Windows x64, Linux x64/ARM64, macOS x64/ARM64

6 Storage Engines

Engine Use Case Latency
Disk (default) General-purpose persistent storage ~1ms
RAM Caching, sessions, leaderboards <1µs
Vector Similarity search, embeddings ~5ms
Time-Series Metrics, IoT, logs ~2ms
Graph Social networks, knowledge graphs ~3ms
Streaming Event queues, message brokers ~1ms

Quick Start

Rust

use overdrive::OverdriveDb;
use serde_json::json;

let mut odb = OverdriveDb::open("app.odb").unwrap();
odb.create_table("users").unwrap();
let id = odb.insert("users", &json!({"name":"Alice","age":30})).unwrap();
let doc = odb.get("users", &id).unwrap().unwrap();
println!("{}", doc["name"]);  // "Alice"
odb.close().ok();

Node.js

const { OverdriveDb } = require('overdrive-db');

const odb = OverdriveDb.open('app.odb');
odb.createTable('users');
const id  = odb.insert('users', { name: 'Alice', age: 30 });
const doc = odb.get('users', id);
console.log(doc.name);  // "Alice"
odb.close();

Go

import overdrive "github.com/ALL-FOR-ONE-TECH/overdrive-db-go"

odb, _ := overdrive.Open("app.odb")
defer odb.Close()
odb.CreateTable("users")
id, _ := odb.Insert("users", map[string]any{"name": "Alice", "age": 30})
doc, _ := odb.Get("users", id)
fmt.Println(doc["name"])  // Alice

Java

try (OverdriveDb odb = OverdriveDb.open("app.odb")) {
    odb.createTable("users");
    String id = odb.insert("users", Map.of("name","Alice","age",30));
    Map<String,Object> doc = odb.get("users", id);
    System.out.println(doc.get("name"));  // Alice
}

Python

from overdrive import OverdriveDb

with OverdriveDb.open("app.odb") as odb:
    odb.create_table("users")
    id = odb.insert("users", {"name": "Alice", "age": 30})
    doc = odb.get("users", id)
    print(doc["name"])  # Alice

Full API Reference

Lifecycle

Operation Rust Node.js Java Go Python
Open OverdriveDb::open(path) OverdriveDb.open(path) OverdriveDb.open(path) Open(path) OverdriveDb.open(path)
Open+Engine open_with_options(path,opts) open(path,{engine}) open(path,"RAM",null) Open(path,WithEngine("RAM")) open(path,engine="RAM")
Open+Password open_with_options(path,opts) open(path,{password}) open(path,"Disk",pwd) Open(path,WithPassword(pwd)) open(path,password=pwd)
Close odb.close() odb.close() odb.close() odb.Close() odb.close()
Sync odb.sync() odb.sync() odb.sync() odb.Sync() odb.sync()
Version OverdriveDb::version() OverdriveDb.version() OverdriveDb.version() Version() OverdriveDb.version()

Tables

Operation Rust Node.js / Java Go Python
Create odb.create_table(name) odb.createTable(name) odb.CreateTable(name) odb.create_table(name)
Drop odb.drop_table(name) odb.dropTable(name) odb.DropTable(name) odb.drop_table(name)
List odb.list_tables() odb.listTables() odb.ListTables() odb.list_tables()
Exists odb.table_exists(name) odb.tableExists(name) odb.TableExists(name) odb.table_exists(name)

CRUD

Operation Rust Node.js / Java Go Python
Insert odb.insert(table, &doc) odb.insert(table, doc) odb.Insert(table, doc) odb.insert(table, doc)
Insert batch odb.insert_batch(table, &docs) odb.insertMany(table, docs) odb.InsertBatch(table, docs) odb.insert_many(table, docs)
Get odb.get(table, id) odb.get(table, id) odb.Get(table, id) odb.get(table, id)
Update odb.update(table, id, &patch) odb.update(table, id, patch) odb.Update(table, id, patch) odb.update(table, id, patch)
Delete odb.delete(table, id) odb.delete(table, id) odb.Delete(table, id) odb.delete(table, id)
Count odb.count(table) odb.count(table) odb.Count(table) odb.count(table)

Query & Search

Operation Rust Node.js / Java Go Python
SQL Query odb.query(sql) odb.query(sql) odb.Query(sql) odb.query(sql)
Search odb.search(table, text) odb.search(table, text) odb.Search(table, text) odb.search(table, text)

Transactions

Level Value
Read Uncommitted 0
Read Committed 1 (default)
Repeatable Read 2
Serializable 3
Operation Rust Node.js / Java Go Python
Begin odb.begin_transaction(iso) odb.beginTransaction(iso) odb.BeginTransaction(iso) odb.begin_transaction(iso)
Commit odb.commit_transaction(&txn) odb.commitTransaction(id) odb.CommitTransaction(id) odb.commit_transaction(id)
Abort odb.abort_transaction(&txn) odb.abortTransaction(id) odb.AbortTransaction(id) odb.abort_transaction(id)
Callback odb.transaction(iso, |odb|{}) odb.transaction(fn) odb.Transaction(fn, iso) odb.transaction(fn)

Error Codes

Code Type When
ODB-AUTH-* Authentication Wrong password, key too short
ODB-TABLE-* Table Not found, already exists
ODB-QUERY-* Query SQL syntax error
ODB-TXN-* Transaction Deadlock, conflict
ODB-IO-* I/O File not found, corrupted
ODB-FFI-* FFI Native library not found

Native Binary Distribution

The native library lives in lib/{os}-{arch}/:

lib/
  windows-x64/  overdrive.dll       (3.4MB)
  linux-x64/    liboverdrive.so
  linux-arm64/  liboverdrive.so
  macos-x64/    liboverdrive.dylib
  macos-arm64/  liboverdrive.dylib

Override path: Set OVERDRIVE_LIB_PATH env var to load a custom native lib.

Rebuild from source:

# Windows
.\scripts\build-native.ps1

# Linux / macOS
./scripts/build-native.sh

E2E Test Results — v2.2.0

SDK Tests Status
🦀 Rust 10/10 ✅ PASS
🟢 Node.js 10/10 ✅ PASS
🐹 Go 10/10 ✅ PASS
☕ Java 10/10 ✅ PASS
🐍 Python 10/10 ✅ PASS
Total 50/50 ALL PASS

License

MIT OR Apache-2.0 — © 2026 AFOT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

overdrive_db-2.2.1.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

overdrive_db-2.2.1-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file overdrive_db-2.2.1.tar.gz.

File metadata

  • Download URL: overdrive_db-2.2.1.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for overdrive_db-2.2.1.tar.gz
Algorithm Hash digest
SHA256 b70517343f87655807b0a2e326b77e7748e54db56f86eac834f2bcc012a2a60b
MD5 bafed028e1bc5ed9cba61b70e3a55078
BLAKE2b-256 20b682fa61d229e851bf82141cd33d2eff6bd0f41604dd40d93c2900d9468b9f

See more details on using hashes here.

File details

Details for the file overdrive_db-2.2.1-py3-none-any.whl.

File metadata

  • Download URL: overdrive_db-2.2.1-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for overdrive_db-2.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5ecbedb472a99fc31ad3085e0d0258a77cbc3b0a314ab5befb18763381c78919
MD5 04849e5290c9813b13ee4c375f89248d
BLAKE2b-256 606b4ccfbfd7dcb234e25c6c1752bfef9750d416276495cabdfa19eee64966cf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page