overdrive-db 1.4.1

OverDrive-DB โ€” Embeddable hybrid SQL+NoSQL database. Like SQLite for JSON. #OverDriveDB #AFOT
Documentation

#afot #OverDriveDb #InCodeSDK #EmbeddedDB


What is OverDrive?

OverDrive is an embeddable, zero-config document database for Rust, Python, Node.js, Java, Go, and C/C++. It stores JSON documents, supports SQL queries, full-text search, secondary indexing, and ACID transactions โ€” all within a single library. No external server. No network. Just a file.

Feature Description
๐Ÿ—„๏ธ Zero-config Open a file, start querying โ€” no setup, no config files
๐Ÿ“„ JSON Native Store, query, and index JSON documents directly
๐Ÿ” SQL Queries SELECT, INSERT, UPDATE, DELETE with 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 Reliable, consistent data operations
๐Ÿ—œ๏ธ Compression zstd compression for efficient storage
๐Ÿ” Encryption AES-256-GCM at-rest encryption
๐Ÿ›ก๏ธ Security Hardened Key from env vars, querySafe() injection blocking, auto chmod 600, WAL cleanup, thread-safe wrappers
๐Ÿš€ RAM Engine Sub-microsecond in-memory storage with snapshot/restore
๐Ÿ”ญ Watchdog File integrity monitoring โ€” detect corruption before it matters
๐ŸŒ Cross-platform Windows x64, Linux x64/ARM64, macOS x64/ARM64
๐Ÿ”— Multi-language Rust, Python, Node.js, Java, Go, C/C++

Quick Start

Install

Python:

pip install overdrive-db

Node.js:

npm install overdrive-db

Java (Maven):

<dependency>
    <groupId>com.afot</groupId>
    <artifactId>overdrive-db</artifactId>
    <version>1.4.0</version>
</dependency>

Go:

go get github.com/ALL-FOR-ONE-TECH/OverDrive-DB_IncodeSDK/go@v1.4.0

Rust:

[dependencies]
overdrive-db = "1.4.0"

Note: The Rust crate dynamically loads the prebuilt native library at runtime. Download overdrive.dll / liboverdrive.so / liboverdrive.dylib from GitHub Releases and place it in your project directory.


Hello World โ€” 3 Lines

Python

from overdrive import OverDrive

db = OverDrive.open("myapp.odb")
db.insert("users", {"name": "Alice", "age": 30})  # table auto-created
print(db.query("SELECT * FROM users"))
db.close()

Node.js

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

const db = OverDrive.open('myapp.odb');
db.insert('users', { name: 'Alice', age: 30 });  // table auto-created
console.log(db.query('SELECT * FROM users'));
db.close();

Java

import com.afot.overdrive.OverDrive;

try (OverDrive db = OverDrive.open("myapp.odb")) {
    db.insert("users", Map.of("name", "Alice", "age", 30));
    System.out.println(db.query("SELECT * FROM users"));
}

Go

db, _ := overdrive.Open("myapp.odb")
defer db.Close()
db.Insert("users", map[string]any{"name": "Alice", "age": 30})
result, _ := db.Query("SELECT * FROM users")
fmt.Println(result.Rows)

Rust

use overdrive::OverDriveDB;

let mut db = OverDriveDB::open("myapp.odb").unwrap();
db.create_table("users").unwrap();
let id = db.insert("users", &serde_json::json!({"name": "Alice", "age": 30})).unwrap();
let result = db.query("SELECT * FROM users WHERE age > 25").unwrap();
println!("{} users found in {:.2}ms", result.rows.len(), result.execution_time_ms);
db.close().unwrap();

v1.4.0 โ€” What's New

Password-protected databases

db = OverDrive.open("secure.odb", password="my-secret-pass")

RAM engine for sub-microsecond caching

cache = OverDrive.open("cache.odb", engine="RAM")
cache.insert("sessions", {"user_id": 123, "token": "abc"})
cache.snapshot("./backup/cache.odb")   # persist to disk
usage = cache.memoryUsage()            # {"bytes": ..., "mb": ..., "percent": ...}

File integrity monitoring

report = OverDrive.watchdog("app.odb")
if report.integrity_status == "corrupted":
    print(f"Corruption: {report.corruption_details}")

Transaction callbacks

result = db.transaction(lambda txn:
    db.insert("orders", {"item": "widget"})
)  # auto-commits on success, auto-rolls back on exception

Helper methods

user    = db.findOne("users", "age > 25")
users   = db.findAll("users", order_by="name", limit=10)
count   = db.updateMany("users", "status = 'trial'", {"status": "active"})
deleted = db.deleteMany("logs", "created_at < '2025-01-01'")
n       = db.countWhere("users", "active = 1")
exists  = db.exists("users", "users_1")

All 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
# Select engine on open
db = OverDrive.open("app.odb", engine="RAM")

