<p align="center">
<h1 align="center">⚡ OverDrive-DB — InCode SDK</h1>
<p align="center">
<strong>A high-performance, embeddable hybrid SQL+NoSQL document database. Like SQLite, but for JSON.</strong><br/>
Import the package. Open a file. Query your data. <em>No server needed.</em>
</p>
<p align="center">
<a href="https://crates.io/crates/overdrive-db"><img src="https://img.shields.io/crates/v/overdrive-db?style=flat-square&color=orange&logo=rust" alt="crates.io"/></a>
<a href="https://www.npmjs.com/package/overdrive-db"><img src="https://img.shields.io/npm/v/overdrive-db?style=flat-square&color=cb3837&logo=npm" alt="npm"/></a>
<a href="https://pypi.org/project/overdrive-db/"><img src="https://img.shields.io/pypi/v/overdrive-db?style=flat-square&color=3776ab&logo=python" alt="PyPI"/></a>
<a href="https://github.com/ALL-FOR-ONE-TECH/OverDrive-DB_IncodeSDK/packages"><img src="https://img.shields.io/badge/maven-1.4.0-007ec6?style=flat-square&logo=apache-maven" alt="maven"/></a>
<a href="https://github.com/ALL-FOR-ONE-TECH/OverDrive-DB_IncodeSDK/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT%2FApache--2.0-green?style=flat-square" alt="license"/></a>
</p>
</p>
#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.
| 🗄️ **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:**
```bash
pip install overdrive-db
```
**Node.js:**
```bash
npm install overdrive-db
```
**Java (Maven):**
```xml
<dependency>
<groupId>com.afot</groupId>
<artifactId>overdrive-db</artifactId>
<version>1.4.0</version>
</dependency>
```
**Go:**
```bash
go get github.com/ALL-FOR-ONE-TECH/OverDrive-DB_IncodeSDK/go@v1.4.0
```
**Rust:**
```toml
[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](https://github.com/ALL-FOR-ONE-TECH/OverDrive-DB_IncodeSDK/releases/latest)
> and place it in your project directory.
---
## Hello World — 3 Lines
### Python
```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
```javascript
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
```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
```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
```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
```python
db = OverDrive.open("secure.odb", password="my-secret-pass")
```
### RAM engine for sub-microsecond caching
```python
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
```python
report = OverDrive.watchdog("app.odb")
if report.integrity_status == "corrupted":
print(f"Corruption: {report.corruption_details}")
```
### Transaction callbacks
```python
result = db.transaction(lambda txn:
db.insert("orders", {"item": "widget"})
) # auto-commits on success, auto-rolls back on exception
```
### Helper methods
```python
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
| `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 |
```python
# 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
| `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 |
```python
# 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
| Windows x64 | [`overdrive.dll`](https://github.com/ALL-FOR-ONE-TECH/OverDrive-DB_IncodeSDK/releases/latest) |
| Linux x64 | [`liboverdrive.so`](https://github.com/ALL-FOR-ONE-TECH/OverDrive-DB_IncodeSDK/releases/latest) |
| Linux ARM64 | [`liboverdrive-arm64.so`](https://github.com/ALL-FOR-ONE-TECH/OverDrive-DB_IncodeSDK/releases/latest) |
| macOS x64 | [`liboverdrive.dylib`](https://github.com/ALL-FOR-ONE-TECH/OverDrive-DB_IncodeSDK/releases/latest) |
| macOS ARM64 | [`liboverdrive-arm64.dylib`](https://github.com/ALL-FOR-ONE-TECH/OverDrive-DB_IncodeSDK/releases/latest) |
---
## Documentation
| 📖 Quick Start | [docs/quickstart.md](docs/quickstart.md) |
| 📚 API Reference | [docs/api-reference.md](docs/api-reference.md) |
| 🔄 Migration Guide | [docs/migration-v1.3-to-v1.4.md](docs/migration-v1.3-to-v1.4.md) |
| 🔐 Security Guide | [docs/security.md](docs/security.md) |
| 🐍 Python Guide | [docs/python-guide.md](docs/python-guide.md) |
| 🟨 Node.js Guide | [docs/nodejs-guide.md](docs/nodejs-guide.md) |
| ☕ Java Guide | [docs/java-guide.md](docs/java-guide.md) |
| 🐹 Go Guide | [docs/go-guide.md](docs/go-guide.md) |
| 💻 Examples | [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
| 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
| 📦 Releases | [GitHub Releases](https://github.com/ALL-FOR-ONE-TECH/OverDrive-DB_IncodeSDK/releases) |
| 🐛 Issues | [GitHub Issues](https://github.com/ALL-FOR-ONE-TECH/OverDrive-DB_IncodeSDK/issues) |
| 💬 Discussions | [GitHub Discussions](https://github.com/ALL-FOR-ONE-TECH/OverDrive-DB_IncodeSDK/discussions) |
| 🏠 Homepage | [overdrive-db.com](https://overdrive-db.com) |
| 📦 npm | [npmjs.com/package/overdrive-db](https://www.npmjs.com/package/overdrive-db) |
| 🐍 PyPI | [pypi.org/project/overdrive-db](https://pypi.org/project/overdrive-db/) |
---
## License
Licensed under either of:
- **MIT License** ([LICENSE](LICENSE))
- **Apache License 2.0** ([LICENSE](LICENSE))
at your option.
---
<p align="center">
Built by <a href="https://github.com/ALL-FOR-ONE-TECH"><strong>ALL FOR ONE TECH</strong></a> •
<a href="https://github.com/ALL-FOR-ONE-TECH/OverDrive-DB_IncodeSDK/releases">Downloads</a> •
<a href="https://overdrive-db.com">Website</a>
</p>
#afot #OverDriveDb #InCodeSDK #EmbeddedDB #MrV2K #AllForOneTech #HybridDB