Skip to content

BlobDB Reference

Server-Blob-Datenbank basierend auf MinIO für skalierbaren Storage.


BlobDB Overview

BlobDB ist eine Key-Value-Datenbank für Server-Daten mit MinIO-Backend.

Kern-Features

Feature Beschreibung
MinIO Backend Lokaler MinIO + optionaler Cloud Sync
Offline-Fallback SQLite bei keiner MinIO-Verbindung
Cache mit TTL Konfigurierbares Caching
Manifest-Tracking Schnelle Key-Suche ohne Scan

Offline Fallback

Aktivierung

export IS_OFFLINE_DB=true

Funktionsweise

┌─────────────────────────────────────────────────────┐
│                    BlobDB                           │
├─────────────────────────────────────────────────────┤
│  IS_OFFLINE_DB=true?                                │
│  ├── JA → SQLite Fallback (lokal)                  │
│  └── NEIN → MinIO (lokal) → Cloud MinIO → SQLite   │
└─────────────────────────────────────────────────────┘

SQLite Schema

CREATE TABLE blobs (
    path TEXT PRIMARY KEY,
    data BLOB NOT NULL,
    checksum TEXT,
    updated_at REAL,
    sync_status TEXT DEFAULT 'dirty'
);

CREATE TABLE manifest (
    key TEXT PRIMARY KEY,
    created_at REAL
);

Sync-Status

Status Bedeutung
dirty Geändert, nicht gesynct
synced Mit Cloud synchronisiert

When to use BlobDB vs LC

Local Dictionary (LC) - Wann?

Kriterium Empfehlung
Datenvolumen < 10 MB
Zugriffe < 100/s
Verteilung Single-Instance
Komplexität Einfache Key-Value

Typische Use-Cases: - User Settings - Mod-Konfiguration - Lokale Caches

BlobDB (MinIO) - Wann?

Kriterium Empfehlung
Datenvolumen > 10 MB bis TBs
Zugriffe > 100/s
Verteilung Multi-Instance / Cluster
Komplexität Enterprise-Grade

Typische Use-Cases: - Server-Sessions - Binäre Assets - Audit Logs - Backup-Storage


Environment Variables

Lokaler MinIO

Variable Default Pflicht
MINIO_ENDPOINT 127.0.0.1:9000 Nein
MINIO_ACCESS_KEY admin Nein
MINIO_SECRET_KEY - Ja
MINIO_SECURE false Nein

Cloud MinIO (optional)

Variable Pflicht
CLOUD_ENDPOINT Nein
CLOUD_ACCESS_KEY Nein
CLOUD_SECRET_KEY Nein
CLOUD_SECURE Nein

Betrieb

Variable Default Beschreibung
IS_OFFLINE_DB false Nur SQLite, kein MinIO
SERVER_ID hostname Server-Identifier
DB_CACHE_TTL 60 Cache-Lebensdauer (Sekunden)

Usage Example

from toolboxv2.mods.DB.blob_instance import create_db

# Initialisierung
db = create_db("my_server")

# CRUD
db.set("users/123", {"name": "Alice"})
result = db.get("users/123")
print(result.get())  # {"name": "Alice"}

# Pattern Matching
db.set("config/theme", "dark")
results = db.get("config/*")

# Cloud Sync
db.sync_to_cloud()

# Cleanup
db.exit()

Bucket & Path Structure

Bucket: tb-servers
│
└── {SERVER_ID}/
    ├── _manifest.json      # Key-Index
    ├── users/
    │   └── 123.json
    ├── config/
    │   └── theme.json
    └── ...