Install
pip install overdrive-db npm install overdrive-db cargo add overdrive-db go get github.com/ALL-FOR-ONE-TECH/OverDrive-DB_IncodeSDK/go@v1.4.4
Java (Maven):
<repositories>
<repository>
<id>github-overdrive</id>
<url>https://maven.pkg.github.com/ALL-FOR-ONE-TECH/OverDrive-DB_IncodeSDK</url>
</repository>
</repositories>
<dependency>
<groupId>com.afot</groupId>
<artifactId>overdrive-db</artifactId>
<version>1.4.4</version>
</dependency>
C/C++: Download overdrive.h + native library from GitHub Releases.
Hello World
Python
from overdrive import OverDrive
db = OverDrive.open("myapp.odb")
db.insert("users", {"name": "Alice", "age": 30})
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 });
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();
db.insert("users", &serde_json::json!({"name": "Alice", "age": 30})).unwrap();
let result = db.query("SELECT * FROM users WHERE age > 25").unwrap();
println!("{} rows", result.rows.len());
db.close().unwrap();
C
#include "overdrive.h"
ODB* db = overdrive_open("myapp.odb");
overdrive_create_table(db, "users");
char* id = overdrive_insert(db, "users", "{\"name\":\"Alice\",\"age\":30}");
overdrive_free_string(id);
char* result = overdrive_query(db, "SELECT * FROM users");
printf("%s\n", result);
overdrive_free_string(result);
overdrive_close(db);
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 with snapshot/restore |
| 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 |
API Reference
All SDKs share the same API surface. Method names follow each language's conventions.
Database Lifecycle
| Python |
Node.js |
Java |
Go |
Rust |
C |
OverDrive.open(path) |
OverDrive.open(path) |
OverDrive.open(path) |
overdrive.Open(path) |
OverDriveDB::open(path) |
overdrive_open(path) |
db.close() |
db.close() |
db.close() |
db.Close() |
db.close() |
overdrive_close(db) |
db.sync() |
db.sync() |
db.sync() |
db.Sync() |
db.sync() |
overdrive_sync(db) |
OverDrive.version() |
OverDrive.version() |
OverDrive.version() |
overdrive.Version() |
OverDriveDB::version() |
overdrive_version() |
CRUD Operations
| Operation |
Python |
Node.js / Java |
Go |
Rust |
| Insert |
db.insert(table, doc) |
db.insert(table, doc) |
db.Insert(table, doc) |
db.insert(table, &doc) |
| Get |
db.get(table, id) |
db.get(table, id) |
db.Get(table, id) |
db.get(table, id) |
| Update |
db.update(table, id, updates) |
db.update(table, id, updates) |
db.Update(table, id, updates) |
db.update(table, id, &updates) |
| Delete |
db.delete(table, id) |
db.delete(table, id) |
db.Delete(table, id) |
db.delete(table, id) |
| Count |
db.count(table) |
db.count(table) |
db.Count(table) |
db.count(table) |
| Query |
db.query(sql) |
db.query(sql) |
db.Query(sql) |
db.query(sql) |
| Safe Query |
db.query_safe(sql, params) |
db.querySafe(sql, params) |
db.QuerySafe(sql, params...) |
db.query_safe(sql, ¶ms) |
| Search |
db.search(table, text) |
db.search(table, text) |
db.Search(table, text) |
db.search(table, text) |
Tables
| Operation |
Python |
Node.js / Java |
Go |
| Create |
db.create_table(name) |
db.createTable(name) |
db.CreateTable(name) |
| Drop |
db.drop_table(name) |
db.dropTable(name) |
db.DropTable(name) |
| List |
db.list_tables() |
db.listTables() |
db.ListTables() |
| Exists |
db.table_exists(name) |
db.tableExists(name) |
db.TableExists(name) |
v1.4 Features
| Feature |
Python |
Node.js |
Java |
Go |
| Password open |
OverDrive.open(path, password=...) |
OverDrive.open(path, {password:...}) |
OverDrive.open(path, password) |
overdrive.Open(path, WithPassword(...)) |
| RAM engine |
OverDrive.open(path, engine="RAM") |
OverDrive.open(path, {engine:"RAM"}) |
OverDrive.open(path, "RAM") |
overdrive.Open(path, WithEngine("RAM")) |
| Watchdog |
OverDrive.watchdog(path) |
OverDrive.watchdog(path) |
OverDrive.watchdog(path) |
overdrive.Watchdog(path) |
| Transaction callback |
db.transaction(fn) |
db.transaction(fn) |
db.transaction(fn) |
db.Transaction(fn, isolation) |
| Find one |
db.findOne(table, where) |
db.findOne(table, where) |
db.findOne(table, where) |
db.FindOne(table, where) |
| Find all |
db.findAll(table, ...) |
db.findAll(table, ...) |
db.findAll(table, ...) |
db.FindAll(table, ...) |
| Update many |
db.updateMany(table, where, updates) |
db.updateMany(...) |
db.updateMany(...) |
db.UpdateMany(...) |
| Delete many |
db.deleteMany(table, where) |
db.deleteMany(...) |
db.deleteMany(...) |
db.DeleteMany(...) |
| Snapshot |
db.snapshot(path) |
db.snapshot(path) |
db.snapshot(path) |
db.Snapshot(path) |
| Memory usage |
db.memoryUsage() |
db.memoryUsage() |
db.memoryUsage() |
db.MemoryUsageStats() |
Transactions
All SDKs support MVCC transactions with 4 isolation levels:
| Level |
Value |
Description |
| Read Uncommitted |
0 |
Fastest, least safe |
| Read Committed |
1 |
Default |
| Repeatable Read |
2 |
Snapshot isolation |
| Serializable |
3 |
Full isolation |
Security
| Feature |
Usage |
| Password encryption |
open(path, password=...) — AES-256-GCM via Argon2id |
| Env var key |
open_encrypted(path, "ODB_KEY") — key from environment |
| Parameterized queries |
query_safe(sql, params) — blocks SQL injection |
| Encrypted backup |
backup(dest) — syncs + copies + hardens permissions |
| WAL cleanup |
cleanup_wal() — removes replay-attack surface |
| File permissions |
Auto chmod 600 (Linux/Mac) or Windows ACL on open |
C/C++ Memory Rules
Every char* returned by overdrive_* functions must be freed with overdrive_free_string().
Do not free: overdrive_last_error(), overdrive_version() (static pointers).
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 Library Downloads
| Platform |
File |
Size |
| Windows x64 |
overdrive.dll |
~3.3 MB |
| Linux x64 |
liboverdrive.so |
~4.1 MB |
| Linux ARM64 |
liboverdrive-arm64.so |
~3.9 MB |
| macOS x64 |
liboverdrive.dylib |
~3.8 MB |
| macOS ARM64 |
liboverdrive-arm64.dylib |
~3.6 MB |
Download from GitHub Releases.
Python and Rust auto-download the native library on first use. Node.js downloads on npm install. Java and Go require manual placement.
Project Structure
OverDrive-DB_IncodeSDK/
├── Cargo.toml # Rust crate (crates.io)
├── README.md # This file
├── src/ # Rust SDK core
│ ├── lib.rs # OverDriveDB API
│ ├── dynamic.rs # Runtime native library loader
│ ├── ffi.rs # C FFI exports (overdrive.dll)
│ ├── shared.rs # Thread-safe wrapper
│ ├── query_engine.rs # SQL query types
│ └── result.rs # Error types
├── python/overdrive/ # Python SDK (ctypes)
├── nodejs/ # Node.js SDK (koffi + TypeScript)
├── java/src/ # Java SDK (JNA)
├── go/ # Go SDK (syscall, no CGo on Windows)
├── c/include/overdrive.h # C/C++ header
├── docs/ # Full documentation
├── examples/ # Working examples for all languages
└── .github/workflows/ # CI/CD pipelines
Links
License
Licensed under either MIT or Apache-2.0, at your option.