# Or per-table
db = OverDrive.open("app.odb")
db.createTable("hot_cache", engine="RAM")   # this table in RAM
db.insert("users", {"name": "Alice"})       # this table on disk (auto-created)

Security

Feature Description
open(path, password=...) AES-256-GCM encryption via Argon2id key derivation
openEncrypted(path, "ODB_KEY") Key from environment variable โ€” never hardcoded
querySafe(sql, params) SQL injection prevention with parameterized queries
backup(dest) Encrypted backup + permission hardening
cleanupWal() Delete WAL after commit โ€” prevents replay attacks
Auto on open() chmod 600 / Windows ACL on every database file
# Never hardcode passwords โ€” use environment variables
import os
db = OverDrive.open("secure.odb", password=os.environ["DB_PASSWORD"])

# Or use the env-var method
db = OverDrive.open_encrypted("app.odb", "ODB_KEY")

# Safe parameterized queries
results = db.querySafe("SELECT * FROM users WHERE name = ?", user_input)

Downloads

Platform File
Windows x64 overdrive.dll
Linux x64 liboverdrive.so
Linux ARM64 liboverdrive-arm64.so
macOS x64 liboverdrive.dylib
macOS ARM64 liboverdrive-arm64.dylib

Documentation

Resource Link
๐Ÿ“– Quick Start docs/quickstart.md
๐Ÿ“š API Reference docs/api-reference.md
๐Ÿ”„ Migration Guide docs/migration-v1.3-to-v1.4.md
๐Ÿ” Security Guide docs/security.md
๐Ÿ Python Guide docs/python-guide.md
๐ŸŸจ Node.js Guide docs/nodejs-guide.md
โ˜• Java Guide docs/java-guide.md
๐Ÿน Go Guide docs/go-guide.md
๐Ÿ’ป Examples examples/

Project Structure

OverDrive-DB_IncodeSDK/
โ”œโ”€โ”€ Cargo.toml              # Rust crate (dynamic loader)
โ”œโ”€โ”€ README.md               # This file
โ”œโ”€โ”€ LICENSE
โ”‚
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ lib.rs              # OverDriveDB Rust API
โ”‚   โ”œโ”€โ”€ dynamic.rs          # Runtime native library loader
โ”‚   โ”œโ”€โ”€ ffi.rs              # C FFI exports
โ”‚   โ”œโ”€โ”€ shared.rs           # Thread-safe SharedDB wrapper
โ”‚   โ”œโ”€โ”€ query_engine.rs     # SQL query types
โ”‚   โ””โ”€โ”€ result.rs           # Error types
โ”‚
โ”œโ”€โ”€ python/overdrive/
โ”‚   โ””โ”€โ”€ __init__.py         # Python SDK (ctypes)
โ”‚
โ”œโ”€โ”€ nodejs/
โ”‚   โ”œโ”€โ”€ index.js            # Node.js SDK (koffi)
โ”‚   โ””โ”€โ”€ index.d.ts          # TypeScript definitions
โ”‚
โ”œโ”€โ”€ java/src/
โ”‚   โ””โ”€โ”€ .../OverDrive.java  # Java SDK (JNA)
โ”‚
โ”œโ”€โ”€ go/
โ”‚   โ””โ”€โ”€ overdrive.go        # Go SDK (CGo)
โ”‚
โ”œโ”€โ”€ c/include/
โ”‚   โ””โ”€โ”€ overdrive.h         # C/C++ header
โ”‚
โ”œโ”€โ”€ docs/                   # Full documentation
โ”œโ”€โ”€ examples/               # Working code examples
โ””โ”€โ”€ .github/workflows/      # CI/CD pipelines

Comparison

Feature OverDrive SQLite MongoDB Redis
Deployment Library Library Server Server
Data Model JSON Documents Relational JSON Documents Key-Value
SQL Support โœ… โœ… โŒ โŒ
Schema Optional Required Optional None
Full-text Search โœ… Built-in FTS5 Extension โœ… โŒ
Encryption โœ… AES-256 SEE (paid) โœ… Enterprise โœ…
RAM Engine โœ… โŒ โŒ โœ…
Watchdog โœ… โŒ โŒ โŒ
Size ~3MB ~1.2MB ~200MB ~3MB

Links

Resource URL
๐Ÿ“ฆ Releases GitHub Releases
๐Ÿ› Issues GitHub Issues
๐Ÿ’ฌ Discussions GitHub Discussions
๐Ÿ  Homepage overdrive-db.com
๐Ÿ“ฆ npm npmjs.com/package/overdrive-db
๐Ÿ PyPI pypi.org/project/overdrive-db

License

Licensed under either of:

at your option.


#afot #OverDriveDb #InCodeSDK #EmbeddedDB #MrV2K #AllForOneTech #HybridDB