-
Notifications
You must be signed in to change notification settings - Fork 1
Compendium chapter 01 introduction
Navigation: Home > Pages
"Die Wahl der richtigen Datenbank ist wie die Wahl des richtigen Werkzeugs: Ein Hammer ist perfekt fΓΌr NΓ€gel, aber schrecklich fΓΌr Schrauben. ThemisDB ist der Werkzeugkasten, der beides kann β und noch viel mehr."
Willkommen bei ThemisDB, einer modernen Multi-Model-Datenbank, die entwickelt wurde, um die Grenzen traditioneller Datenbankarchitekturen zu ΓΌberwinden. In diesem einfΓΌhrenden Kapitel lernen Sie die Grundkonzepte, die Philosophie und die KernfΓ€higkeiten von ThemisDB kennen. Moderne Anwendungen haben komplexe Datenanforderungen, die sich nicht mehr mit einem einzigen Datenmodell abbilden lassen. Gleichzeitig fΓΌhrt der Einsatz mehrerer spezialisierter Datenbanken zu operationaler KomplexitΓ€t und Konsistenzproblemen. ThemisDB lΓΆst dieses Dilemma durch einen einheitlichen Multi-Model-Ansatz, der verschiedene Datenmodelle in einer kohΓ€renten Plattform vereint. Dieses Kapitel zeigt Ihnen, warum dieser Ansatz notwendig ist und wie ThemisDB ihn umsetzt.
Was Sie in diesem Kapitel lernen werden:
- Warum wir ThemisDB entwickelt haben und welche Probleme es lΓΆst
- Die vier Datenmodelle und wie sie zusammenarbeiten
- Grundlegende Architektur und Designentscheidungen
- Wie sich ThemisDB von anderen Datenbanken unterscheidet
- Erste Schritte und ein einfaches Beispiel
Voraussetzungen: Grundkenntnisse in Datenbanken sind hilfreich, aber nicht erforderlich. Wir erklΓ€ren alle Konzepte von Grund auf.
In der modernen Softwareentwicklung stehen Entwickler vor einem fundamentalen Dilemma: Jede Datenbank-Technologie ist fΓΌr bestimmte AnwendungsfΓ€lle optimiert, aber echte Anwendungen haben vielfΓ€ltige Anforderungen. Ein E-Commerce-System benΓΆtigt relationale Strukturen fΓΌr Bestellungen, dokumentenbasierte FlexibilitΓ€t fΓΌr Produktkataloge, Graph-Traversierung fΓΌr Empfehlungen und Vektor-Suche fΓΌr intelligente Produktsuche. Traditionell fΓΌhrt dies zu "polyglotter Persistenz" β dem Einsatz mehrerer spezialisierter Datenbanken. Doch dieser Ansatz schafft mehr Probleme als er lΓΆst. ThemisDB bietet eine alternative LΓΆsung: Alle Datenmodelle in einem System, mit gemeinsamen ACID-Transaktionen und einheitlichem Management.
Stellen Sie sich ein modernes E-Commerce-Unternehmen vor, das ΓΌber die Jahre ein komplexes Γkosystem aus verschiedenen Datenbanktechnologien aufgebaut hat. Die Entwickler haben ΓΌber die Jahre ein komplexes Γkosystem aufgebaut, bei dem jede Datenbank fΓΌr einen spezifischen Zweck ausgewΓ€hlt wurde. Auf den ersten Blick erscheint dies als Best Practice: Nutze das beste Werkzeug fΓΌr jede Aufgabe. Doch die RealitΓ€t sieht anders aus. Jedes System benΓΆtigt eigene Expertise, eigenes Monitoring, eigene Backup-Strategien und eigene Security-Konfigurationen. Am kritischsten ist jedoch das Konsistenzproblem: Transaktionen kΓΆnnen nicht ΓΌber Systemgrenzen hinweg garantiert werden.
- PostgreSQL fΓΌr Benutzerkonten und Bestellungen
- MongoDB fΓΌr Produktkataloge und Reviews
- Neo4j fΓΌr Empfehlungen und Social Graph
- Elasticsearch fΓΌr Produktsuche
- Redis fΓΌr Session-Management und Caching
- InfluxDB fΓΌr Metriken und Zeitreihen
Jede dieser Datenbanken wurde fΓΌr einen spezifischen Zweck ausgewΓ€hlt. Jede macht ihren Job gut. Aber das Gesamtsystem ist ein Albtraum:
Anzahl der Systeme: 6
Verschiedene APIs: 6
Backup-Strategien: 6
Monitoring-Tools: 6
Security-Konfigurationen: 6
Team-Expertise nΓΆtig: 6 Γ Spezialisten
Das Resultat: Hohe KomplexitΓ€t, teure Wartung, schwierige Debugging-Sessions, und Datenkonsistenz ΓΌber Systemgrenzen ist nahezu unmΓΆglich.
graph TB
subgraph "Polyglot Persistence - KomplexitΓ€t"
App[E-Commerce Application]
App --> PG[(PostgreSQL<br/>Benutzer & Bestellungen)]
App --> MG[(MongoDB<br/>Produktkataloge)]
App --> N4[(Neo4j<br/>Empfehlungen)]
App --> ES[(Elasticsearch<br/>Suche)]
App --> RD[(Redis<br/>Sessions)]
App --> IF[(InfluxDB<br/>Metriken)]
PG -.-> B1[Backup System 1]
MG -.-> B2[Backup System 2]
N4 -.-> B3[Backup System 3]
ES -.-> B4[Backup System 4]
RD -.-> B5[Backup System 5]
IF -.-> B6[Backup System 6]
end
style App fill:#ff6b6b
style PG fill:#4ecdc4
style MG fill:#95e1d3
style N4 fill:#f38181
style ES fill:#eaffd0
style RD fill:#fce38a
style IF fill:#95e1d3
Abb. 01.1: ThemisDB Multi-Model Architektur
Das kritischste Problem polyglotter Persistenz ist nicht die operationale KomplexitΓ€t, sondern die unmΓΆgliche Datenkonsistenz [1], [17]:
Warum Polyglot Persistence ACID unmΓΆglich macht:
# Szenario: LΓΆsche einen Benutzer und alle zugehΓΆrigen Daten
# Daten verteilt ΓΌber: PostgreSQL, Neo4j, ChromaDB
try:
# Schritt 1: LΓΆsche aus PostgreSQL
postgres.execute("DELETE FROM users WHERE id = 123")
# Schritt 2: LΓΆsche aus Neo4j
neo4j.execute("MATCH (u:User {id: 123}) DETACH DELETE u")
# Schritt 3: LΓΆsche aus ChromaDB
chromadb.delete(collection="user_embeddings", ids=["123"])
# Problem: Was wenn Schritt 3 fehlschlΓ€gt?
# β User ist aus PostgreSQL und Neo4j gelΓΆscht, aber Vector-Daten existieren noch!
# β System ist inkonsistent
except Exception:
# Rollback? UnmΓΆglich ΓΌber 3 separate Datenbanken!
# Saga-Pattern nΓΆtig: Komplexe kompensierende Transaktionen
passPolyglot Persistence erzwingt systemisch "Eventual Consistency" (BASE) [18] statt starker ACID-Garantien [16]. FΓΌr viele AnwendungsfΓ€lle β insbesondere im behΓΆrdlichen Kontext, Financial Services oder Healthcare β ist ein Zustand "eventueller Konsistenz" operativ und rechtlich untragbar [1].
sequenceDiagram
participant App as Application
participant PG as PostgreSQL
participant N4 as Neo4j
participant CD as ChromaDB
Note over App: LΓΆsche Benutzer ID=123
App->>PG: DELETE FROM users WHERE id=123
PG-->>App: [OK] Erfolg
App->>N4: MATCH (u:User {id:123}) DETACH DELETE u
N4-->>App: [OK] Erfolg
App->>CD: delete(collection="user_embeddings", ids=["123"])
CD--xApp: β Fehler (Netzwerkproblem)
Note over App,CD: [ERROR] INKONSISTENTER ZUSTAND!<br/>User aus PG & Neo4j gelΓΆscht,<br/>aber Vektoren existieren noch
rect rgb(255, 200, 200)
Note over App: Rollback? UNMΓGLICH!<br/>PostgreSQL & Neo4j kennen sich nicht
end
Abb. 01.2: Datenmodell-Γbersicht
ThemisDB nimmt einen anderen Weg. Anstatt spezialisierte Datenbanken zu kombinieren, bieten wir vier Datenmodelle in einem System:
- Relational: Strukturierte Daten mit ACID-Garantien
- Graph: Beziehungen und Netzwerkstrukturen
- Dokument: Flexible, schema-freie JSON-Daten
- Vektor: Embeddings fΓΌr AI/ML und Γhnlichkeitssuche
Der Vorteil: Ein System, eine API, eine Query-Sprache (AQL), ein Backup-Prozess, eine Security-Konfiguration.
graph TB
subgraph "ThemisDB - Multi-Model Architektur"
App[Application]
App --> AQL[AQL Query Layer]
AQL --> TM[Transaction Manager<br/>MVCC & ACID]
TM --> RM[Relational<br/>Engine]
TM --> GM[Graph<br/>Engine]
TM --> DM[Document<br/>Engine]
TM --> VM[Vector<br/>Engine]
RM --> ST[(RocksDB<br/>Unified Storage)]
GM --> ST
DM --> ST
VM --> ST
ST --> B[Single Backup System]
end
style App fill:#95e1d3
style AQL fill:#4ecdc4
style TM fill:#38ada9
style RM fill:#78e08f
style GM fill:#78e08f
style DM fill:#78e08f
style VM fill:#78e08f
style ST fill:#0a3d62
style B fill:#079992
Abb. 01.3: Query-Processing-Pipeline
Eine berechtigte Frage. Die traditionelle Weisheit sagt: "Jack of all trades, master of none." Aber ThemisDB wurde von Grund auf so designed, dass jedes Modell native Performance hat:
- Relationale Daten: Schneller als viele SQL-Datenbanken durch optimierte Indexstrukturen
- Graph-Traversierung: Vergleichbar mit Neo4j durch native Property Graph Storage
- Dokumentsuche: Elasticsearch-Γ€hnliche Performance durch invertierte Indizes
- Vektor-Search: State-of-the-art HNSW-Algorithmus fΓΌr ANN-Queries
Das Geheimnis: Native Multi-Model-Architektur
ThemisDB speichert nicht "alles in einem Topf", sondern verwendet ein kanonisches "Base Entity"-Speicherformat [3], [4]:
- Einheitliche Speicherschicht: Alle Datenmodelle (Relational, Graph, Dokument, Vektor) werden als binΓ€r-serialisierte "Blobs" in RocksDB gespeichert [11], [13]
- Spezialisierte Projektionen: Leseoptimierte Index-Projektionen pro Modell (relationaler Index, Graph-Adjazenz, HNSW-Vector-Index) [3], [25]
- Gemeinsame Transaction Layer: RocksDB TransactionDB garantiert ACID ΓΌber alle Modelle hinweg [20], [46]
Der entscheidende Unterschied zu Polyglot Persistence:
# ThemisDB: Eine atomare Transaktion ΓΌber alle Modelle
with themis_db.transaction() as tx:
# Relationale Daten aktualisieren
tx.update_table("users", user_id, {"name": "Alice", "age": 30})
# Graph-Kante erstellen
tx.create_edge("friends", from_id=user_id, to_id=friend_id)
# Vektor-Embedding speichern
tx.update_vector("user_embeddings", user_id, embedding)
# ENTWEDER: Alle 3 Operationen erfolgreich
# ODER: Alle 3 werden zurΓΌckgerollt (atomarer Rollback)
tx.commit() # ACID-garantiert!flowchart LR
Start([Transaction Begin]) --> R[Update Relational]
R --> G[Create Graph Edge]
G --> V[Update Vector]
V --> Check{Alle erfolgreich?}
Check -->|Ja| Commit[Commit Transaction<br/>Alle Γnderungen persistent]
Check -->|Nein| Rollback[Rollback Transaction<br/>Alle Γnderungen verworfen]
Commit --> End([Transaction Ende])
Rollback --> End
style Start fill:#95e1d3
style Commit fill:#78e08f
style Rollback fill:#ff6348
style End fill:#95e1d3
style Check fill:#ffd32a
Abb. 01.4: Storage-Engine-Architektur
Dies ist architektonisch nur mΓΆglich, weil alle Daten physisch im selben transaktionalen Backend (RocksDB TransactionDB) liegen. Siehe Kapitel 2.4 fΓΌr technische Details.
ThemisDB folgt bewΓ€hrten Design-Prinzipien:
1. ModularitΓ€t
Jede Komponente hat eine klar definierte Aufgabe:
graph TB
subgraph "ThemisDB Layered Architecture"
QL[Query Layer AQL<br/>β’ Query Parsing & Optimization<br/>β’ Execution Planning<br/>β’ Result Formatting]
TM[Transaction Manager MVCC<br/>β’ Snapshot Isolation<br/>β’ Conflict Detection<br/>β’ Commit/Rollback]
subgraph "Model Engines"
GE[Graph Engine]
DE[Document Engine]
VE[Vector Engine]
RE[Relational Engine]
end
IM[Index Manager<br/>β’ B-Tree β’ Hash<br/>β’ Geo β’ HNSW<br/>β’ Fulltext]
SL[Storage Layer RocksDB<br/>β’ LSM-Trees<br/>β’ WAL<br/>β’ Compression]
QL --> TM
TM --> GE
TM --> DE
TM --> VE
TM --> RE
GE --> IM
DE --> IM
VE --> IM
RE --> IM
IM --> SL
end
style QL fill:#667eea
style TM fill:#764ba2
style GE fill:#f093fb
style DE fill:#f093fb
style VE fill:#f093fb
style RE fill:#f093fb
style IM fill:#4facfe
style SL fill:#00f2fe
Abb. 01.5: Use-Case-Szenarien
2. Composability
Modelle kΓΆnnen in einer Query kombiniert werden:
-- Finde Γ€hnliche Produkte (Vektor)
-- fΓΌr Freunde des Nutzers (Graph)
-- die in Berlin wohnen (Relational)
FOR user IN friends_of(@userId)
FILTER user.city == "Berlin"
FOR product IN similar_products(user.last_viewed, k: 10)
RETURN { user: user, recommendation: product }
3. Explizit ΓΌber Implizit
Keine Magie, keine versteckten Optimierungen. Jede Query zeigt klar, was sie tut. Der EXPLAIN Befehl zeigt den exakten Execution Plan.
ThemisDB nutzt RocksDB als Storage-Engine. Diese Wahl war bewusst:
Vorteile von RocksDB:
- BewΓ€hrt: Von Facebook fΓΌr billions of operations/day entwickelt
- Schnell: Optimiert fΓΌr SSDs, log-structured merge trees
- Flexibel: Key-Value Store als Foundation fΓΌr hΓΆhere Modelle
- ZuverlΓ€ssig: ACID-Garantien, WAL, Compression, Snapshots
Unsere Erweiterungen:
- Custom Comparators fΓΌr verschiedene Datentypen
- Spezielle Column Families pro Datenmodell
- Optimierte Merge Operators fΓΌr Counters und Sets
- Geo-Index Layer mit Hilbert Curves
Use Case: Strukturierte GeschΓ€ftsdaten
-- Klassische relationale Query
INSERT INTO users {
user_id: "alice",
email: "alice@example.com",
created_at: DATE_NOW()
}
-- Join ΓΌber mehrere Tabellen
FOR order IN orders
FILTER order.user_id == "alice"
FOR item IN order_items
FILTER item.order_id == order.order_id
RETURN { order, item }
Besonderheiten:
- Secondary Indexes (B-Tree und Hash)
- ACID-Transaktionen mit Snapshot Isolation
- Constraints (Unique, Foreign Key, Check)
- Performance: 45.000 Writes/s, 120.000 Reads/s (single node)
Use Case: Beziehungsnetzwerke, Recommendations
-- 3-Hop Traversierung: Freunde von Freunden
FOR person IN persons
FILTER person.name == "Alice"
FOR friend IN 1..3 OUTBOUND person friends
RETURN DISTINCT friend
-- KΓΌrzester Pfad mit Dijkstra
LET path = SHORTEST_PATH(
"users/alice",
"users/bob",
OUTBOUND friends
WEIGHT edge.distance
)
RETURN path
Besonderheiten:
- Native Property Graph Storage
- Edge-Indizes fΓΌr schnelle Traversierung
- Path Constraints (Zyklen-Erkennung, Max Depth)
- Algorithmen: BFS, DFS, Dijkstra, A*, PageRank
Use Case: Schema-freie, flexible Daten
-- Beliebige JSON-Strukturen
INSERT INTO products {
sku: "LAPTOP-2024",
specs: {
cpu: { model: "Intel i7", cores: 8 },
ram: { size_gb: 32, type: "DDR5" },
storage: [
{ type: "SSD", size_gb: 1000 },
{ type: "HDD", size_gb: 2000 }
]
},
tags: ["business", "high-performance"]
}
-- Nested Field Access
FOR product IN products
FILTER product.specs.ram.size_gb >= 16
RETURN product.sku
Besonderheiten:
- Dynamische Schemas, keine Migration nΓΆtig
- Nested Object Indexing
- Array Operations (flatten, unwind)
- JSON Schema Validation (optional)
Use Case: AI/ML, Semantic Search, Embeddings
-- Γhnlichkeitssuche mit Embeddings
LET query_embedding = EMBED_TEXT("Modern laptop for developers")
FOR product IN products
LET similarity = COSINE_SIMILARITY(
query_embedding,
product.embedding
)
FILTER similarity > 0.8
SORT similarity DESC
LIMIT 10
RETURN { product, similarity }
Besonderheiten:
- HNSW-Index fΓΌr Approximate Nearest Neighbor
- UnterstΓΌtzt Cosine, Euclidean, Dot Product
- Dimensionen: bis zu 2048
- GPU-Acceleration fΓΌr Batch Embeddings
| Aspekt | PostgreSQL | ThemisDB |
|---|---|---|
| Datenmodelle | Relational | Relational + Graph + Document + Vector |
| Graph Queries | Recursive CTEs (langsam) | Native Property Graph (schnell) |
| JSON | JSONB (gut) | Native Document Store |
| Vektor Search | pgvector Extension | Native mit HNSW |
| Skalierung | Vertical + Replication | Horizontal Sharding |
Wann PostgreSQL? Wenn Sie nur relationale Daten haben und auf SQL-KompatibilitΓ€t angewiesen sind.
Wann ThemisDB? Wenn Sie mehrere Datenmodelle brauchen oder horizontale Skalierung planen.
| Aspekt | Neo4j | ThemisDB |
|---|---|---|
| Graph Performance | Exzellent | Sehr gut |
| Nicht-Graph-Daten | UmstΓ€ndlich | Native Support |
| Query Language | Cypher | AQL (Cypher-inspiriert, erweitert) |
| ACID Scope | Nur Graph | Γber alle Modelle |
| Lizenz | Enterprise kostenpflichtig | Open Source (MIT) |
Wann Neo4j? Wenn 100% Ihrer Daten Graphen sind und Sie Cypher-Expertise haben.
Wann ThemisDB? Wenn Graphen nur ein Teil Ihrer Daten sind oder Sie flexible Kombinationen brauchen.
| Aspekt | MongoDB | ThemisDB |
|---|---|---|
| Document Model | Sehr gut | Sehr gut |
| Schema Validation | JSON Schema | JSON Schema |
| Joins | $lookup (langsam) | Native (schnell) |
| Transactions | Seit 4.0 | Von Anfang an |
| Graph Queries | Nicht nativ | Native Property Graph |
Wann MongoDB? Wenn Sie ausschlieΓlich Dokumente speichern und MongoDB-Expertise haben.
Wann ThemisDB? Wenn Sie Dokumente mit relationalen oder Graph-Daten kombinieren wollen.
Lassen Sie uns ThemisDB in Aktion sehen. Dieses Example basiert auf examples/01_hello_world.
Der schnellste Weg, ThemisDB zu starten:
# ThemisDB mit Docker starten
docker run -d -p 8765:8765 themisdb/themisdb:latest
# Warten bis Server bereit ist
sleep 5
# Testen
curl http://localhost:8765/healthOutput:
{
"status": "ok",
"version": "1.5.0-dev",
"uptime": 5.2
}pip install themisdb-clientDas folgende Hello-World-Beispiel zeigt die grundlegenden CRUD-Operationen (Create, Read, Update, Delete) in ThemisDB. Der Code demonstriert, wie einfach es ist, eine Collection zu erstellen, Dokumente einzufΓΌgen, Queries auszufΓΌhren und Daten zu verwalten.
π VollstΓ€ndiger Code: examples/01_hello_world/main.py
from themisdb import Client
# Verbindung zu ThemisDB
client = Client("localhost", 8765)
# Collection erstellen
client.create_collection("users")
# Dokument einfΓΌgen
user = {"_key": "alice", "name": "Alice Smith", "age": 28, "city": "Berlin"}
result = client.insert("users", user)
print(f"β User erstellt: {result['_id']}")
# Query ausfΓΌhren
query = "FOR user IN users FILTER user.city == 'Berlin' RETURN user"
results = client.query(query)
print(f"β {len(results)} Benutzer in Berlin gefunden")
# Dokument aktualisieren und lΓΆschen
client.update("users", "alice", {"age": 29})
client.delete("users", "alice")Weitere Operationen im vollstΓ€ndigen Beispiel:
- GET-Abfrage fΓΌr einzelnes Dokument
- Batch-Operationen fΓΌr mehrere Dokumente
- Error-Handling und Validierung
AusfΓΌhren:
$ python main.py
β User erstellt: users/alice
β User abgerufen: Alice Smith
β 1 Benutzer in Berlin gefunden
β User aktualisiert
β User gelΓΆscht- Collections: Container fΓΌr Dokumente (wie Tabellen in SQL)
- _key: Benutzer-definierter Identifier
-
_id: Auto-generiert als
collection/key - CRUD: Create, Read, Update, Delete
- AQL: Query-Sprache Γ€hnlich SQL, aber mΓ€chtiger
Ein komplexeres Beispiel, das alle vier Modelle nutzt:
Dieses Beispiel zeigt die LeistungsfΓ€higkeit der Multi-Model-Architektur: Es kombiniert relationale Daten (Benutzer), Graph-Beziehungen (Freundschaften), Dokumente (Produkte mit nested Objects) und Vektoren (Embeddings fΓΌr Semantic Search) in einer einzigen Query.
π VollstΓ€ndiger Code: examples/01_hello_world/multi_model_demo.py (~85 Zeilen)
# 1. Benutzer (Relational)
client.insert("users", {"_key": "alice", "email": "alice@example.com"})
# 2. Freundschaft (Graph)
client.insert("friends", {"_from": "users/alice", "_to": "users/bob"})
# 3. Produkt mit nested Specs (Dokument)
client.insert("products", {
"_key": "laptop-x1",
"name": "Developer Laptop X1",
"specs": {"cpu": "Intel i7", "ram_gb": 32},
"embedding": [0.1, 0.5, -0.3, ...] # 768-dim Vektor
})
# 4. Multi-Model Query: Graph-Traversierung + Vektor-Γhnlichkeit
query = """
FOR friend IN 1..2 OUTBOUND "users/alice" friends
FOR order IN orders
FILTER order.user_id == friend.user_id
FOR product IN products
FILTER product.sku == order.sku
LET similarity = COSINE_SIMILARITY(product.embedding, @alice_last_embedding)
FILTER similarity > 0.7
RETURN {friend: friend.user_id, product: product.name, similarity}
"""
recommendations = client.query(query, {"alice_last_embedding": alice_vector})ZusΓ€tzliche Features im vollstΓ€ndigen Beispiel:
- Batch-Insert fΓΌr Testdaten (100 Produkte, 50 Benutzer)
- Fallback-Logik bei niedrigen Similarity-Scores
- Performance-Metriken (Query-Zeit, Result-Count)
Was passiert hier?
- Graph-Traversierung: Finde Alices Freunde (2 Hops)
- Relational Join: Verbinde mit Bestellungen
- Dokument-Query: Hole Produktdetails
- Vektor-Similarity: Finde Γ€hnliche Produkte
Alles in einer Query, atomar, konsistent.
-
Docker starten:
docker run -d -p 8765:8765 themisdb/themisdb:latest -
Healthcheck prΓΌfen:
curl http://localhost:8765/health - Minimal-Collection anlegen:
FOR i IN 1..3
INSERT { _key: CONCAT('u', i), name: CONCAT('User ', i) } INTO users
- Query testen (Graph + Filter):
FOR u IN users
FILTER u.name LIKE 'User%'
RETURN u.name
-
Backup ziehen:
curl -X POST http://localhost:8765/admin/snapshot
| Bedarf | Ja | Nein |
|---|---|---|
| ACID ΓΌber Graph + Vektor | β | β |
| Single-System fΓΌr Multi-Model | β | β |
| Niedrige Latenz bei RAG (Pre-Filter) | β | β |
| Sovereign / On-Prem Pflicht | β | β |
| Managed Cloud bevorzugt | β | β |
- Architekten: Multi-Model-Konsistenz, Storage-Design, Index-Strategien
- Entwickler: AQL Patterns, Graph/Vector Kombis, Schema-Evolution
- Ops/SRE: Health/Metric-Endpoints, Backups, Sharding-Roadmap
- Security: TLS/mTLS, Audit-Logs, Least-Privilege-Config
- Fachseite: Datenmodellierung, Self-Service-Queries, Validations
- Ist ThemisDB SQL-kompatibel? Nein, AQL ist bewusst modellΓΌbergreifend (FOR/FILTER/RETURN).
- Wie wird Konsistenz garantiert? RocksDB TransactionDB + einheitliches WAL + MVCC.
- Wie skaliert das System? Vertikal heute, Sharding-Roadmap 2026 (16 Nodes Lab fertig).
- Wie sicher? TLS 1.3, mTLS optional, Audit-Logs WORM-fΓ€hig, Supply-Chain-Schutz via SBOM.
- Migration? Strangler-Fig: Legacy bleibt lesend, neue Writes in ThemisDB, spΓ€ter Cutover.
In diesem Kapitel haben Sie gelernt:
β
Das Problem: Polyglot Persistence ist komplex und teuer
β
Die LΓΆsung: Multi-Model in einem System
β
Die Architektur: Modular, composable, explizit
β
Die Modelle: Relational, Graph, Dokument, Vektor
β
Der Vergleich: Wann ThemisDB vs. Alternativen
β
Die Praxis: Hello World und Multi-Model Example
Im nΓ€chsten Kapitel tauchen wir tiefer in die Architektur ein:
- Wie funktioniert das Storage Layer?
- Wie werden Transaktionen ΓΌber Modelle hinweg garantiert?
- Wie skaliert ThemisDB horizontal?
Kapitel 2: Architektur-Γberblick β
- Complete Example: examples/01_hello_world
- Installation Guide: Kapitel 4 - Setup und Installation
- AQL Tutorial: Kapitel 13 - AQL Mastery
- API Referenz: ../de/apis/apis_openapi.md
Kapitel 1 von 30 | Teil I: Grundlagen | ~7.200 WΓΆrter
ThemisDB 1.9.0-beta Β· Home Β· Module-Index Β· GitHub Β· Issues
ThemisDB 1.9.0-beta Β· Home Β· Wiki-Index Β· Module-Index Β· FAQ Β· Quick-Reference Β· GitHub Β· Issues Β· Discussions Β· License
- Home
- Hero Articles
- All Wiki Pages
- FAQ
- Edition Comparison
- Repository README
- Changelog
- Roadmap
- Versioning
- Integration Mapping
- Overview
- Readme
- Appendix D Feature Status
- Appendix E Incident Runbooks
- Appendix F AQL Cheatsheet
- Appendix G Configuration
- Appendix H Glossary
- Appendix I Troubleshooting
- Appendix Literatur
- Chapter 00 Genesis
- Chapter 01 Introduction
- Chapter 02 Architecture
- Chapter 03 Multimodel
- Chapter 04 Installation
- Chapter 05 Relational
- Chapter 06 Graph
- Chapter 07 Document
- Chapter 08 Storage Layer
- Chapter 08 Vector
- Chapter 09 Timeseries
- Chapter 10 Enterprise
- Chapter 11 Realtime
- Chapter 12 Computervision
- Chapter 13 Fulltext
- Chapter 14 Geospatial
- Chapter 15 Analytics
- Chapter 16 Ml
- Chapter 16 Sharding
- Chapter 17 LLM Integration
- Chapter 17 Scaling
- Chapter 18 HA
- Chapter 18 Ml
- Chapter 19 Monitoring
- Chapter 19 Monitoring Observability
- Chapter 20 Backup
- Chapter 20 Performance
- Chapter 21 Auth
- Chapter 21 Performance
- Chapter 22 Clients
- Chapter 22 Encryption
- Chapter 23 Testing Qa
- Chapter 24 Ai Ethics
- Chapter 25 Devops Infrastructure
- Chapter 26 Migration Legacy
- Chapter 27 Troubleshooting
- Chapter 28 AQL Reference
- Chapter 29 Analytics Process Mining
- Chapter 30 Deployment Operations
- Chapter 31 API Protocols
- Chapter 32 API Design Rest Principles
- Chapter 32 AQL Oop Implementation
- Chapter 33 Best Practices
- Chapter 34 Query Optimization
- Chapter 35 Data Modeling Patterns
- Chapter 36 Security Hardening
- Chapter 37 Ecosystem Integration
- Chapter 38 Observability Sre
- Chapter 39 Performance Tuning Cookbook
- Chapter 40 Data Governance Compliance
- Chapter 41 Hands On Labs
- Chapter 42 Docs Assistant Usage
- Chapter MVCC Hlc
- Cover
- Cover Book
- Index
- Preface
- Test Links Example
- Batch Operations
- Best Practices
- CRUD Tutorial
- Custom Document Ingestion
- Getting Started Tutorial
- Interactive Examples
- Schema Design
- Video Tutorials
- AQL Reference
- AQL Examples
- AQL Overview
- AQL Feature Roadmap
- AQL Geospatial Guide
- AQL LLM Migration Guide
- AQL API
- AQL Grammar (EBNF)
- AQL Root Overview
- AQL Examples (root)
- API Reference
- API Module README
- OpenAPI Overview
- Client SDK Overview
- SDK Overview
- Operations
- Operations Overview
- Operations Runbook
- Operations Handbook
- ThemisCtl Admin Guide
- Pipeline E2E SOPs
- Docker Overview
- Docker Hub README
- Helm Overview
- Packaging Overview
- Operator Overview
- Security Policy
- Production Hardening Checklist
- Security Hardening Guide
- Encryption Key Management
- Access Control Framework
- Zero Trust Policy
- API Authentication & Authorization
- HSM Production Setup
- PKCS11 Integration
- DSGVO / SOC2 Checklist
- Access Model Runbooks
- Access Model Dashboard
- Maturity Automation Runbook
- Access Review Automation
- Access Model Dashboard
- Access Model Runbooks
- Rights Revocation
- Dr Checklists
- Dr Testing
- Incident Response Playbook
- Incident Response Testing
- GPU Oom Recovery
- Grammar Debugging
- Metrics Scrape Troubleshooting
- Model Swap Procedure
- Quota Tuning
- Subagent Deployment
- Logging Configuration
- Content Model
- Crypto & Keys
- Feature Flags Reference
- Modular Architecture Roadmap
- Modularization Guide
- Module Architecture Index
- PostgreSQL Wire Protocol
- Query Scheduling
- Raft Consensus Design
- Resource Pooling
- Source Directory Guide
- Unified Access Model
- E1 001 Layered Retrieval Design
- E1 002 Ann Abstraction Strategy
- E1 003 Tensor Summary Types
- E1 004 Lora Package Distinction
- E1 005 Model Switch Compatibility
- E1 006 Federated Tensor Summaries
- E2 001 Evaluation Framework Design
- E2 002 Hardware Profile Strategy
- E2 003 Query Planner Routing Model
- E2 004 Approximation Governance Rules
- E2 005 Cross Layer Fallback Confidence Policy
- E3 001 Distributed Tensor Design
- E3 002 Manifest Coordination Strategy
- E3 003 Recovery And Erasure Choice
- E3 004 Tensor Fabric Infrastructure
- Contributing
- Contributing (root)
- Code of Conduct
- Support
- Maintainers
- CTest Guide
- Build Quick Reference
- Developer Wiki Index
- Build / Test / CI
- Module Index
- Branching Strategy
- Release Strategy
- CI Policy Gates Wave C
- Disabled Stub Policy
- Docs PR Policy
- GA Promotion Sign Off
- Github Milestones Setup
- Governance Policies Phase1
- Maturity Claim Verification Checklist
- Maturity Evidence Registry
- Merge Gate Bot Config
- Merge Gate Status Live
- Phase 1 Closure Report
- Phase Closure Policy
- Phase Dependency Graph
- Phase3 Enforcement Runbook
- Plugin Submodule Rollback
- PR Version Targeting
- PR Version Targeting Backfill
- Production Ready 2026 Delivery Plan
- Publish Workflow Audit 2026 09 23
- Query Module Status
- Readme
- Release Governance
- Release Promotion Gate Policy
- Release Validation Checklist
- Root Hygiene Policy
- SBOM Approved Versions
- Security Compliance Audit Report 2026 08 10
- Security Module 5671 Evidence Summary
- Sharding P6 Residual Risk Acceptance
- Sourcecode Compliance Governance
- Src Module Documentation Compliance 2026 09 20
- Updates Development Status Sign Off
- Wave C Implementation Complete
- Wave C Implementation Plan
- Wave C Ml Exit Gate Sign Off
- Wave C Policy Gate Evidence
- Blob Storage
- Cuda
- Ethics Ai
- Exporters
- Huggingface
- Image Analysis
- Importers
- RPC
- Scraper
- Themisdb Ai Watermark Detector
- User Storage Encrypted
- Chimera Architecture
- Chimera Future
- Chimera Readme
- Chimera Roadmap
- Covina Fastapi Ingestion Architecture
- Covina Fastapi Ingestion Future
- Covina Fastapi Ingestion Roadmap
- Vcc Base Architecture
- Vcc Base Future
- Vcc Base Roadmap
- Vcc Clara Ingestion Architecture
- Vcc Clara Ingestion Future
- Vcc Clara Ingestion Roadmap
- Vcc Veritas Architecture
- Vcc Veritas Future
- Vcc Veritas Roadmap
- 01 Hello World
- 02 Todo App
- 03 Contact Manager
- 04 Inventory System
- 05 Time Series Monitor
- 06 Graph Social Network
- 07 Vector Search Documents
- 08 Dms Erp System
- 09 Iot Sensor Network
- 10 Drone Image Analysis
- 11 Blog Wiki
- 12 Expense Tracker
- 13 Recipe Manager
- 14 Ecommerce Catalog
- 15 Event Management
- 16 Kanban Board
- 17 Crm
- 18 Realtime Chat
- 19 Recommendation Engine
- 20 Smart Home
- 21 Coding Platform
- 22 AQL Diagram Tool
- 23 Traveling Salesman
- 24 Moral Philosophy Debates
- API Versioning
- Distributed Sharding
- Feedback Plugins
- Geo
- Gnn
- Image Analysis
- Legal Lora Training
- LLM
- Lora Sync
- Migration
- Nlp
- Performance
- Railway
- Replication
- Rope Visualization
- Sample Product Config
- Security
- Client SDK Overview
- Quickstart
- Sdk Enhancements
- Sdk Implementation Summary
- Test Suite Readme
- Go
- Java
- Javascript
- Php
- Python
- Ruby
- Rust
- Typescript
- 01 Grundlegende Operationen
- 02 AQL Queries
- 03 Graph Daten
- 04 Multimodell Anwendung
- 01 Quickstart Guide
- 02 AQL Referenz Kurzuebersicht
- 03 Datenmodellierung Guide
- 04 Uebungsaufgaben
- 05 Best Practices Guide
- Training Documents
- Training Overview
- 01 Einfuehrung Und Uebersicht
- 02 Datenmodelle Und Architektur
- 03 AQL Abfragesprache
- 04 Installation Und Setup
- 05 Anwendungsbeispiele
- Training Presentations
- Dependencies Readme
- Processmonitor Readme
- Themis.admintools.shared Readme
- Themis.aqlquerybuilder Readme
- Themis.aqlquerybuilder Roadmap
- Themis.auditlogviewer Readme
- Themis.auditlogviewer Roadmap
- Themis.classificationdashboard Readme
- Themis.classificationdashboard Roadmap
- Themis.compliancereports Readme
- Themis.compliancereports Roadmap
- Themis.gisviewer.controlpanel Readme
- Themis.gisviewer.controlpanel Roadmap
- Themis.impactanalysisviewer Readme
- Themis.impactanalysisviewer Roadmap
- Themis.ingestiontool Readme
- Themis.ingestiontool Roadmap
- Themis.keyrotationdashboard Readme
- Themis.keyrotationdashboard Roadmap
- Themis.piimanager Readme
- Themis.piimanager Roadmap
- Themis.retentionmanager Readme
- Themis.retentionmanager Roadmap
- Themis.sagaverifier Readme
- Themis.sagaverifier Roadmap
- Themis.usbadmintool Readme
- Themis.usbadmintool Roadmap
- Architecture Generator Readme
- CI Readme
- CI Roadmap
- Compiler Diagnostics Readme
- Compiler Diagnostics Roadmap
- Completion Readme
- Copilot Ollama Router Readme
- Copilot Ollama Router Roadmap
- Gnn Readme
- Gnn Roadmap
- Rope Visualizer Readme
- Rope Visualizer Roadmap
- Tco Calculator Readme
- Tco Calculator Roadmap
- Tests Readme
- Tests Roadmap
- Themis Config Wx Readme
- Themis Docs Builder Readme
- Wikipedia Ingestion Readme
- Ai Metadata And Provenance
- Build / Test / CI
- Governance And Roadmap
- Developer Wiki Index
- Module Direct Doxygen Check
- Module Doxygen Baseline Summary
- Module Doxygen Batch
- Module Doxygen Coverage Summary
- Module Doxygen Smoke Summary
- Modules And Apis
- Retrieval Direct Doxygen Check
- Soll Ist Gap Summary
- Wiki Delta Report