-
Notifications
You must be signed in to change notification settings - Fork 1
Compendium chapter 42 docs assistant usage
Navigation: Home > Pages
"KI-gestΓΌtzte Hilfe: Der integrierte LLM-Dokumentations-Assistent beantwortet Konfigurations- und Troubleshooting-Fragen in Echtzeit."
Der ThemisDB Dokumentations-Assistent nutzt llama.cpp und eine vorkompilierte RocksDB-Datenbank mit 1.151 Dokumenten, um Administratoren, Superusern und normalen Benutzern kontextbewusste Hilfe zu bieten. Alle Dokumentationen aus ./docs und ./compendium sind ΓΌber mehrere Datenmodelle indexiert.
Automatische Konfiguration: Der Dokumentations-Assistent findet die Dokumentationsdatenbank automatisch beim Start. Keine manuelle Konfiguration erforderlich!
Suchpfade (Auto-Discovery):
-
data/docs.db(RocksDB - empfohlen) -
data/docs_database.json(JSON - Fallback) -
./docs.db(aktuelles Verzeichnis) ./docs_database.json-
../data/docs.db(parent directory)
Manuelle Konfiguration (optional):
# config/docs_assistant.yaml
docs_assistant:
enabled: true
database:
path: "data/docs.db" # Expliziter Pfad
type: "rocksdb" # json oder rocksdb
auto_discover: false # Deaktiviert Auto-DiscoveryZielgruppen:
- Administratoren: Vollzugriff auf Konfiguration, Troubleshooting und Systemoptimierung
- Superuser: Erweiterte Abfragen, Performance-Tuning, erweiterte Features
- User: Grundlegende Queries, Dokumentationssuche, Anwendungshilfe
Zugriffsmethoden:
- REST API (HTTP/1.1)
- AQL-Funktionen (nativ)
- ThemisDB CLI
- C++ SDK
graph TB
subgraph "Benutzertypen"
Admin[π€ Administrator<br/>Vollzugriff]
Super[π€ Superuser<br/>Erweitert]
User[π€ User<br/>Basis]
end
subgraph "Dokumentations-Datenbank"
DB[(RocksDB<br/>7 Column Families<br/>1151 Dokumente)]
end
subgraph "Zugriffsmethoden"
REST["REST API<br/>/api/v1/llm/docs/*"]
AQL["AQL Funktionen<br/>DOCS_QUERY()"]
CLI["ThemisDB CLI<br/>docs-query"]
SDK["C++ SDK<br/>DocsAssistant"]
end
subgraph "LLM Engine"
LLM[llama.cpp<br/>RAG-basiert]
end
Admin --> REST
Admin --> AQL
Admin --> CLI
Admin --> SDK
Super --> REST
Super --> AQL
Super --> CLI
User --> REST
User --> CLI
REST --> LLM
AQL --> LLM
CLI --> LLM
SDK --> LLM
LLM --> DB
style Admin fill:#ff6b6b
style Super fill:#ffd93d
style User fill:#6bcf7f
style DB fill:#4d96ff
style LLM fill:#a78bfa
Abb. 42.0: Dokumentations-Assistent Architektur nach Benutzerrolle
Automatische Konfiguration (empfohlen fΓΌr Entwicklung):
Der Dokumentations-Assistent kann die Datenbank automatisch beim Server-Start finden, aber fΓΌr Produktionsumgebungen wird die explizite YAML-Konfiguration empfohlen.
# Generiere Datenbank
python3 scripts/generate_docs_rocksdb.py --output data/docs.db
# Entwicklung: Auto-Discovery (nur wenn keine YAML-Config vorhanden)
./themis_server
# Produktion: Explizite YAML-Konfiguration (empfohlen!)
# Siehe config/docs_assistant.yamlManuelle Konfiguration via YAML (empfohlen fΓΌr Produktion):
Die YAML-Konfiguration ist der bevorzugte Weg fΓΌr Produktionsumgebungen und bietet bessere Kontrolle:
# config/docs_assistant.yaml
docs_assistant:
enabled: true
database:
path: "/var/lib/themisdb/docs.db" # Expliziter Pfad (empfohlen!)
type: "rocksdb" # json oder rocksdb
auto_discover: false # Deaktiviert Auto-Discovery (sicherer)
llm:
max_context_docs: 10 # Admin braucht mehr Kontext
enable_caching: true
cache_ttl_seconds: 300
access:
enable_rbac: true
default_role: "user"
# Server-Log:
# [INFO] Documentation Assistant: Loading database from config: /var/lib/themisdb/docs.db
# [INFO] Documentation Assistant: Loaded 1151 documents from 7 column familiesWichtige Sicherheitshinweise:
- Explizite Konfiguration bevorzugen: Auto-Discovery ist praktisch fΓΌr Entwicklung, aber in Produktion sollte immer ein expliziter Pfad gesetzt werden
- Zugriffskontrolle: Stellen Sie sicher, dass nur autorisierte Benutzer auf docs.db zugreifen kΓΆnnen
- ZukΓΌnftige Datenbanken: Admins kΓΆnnen spΓ€ter nutzungsspezifische Datenbanken hinzufΓΌgen - siehe TODO fΓΌr Security-FolgenabschΓ€tzung
-
Dateisystemberechtigungen:
chmod 600 /var/lib/themisdb/docs.db(nur Owner-Zugriff)
π TODO: Security-FolgenabschΓ€tzung
- Bewertung der Risiken bei mehreren benutzerdefinierten Dokumentationsdatenbanken
- Validierung der Datenbank-Inhalte beim Laden
- Sandbox-Mechanismus fΓΌr Drittanbieter-Datenbanken
- Audit-Trail fΓΌr Datenbankzugriffe
- Rate-Limiting pro Datenbank
Umgebungsvariablen (hΓΆchste PrioritΓ€t):
# Γberschreibt YAML-Konfiguration
export THEMIS_DOCS_DATABASE_PATH="/custom/path/docs.db"
export THEMIS_DOCS_DATABASE_TYPE="rocksdb"
export THEMIS_DOCS_AUTO_DISCOVER="false" # Explizit deaktivieren
./themis_serverKonfigurationsprioritΓ€t:
- Umgebungsvariablen (hΓΆchste)
- YAML-Konfiguration (empfohlen fΓΌr Produktion) β
- Auto-Discovery (nur fΓΌr Entwicklung)
- Fallback:
data/docs_database.json
Verifizierung:
# PrΓΌfe welche Datenbank geladen wurde
curl -X GET http://localhost:8765/api/v1/llm/health \
-H "Authorization: Bearer ${ADMIN_TOKEN}"
# Antwort:
{
"status": "healthy",
"docs_assistant": {
"enabled": true,
"database_path": "/var/lib/themisdb/docs.db",
"database_type": "rocksdb",
"documents_loaded": 1151,
"column_families": 7,
"discovery_method": "yaml_config" # yaml_config, env, auto, fallback
}
}Best Practice: YAML-Konfiguration in Produktion
# config/docs_assistant.yaml - Produktionskonfiguration
docs_assistant:
enabled: true
# PrimΓ€re Dokumentationsdatenbank (System)
database:
path: "/var/lib/themisdb/docs.db"
type: "rocksdb"
auto_discover: false # Sicherheit: Explizit deaktiviert
read_only: true # Verhindert Γnderungen an der Datenbank
# TODO: ZukΓΌnftige Feature - ZusΓ€tzliche Datenbanken
# additional_databases:
# - name: "custom_docs"
# path: "/var/lib/themisdb/custom_docs.db"
# enabled: true
# requires_role: "administrator" # Nur fΓΌr Admins
# security_validated: true # Muss validiert sein
access:
enable_rbac: true
require_auth: true
monitoring:
enable_audit_log: true
audit_log_path: "/var/log/themisdb/docs_assistant_audit.log"Administratoren benΓΆtigen Hilfe bei:
- Systemkonfiguration: Sharding, Replikation, Performance-Tuning
- Troubleshooting: Fehlerdiagnose, Log-Analyse, Deadlock-Behebung
- Sicherheit: RBAC-Setup, VerschlΓΌsselung, HSM-Integration
- Deployment: Docker, Kubernetes, Produktionsumgebung
- Monitoring: Metrics, Alerts, Observability
# Admin fragt nach RAID-Sharding-Konfiguration
curl -X POST https://themisdb.example.com:8765/api/v1/llm/docs/query \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${ADMIN_TOKEN}" \
-d '{
"query": "Wie konfiguriere ich RAID 6 Sharding mit 9 Shards und Replikationsfaktor 6?"
}'
# Antwort:
{
"query": "Wie konfiguriere ich RAID 6 Sharding...",
"answer": "Um RAID 6 Sharding zu konfigurieren:\n\n1. Setzen Sie Umgebungsvariablen:\n - THEMIS_ENABLE_SHARDING=true\n - THEMIS_SHARD_COUNT=9\n - THEMIS_SHARD_REPLICATION_FACTOR=6\n\n2. Konfigurieren Sie config/shards.yaml:\n shards:\n - id: 1\n endpoint: themis-shard-1:8765\n weight: 1.0\n - id: 2\n endpoint: themis-shard-2:8765\n weight: 1.0\n [...]\n\n3. Starten Sie den Coordinator:\n ./themis_server --mode coordinator --config config/shards.yaml\n\nWichtig: RAID 6 benΓΆtigt mindestens 4 Shards. Mit 9 Shards und RF=6 haben Sie optimale Fehlertoleranz.\n\nReferenz: docs/en/features/RAID_SHARDING.md",
"confidence_score": 0.94,
"documents_searched": 1151,
"documents_used": 5,
"search_time_ms": 12,
"generation_time_ms": 1840,
"relevant_documents": [
{
"file_name": "RAID_SHARDING.md",
"relevance_score": 0.96,
"content_preview": "# RAID Sharding in ThemisDB\n\nRAID-style sharding provides data redundancy..."
}
]
}# Admin benΓΆtigt Hilfe zur Sicherheits-Konfiguration
curl -X POST https://themisdb.example.com:8765/api/v1/llm/docs/config \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${ADMIN_TOKEN}" \
-d '{
"topic": "security"
}'
# Antwort:
{
"topic": "security",
"configuration_help": "ThemisDB Sicherheits-Konfiguration:\n\n**Basis-Sicherheit:**\n- THEMIS_ENABLE_TLS=true\n- THEMIS_TLS_CERT_PATH=/path/to/cert.pem\n- THEMIS_TLS_KEY_PATH=/path/to/key.pem\n\n**RBAC (Role-Based Access Control):**\n- THEMIS_ENABLE_RBAC=true\n- THEMIS_RBAC_CONFIG=/path/to/rbac.yaml\n\n**VerschlΓΌsselung:**\n- THEMIS_ENABLE_ENCRYPTION_AT_REST=true\n- THEMIS_ENCRYPTION_KEY_PATH=/path/to/master.key\n\n**HSM-Integration (Optional):**\n- THEMIS_ENABLE_HSM_REAL=ON (CMake)\n- THEMIS_HSM_PROVIDER=pkcs11\n- THEMIS_HSM_LIB_PATH=/usr/lib/softhsm/libsofthsm2.so\n\n**Best Practices:**\n1. Verwenden Sie starke TLS-Zertifikate (mind. 2048-bit RSA)\n2. Rotieren Sie Encryption Keys regelmΓ€Γig\n3. Aktivieren Sie Audit-Logging\n4. Implementieren Sie Network Policies (Firewall)\n\nReferenzen:\n- docs/en/features/SECURITY.md\n- docs/en/configuration/RBAC_SETUP.md",
"confidence_score": 0.91,
"documents_used": 7
}# Admin diagnostiziert einen Deadlock
curl -X POST https://themisdb.example.com:8765/api/v1/llm/docs/troubleshoot \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${ADMIN_TOKEN}" \
-d '{
"error": "Server hΓ€ngt beim Start bei \"Adaptive Index Manager initialized\". RAID Sharding ist aktiviert."
}'
# Antwort:
{
"error": "Server hΓ€ngt beim Start...",
"troubleshooting_help": "**Diagnose: RAID Sharding Deadlock (bekannter Bug in v1.3.3)**\n\nUrsache: AdaptiveIndexManager versucht, Column Families zu ΓΆffnen, bevor ShardingManager initialisiert ist.\n\n**LΓΆsung:**\n\n1. **Sofort-Fix:** Update auf v1.3.4+\n ```bash\n git pull origin main\n cmake --build build --target themis_server\n ```\n\n2. **Workaround fΓΌr v1.3.3:**\n - Deaktivieren Sie temporΓ€r Sharding\n - Starten Sie Server neu\n - Aktivieren Sie Sharding wieder\n\n3. **PrΓΌfen Sie docker-compose.yml:**\n Stellen Sie sicher, dass Port-Mappings korrekt sind:\n ```yaml\n ports:\n - \"8081:8765\" # NICHT 8081:8080\n ```\n\n4. **ΓberprΓΌfen Sie Logs:**\n ```bash\n tail -f logs/themis_server.log | grep -i \"shard\\|deadlock\"\n ```\n\n**Weitere Informationen:**\n- docs/RAID_SHARDING_DEADLOCK_HOTFIX.md\n- GitHub Issue #234",
"confidence_score": 0.97,
"documents_used": 3
}-- Admin sucht nach Performance-Tuning-Dokumentation
RETURN DOCS_SEARCH('performance tuning query optimization', 10)
-- Kombinierte Abfrage: Suche + Antwort
LET docs = DOCS_SEARCH('replication setup', 5)
LET answer = DOCS_QUERY('How do I set up multi-master replication?')
RETURN {
answer: answer,
sources: docs,
query_time: DATE_NOW()
}
-- Batch-Abfragen fΓΌr mehrere Themen
FOR topic IN ['sharding', 'replication', 'security', 'monitoring']
RETURN {
topic: topic,
help: DOCS_CONFIG_HELP(topic)
}
-- Troubleshooting aus :document Collection
FOR doc IN :document
FILTER doc.type == 'documentation'
FILTER CONTAINS(doc.title, 'TROUBLESHOOT') OR CONTAINS(doc.title, 'ERROR')
RETURN {
title: doc.title,
source: doc.source,
preview: SUBSTRING(doc.content, 0, 300)
}
LIMIT 20
# Admin verwendet ThemisDB CLI
themis_cli --database themisdb.db --execute "RETURN DOCS_QUERY('How to enable GPU acceleration?')"
# Output:
# ============================================================
# ThemisDB Documentation Assistant
# ============================================================
# Query: How to enable GPU acceleration?
#
# Answer:
# To enable GPU acceleration in ThemisDB:
#
# 1. CMake Configuration:
# cmake -B build -DTHEMIS_ENABLE_GPU=ON -DTHEMIS_ENABLE_CUDA=ON
#
# 2. Environment Variables:
# export THEMIS_GPU_DEVICE=0 # GPU device ID
# export THEMIS_GPU_MEMORY_LIMIT=8GB
#
# 3. Verify GPU Support:
# ./themis_server --check-gpu
#
# Supported Backends:
# - CUDA (NVIDIA)
# - HIP (AMD)
# - Vulkan (Cross-platform)
#
# References:
# - docs/en/features/GPU_ACCELERATION.md
# - docs/en/configuration/GPU_SETUP.md
# ============================================================
# Interaktiver Modus
themis_cli --database themisdb.db --interactive
themis> RETURN DOCS_QUERY('explain vector embeddings')
themis> RETURN DOCS_CONFIG_HELP('llm')
themis> RETURN DOCS_TROUBLESHOOT('out of memory error')
themis> EXIT#include "llm/docs_assistant.h"
#include <iostream>
int main() {
// Initialisiere Dokumentations-Assistenten
themis::llm::DocsAssistantConfig config;
config.docs_database_path = "/var/lib/themisdb/docs.db";
config.database_type = "rocksdb";
config.max_context_docs = 10; // Admin braucht mehr Kontext
config.enable_semantic_search = true;
config.enable_caching = true;
themis::llm::DocsAssistant assistant(config);
if (!assistant.loadDatabase()) {
std::cerr << "Failed to load documentation database\n";
return 1;
}
// Beispiel 1: Konfigurationshilfe
auto config_result = assistant.getConfigHelp("sharding");
std::cout << "Configuration Help:\n"
<< config_result.generated_answer << "\n\n";
// Beispiel 2: Troubleshooting
auto trouble_result = assistant.getTroubleshootingHelp(
"Database crashes with segmentation fault on startup"
);
std::cout << "Troubleshooting:\n"
<< trouble_result.generated_answer << "\n\n";
// Beispiel 3: Dokumentensuche
auto search_results = assistant.searchDocs("RAID configuration", 5);
std::cout << "Found " << search_results.size() << " relevant documents:\n";
for (const auto& doc : search_results) {
std::cout << " - " << doc.file_name
<< " (relevance: " << (doc.relevance_score * 100) << "%)\n";
}
// Beispiel 4: Statistiken
auto stats = assistant.getStats();
std::cout << "\nDatabase Statistics:\n"
<< stats.dump(2) << "\n";
return 0;
}Superuser fokussieren sich auf:
- Query-Optimierung: EXPLAIN ANALYZE, Index-Tuning
- Erweiterte Features: Vector-Suche, Graph-Traversierung, Multi-Model
- Performance-Analyse: Profiling, Bottleneck-Identifikation
- Datenmodellierung: Best Practices, Schema-Design
- Batch-Operationen: Bulk-Insert, ETL-Pipelines
# Superuser fragt nach Query-Optimierung
curl -X POST https://themisdb.example.com:8765/api/v1/llm/docs/query \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${SUPERUSER_TOKEN}" \
-d '{
"query": "How can I optimize a slow JOIN query between graph and relational collections?"
}'
# Antwort mit spezifischen Optimierungstipps
{
"answer": "**Query-Optimierung fΓΌr Multi-Model JOINs:**\n\n1. **Verwenden Sie sekundΓ€re Indizes:**\n ```aql\n -- Erstelle Indizes (via separate CREATE INDEX Statements)\n -- Index auf users.user_id wird erstellt\n -- Index auf friends._from wird erstellt\n ```\n\n2. **Optimieren Sie Join-Reihenfolge:**\n ```aql\n -- Schlecht: Graph zuerst, dann Filter\n FOR user IN users\n FOR friend IN friends\n FILTER friend._from == user._id\n RETURN friend\n \n -- Gut: Filter zuerst, dann Join\n FOR user IN users\n FILTER user.age > 25\n FOR friend IN friends\n FILTER friend._from == user._id\n RETURN friend\n ```\n\n3. **Nutzen Sie EXPLAIN:**\n ```aql\n EXPLAIN\n FOR user IN users\n FOR friend IN friends\n FILTER friend._from == user._id\n RETURN {user: user, friend: friend}\n ```\n\n4. **Verwenden Sie LET fΓΌr Subqueries:**\n ```aql\n FOR user IN users\n FILTER user.age > 25\n LET user_friends = (\n FOR friend IN friends\n FILTER friend._from == user._id\n RETURN friend\n )\n RETURN {user: user, friends: user_friends}\n ```\n\n**Performance-Metriken:**\n- Index-Scan: ~1-5ms\n- Full Collection Scan: ~50-500ms\n- Optimized Join: ~10-50ms\n- Unoptimized Join: ~500-5000ms\n\nReferenzen:\n- docs/en/features/QUERY_OPTIMIZATION.md\n- compendium/chapter_34_query_optimization.md",
"confidence_score": 0.89,
"documents_used": 6
}-- Superuser analysiert Performance-Dokumentation
FOR doc IN :document
FILTER doc.type == 'documentation'
FILTER CONTAINS(doc.content, 'performance') OR CONTAINS(doc.content, 'optimization')
LET relevance = (
LENGTH(SPLIT(LOWER(doc.content), 'performance')) +
LENGTH(SPLIT(LOWER(doc.content), 'optimization')) +
LENGTH(SPLIT(LOWER(doc.content), 'index'))
)
SORT relevance DESC
RETURN {
title: doc.title,
source: doc.source,
relevance: relevance,
preview: SUBSTRING(doc.content, 0, 200)
}
LIMIT 15
-- Kombinierte Suche mit Aggregation
LET vector_docs = DOCS_SEARCH('vector search embeddings', 5)
LET graph_docs = DOCS_SEARCH('graph traversal', 5)
LET relational_docs = DOCS_SEARCH('relational queries', 5)
RETURN {
vector: vector_docs,
graph: graph_docs,
relational: relational_docs,
total: LENGTH(vector_docs) + LENGTH(graph_docs) + LENGTH(relational_docs)
}
# Superuser fragt nach Profiling-Tools
curl -X POST https://themisdb.example.com:8765/api/v1/llm/docs/query \
-H "Authorization: Bearer ${SUPERUSER_TOKEN}" \
-d '{
"query": "What profiling tools are available for performance analysis?"
}'
# CLI-basierte Performance-Analyse mit AQL
themis_cli --database themisdb.db \
--execute "RETURN DOCS_QUERY('explain PROFILE and EXPLAIN in AQL')"Normale User benΓΆtigen Hilfe bei:
- Basis-Queries: Einfache FOR...FILTER...RETURN
- Datentypen: JSON, Arrays, Nested Objects
- Built-in Funktionen: String, Math, Date/Time
- Fehlerbehandlung: VerstΓ€ndliche Fehlermeldungen
- API-Nutzung: HTTP Endpoints, Request/Response-Format
# User fragt nach einfacher Query-Syntax
curl -X POST https://themisdb.example.com:8765/api/v1/llm/docs/query \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${USER_TOKEN}" \
-d '{
"query": "How do I select all users older than 30?"
}'
# Antwort mit einfachem Beispiel
{
"answer": "Um alle Benutzer ΓΌber 30 zu selektieren, verwenden Sie:\n\n```aql\nFOR user IN users\n FILTER user.age > 30\n RETURN user\n```\n\n**ErklΓ€rung:**\n- `FOR user IN users` iteriert ΓΌber die 'users' Collection\n- `FILTER user.age > 30` filtert Benutzer mit age > 30\n- `RETURN user` gibt die gefilterten Benutzer zurΓΌck\n\n**Beispiel-Ausgabe:**\n```json\n[\n {\"_key\": \"user1\", \"name\": \"Alice\", \"age\": 35},\n {\"_key\": \"user2\", \"name\": \"Bob\", \"age\": 42}\n]\n```\n\nSie kΓΆnnen auch spezifische Felder zurΓΌckgeben:\n```aql\nFOR user IN users\n FILTER user.age > 30\n RETURN {name: user.name, age: user.age}\n```",
"confidence_score": 0.95,
"documents_used": 3
}# User verwendet vereinfachte CLI-Befehle
themis_cli --docs-search "how to insert data"
# Output:
# ============================================================
# Documentation Search Results
# ============================================================
# Found 8 relevant documents:
#
# 1. GETTING_STARTED.md (relevance: 87%)
# "Getting Started with ThemisDB... To insert data, use FOR...INSERT..."
#
# 2. AQL_BASICS.md (relevance: 82%)
# "AQL Basics... FOR doc IN [{name: 'Alice', age: 30}] INSERT doc INTO users..."
#
# 3. REST_API.md (relevance: 75%)
# "REST API Documentation... POST /api/v1/query with AQL statement..."
#
# [...]
# ============================================================
# User stellt Follow-up-Frage
themis_cli --execute "RETURN DOCS_QUERY('show me an example of inserting multiple records')"<div class="themis-docs-assistant">
<input type="text"
placeholder="Frage zur ThemisDB-Dokumentation..."
id="docsQuery">
<button onclick="queryDocs()">Suchen</button>
<div id="docsResults">
</div>
</div>
<script>
async function queryDocs() {
const query = document.getElementById('docsQuery').value;
const response = await fetch('/api/v1/llm/docs/query', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + getUserToken()
},
body: JSON.stringify({ query })
});
const result = await response.json();
document.getElementById('docsResults').innerHTML =
`<div class="answer">${result.answer}</div>`;
}
</script>VollstΓ€ndige config/docs_assistant.yaml mit allen Optionen:
# ============================================================
# ThemisDB Documentation Assistant - VollstΓ€ndige Konfiguration
# ============================================================
# Empfohlen fΓΌr Produktionsumgebungen
# Auto-Discovery ist nur fΓΌr Entwicklung gedacht
docs_assistant:
# Grundeinstellungen
enabled: true
# ============================================================
# Datenbank-Konfiguration (KRITISCH)
# ============================================================
database:
# Pfad zur Dokumentationsdatenbank
# SICHERHEIT: Immer explizit setzen in Produktion!
path: "/var/lib/themisdb/docs.db"
# Datenbanktyp: "rocksdb" oder "json"
type: "rocksdb"
# Auto-Discovery deaktivieren (empfohlen fΓΌr Produktion)
# Verhindert automatisches Laden von unbekannten Datenbanken
auto_discover: false
# Read-Only-Modus (empfohlen)
# Verhindert versehentliche Γnderungen an der Datenbank
read_only: true
# Validierung beim Laden
validate_on_load: true
# Maximale DatenbankgrΓΆΓe (MB)
max_size_mb: 500
# TODO: ZusΓ€tzliche Datenbanken (zukΓΌnftiges Feature)
# Erfordert Security-FolgenabschΓ€tzung vor Implementierung
# additional_databases:
# - name: "custom_legal_docs"
# path: "/var/lib/themisdb/legal_docs.db"
# type: "rocksdb"
# enabled: true
# requires_role: "administrator"
# security_validated: true
# checksum: "sha256:abc123..."
# signed_by: "security@example.com"
# ============================================================
# LLM-Konfiguration
# ============================================================
llm:
# Modell-ID (leer = Standardmodell verwenden)
model_id: ""
# Maximale Anzahl Dokumente im RAG-Kontext
max_context_docs: 5
# Zeichen pro Dokument im Kontext
context_preview_length: 1000
# Semantische Suche aktivieren (benΓΆtigt Vector Embeddings)
enable_semantic_search: true
# Response-Caching
enable_caching: true
cache_ttl_seconds: 300
# ============================================================
# Zugriffskontrolle (RBAC)
# ============================================================
access:
# RBAC aktivieren
enable_rbac: true
# Standardrolle wenn nicht authentifiziert
default_role: "anonymous"
# Authentifizierung erzwingen
require_auth: true
# Rollenbasierte Limits (siehe 42.4.1)
roles:
administrator:
requests_per_minute: 100
max_context_docs: 10
cache_ttl_seconds: 300
allowed_endpoints:
- query
- search
- config
- troubleshoot
- stats
# TODO: Zugriff auf zusΓ€tzliche Datenbanken
additional_databases_access: true
superuser:
requests_per_minute: 50
max_context_docs: 7
cache_ttl_seconds: 600
allowed_endpoints:
- query
- search
- config # read-only
user:
requests_per_minute: 20
max_context_docs: 3
cache_ttl_seconds: 900
allowed_endpoints:
- query
- search
anonymous:
requests_per_minute: 5
max_context_docs: 1
cache_ttl_seconds: 1800
allowed_endpoints:
- search # nur Suche, keine LLM-Queries
# ============================================================
# REST API
# ============================================================
api:
enabled: true
base_path: "/api/v1/llm/docs"
require_auth: true
enable_cors: true
cors_origins:
- "https://app.example.com"
- "https://admin.example.com"
# ============================================================
# AQL-Funktionen
# ============================================================
aql:
enabled: true
function_prefix: "DOCS_"
functions:
- QUERY # DOCS_QUERY()
- SEARCH # DOCS_SEARCH()
- CONFIG_HELP # DOCS_CONFIG_HELP()
- TROUBLESHOOT # DOCS_TROUBLESHOOT()
# ============================================================
# Monitoring und Audit
# ============================================================
monitoring:
# Prometheus-Metriken
enable_metrics: true
metrics_prefix: "themis_docs_"
# Audit-Logging (WICHTIG fΓΌr Compliance)
enable_audit_log: true
audit_log_path: "/var/log/themisdb/docs_assistant_audit.log"
# Was wird geloggt
log_queries: false # WARNUNG: Kann sensible Daten enthalten
log_failed_queries: true
log_access_denied: true
log_database_access: true
# ============================================================
# Performance
# ============================================================
performance:
worker_threads: 4
search_timeout_ms: 5000
generation_timeout_ms: 30000
enable_async: true
async_queue_size: 100
# ============================================================
# TODO: Security-FolgenabschΓ€tzung
# ============================================================
# Bevor zusΓ€tzliche Datenbanken implementiert werden:
#
# 1. Risikobewertung:
# - Kann Admin bΓΆsartige Datenbanken einhΓ€ngen?
# - Sandboxing-Mechanismus erforderlich?
# - Validierung der Datenbank-Inhalte?
#
# 2. Authentifizierung:
# - Digitale Signaturen fΓΌr Datenbanken
# - Checksummen-Validierung
# - Whitelisting von Datenbankquellen
#
# 3. Zugriffskontrolle:
# - Welche Rollen dΓΌrfen Datenbanken hinzufΓΌgen?
# - Separate Berechtigungen pro Datenbank
# - Isolation zwischen Datenbanken
#
# 4. Audit und Compliance:
# - VollstΓ€ndiger Audit-Trail
# - Wer hat wann welche Datenbank hinzugefΓΌgt?
# - Welche Abfragen wurden auf welcher Datenbank ausgefΓΌhrt?
#
# 5. Rate-Limiting:
# - Pro Datenbank getrennte Limits?
# - Globale Limits ΓΌber alle Datenbanken?
#
# 6. Datenbank-Validierung:
# - Schema-Validierung
# - Content-Filtering (keine Malware, Scripts, etc.)
# - Maximale GrΓΆΓenbeschrΓ€nkungen
#
# Siehe: docs/en/security/DOCS_ASSISTANT_SECURITY_ASSESSMENT.mdUmgebungsvariablen-Γberschreibung:
# Alle YAML-Optionen kΓΆnnen via Env-Vars ΓΌberschrieben werden
export THEMIS_DOCS_ENABLED=true
export THEMIS_DOCS_DATABASE_PATH="/var/lib/themisdb/docs.db"
export THEMIS_DOCS_DATABASE_TYPE="rocksdb"
export THEMIS_DOCS_AUTO_DISCOVER=false
export THEMIS_DOCS_READ_ONLY=true
export THEMIS_DOCS_REQUIRE_AUTH=true
export THEMIS_DOCS_ENABLE_AUDIT_LOG=true
export THEMIS_DOCS_AUDIT_LOG_PATH="/var/log/themisdb/audit.log"
./themis_serverDeployment-Szenarien:
Szenario 1: Entwicklung (lokale Maschine)
docs_assistant:
enabled: true
database:
path: "data/docs.db"
auto_discover: true # OK fΓΌr Entwicklung
access:
require_auth: false # Nur fΓΌr lokale Entwicklung!Szenario 2: Staging (Test-Umgebung)
docs_assistant:
enabled: true
database:
path: "/opt/themisdb/docs.db"
auto_discover: false
read_only: true
access:
require_auth: true
enable_rbac: true
monitoring:
enable_audit_log: trueSzenario 3: Produktion (empfohlen)
docs_assistant:
enabled: true
database:
path: "/var/lib/themisdb/docs.db"
type: "rocksdb"
auto_discover: false # KRITISCH!
read_only: true # KRITISCH!
validate_on_load: true
access:
require_auth: true
enable_rbac: true
monitoring:
enable_audit_log: true
audit_log_path: "/var/log/themisdb/docs_assistant_audit.log"
log_access_denied: true
log_database_access: true# config/rbac_docs_assistant.yaml
roles:
administrator:
permissions:
- docs:query:*
- docs:search:*
- docs:config:*
- docs:troubleshoot:*
- docs:stats:*
rate_limit:
requests_per_minute: 100
max_context_docs: 10
superuser:
permissions:
- docs:query:*
- docs:search:*
- docs:config:read
rate_limit:
requests_per_minute: 50
max_context_docs: 7
user:
permissions:
- docs:query:basic
- docs:search:*
rate_limit:
requests_per_minute: 20
max_context_docs: 3
restrictions:
- no_system_config_docs
- no_internal_implementation_docs# Admin erstellt API Keys fΓΌr verschiedene Rollen
themis_cli --create-api-key \
--role administrator \
--name "admin-docs-key" \
--expires 90d
# Output:
# API Key created: themis_admin_abc123xyz...
# Role: administrator
# Expires: 2026-04-11
# User verwendet den API Key
curl -X POST https://themisdb.example.com:8765/api/v1/llm/docs/query \
-H "X-API-Key: themis_user_def456uvw..." \
-d '{"query": "how to filter data?"}'// Docs-Assistent loggt alle Anfragen
struct DocsAuditLog {
std::string timestamp;
std::string user_id;
std::string role;
std::string query;
std::string endpoint; // "query", "search", "config", "troubleshoot"
int documents_accessed;
float response_time_ms;
bool success;
};
// Beispiel-Log-Eintrag
{
"timestamp": "2026-01-11T09:30:45Z",
"user_id": "admin@example.com",
"role": "administrator",
"query": "How to configure RAID sharding?",
"endpoint": "config",
"documents_accessed": 5,
"response_time_ms": 1840.5,
"success": true
}| Rolle | Requests/Min | Max Context Docs | Cache-TTL | Priority |
|---|---|---|---|---|
| Administrator | 100 | 10 | 5 min | High |
| Superuser | 50 | 7 | 10 min | Medium |
| User | 20 | 3 | 15 min | Low |
| Anonymous | 5 | 1 | 30 min | Lowest |
# config/docs_assistant.yaml
rate_limiting:
enabled: true
backend: redis # oder "memory"
roles:
administrator:
requests_per_minute: 100
burst: 20
max_concurrent: 10
superuser:
requests_per_minute: 50
burst: 10
max_concurrent: 5
user:
requests_per_minute: 20
burst: 5
max_concurrent: 2
resource_limits:
max_context_docs:
administrator: 10
superuser: 7
user: 3
llm_timeout_seconds:
administrator: 30
superuser: 20
user: 10
cache_ttl_seconds:
administrator: 300
superuser: 600
user: 900β DOs:
- Nutzen Sie
DOCS_CONFIG_HELP()fΓΌr schnelle Konfigurationsreferenzen - Kombinieren Sie Docs-Assistent mit
EXPLAIN ANALYZEfΓΌr Troubleshooting - Cachen Sie hΓ€ufige Queries mit
enable_caching=true - Verwenden Sie spezifische Queries statt generische Fragen
β DON'Ts:
- Verlassen Sie sich nicht ausschlieΓlich auf den Assistenten fΓΌr kritische Entscheidungen
- Vermeiden Sie extrem lange Queries (>500 Zeichen)
- Ignorieren Sie nicht die Konfidenz-Scores (<0.5 = unsicher)
β DOs:
- Nutzen Sie
DOCS_SEARCH()fΓΌr gezielte Dokumentensuche - Kombinieren Sie mit
FOR ... IN :documentfΓΌr Custom-Analysen - Verwenden Sie Batch-Queries fΓΌr multiple Topics
β DON'Ts:
- Γberschreiten Sie nicht Ihre Rate-Limits (50 req/min)
- Vermeiden Sie redundante Queries (nutzen Sie Cache)
β DOs:
- Formulieren Sie klare, spezifische Fragen
- Nutzen Sie die CLI fΓΌr schnelle Lookups
- PrΓΌfen Sie
relevant_documentsfΓΌr zusΓ€tzliche Infos
β DON'Ts:
- Stellen Sie keine Fragen zu internen Implementierungen
- Γberschreiten Sie nicht Ihre Rate-Limits (20 req/min)
Problem:
Error: Documentation database not loaded. Please ensure docs_database.json is available.
LΓΆsung (Admin):
# 1. Generiere Dokumentations-Datenbank
python3 scripts/generate_docs_rocksdb.py --output data/docs.db
# 2. Verifiziere Datenbank
ls -lh data/docs.db
# Erwartete GrΓΆΓe: ~2-3 MB
# 3. Setze Umgebungsvariable
export THEMIS_DOCS_DATABASE_PATH=/var/lib/themisdb/data/docs.db
export THEMIS_DOCS_DATABASE_TYPE=rocksdb
# 4. Starte Server neu
systemctl restart themisdbProblem:
{
"error": "Rate limit exceeded",
"message": "You have exceeded 20 requests per minute. Please wait 45 seconds.",
"retry_after": 45
}LΓΆsung (User):
# Warte bis Rate-Limit zurΓΌckgesetzt wird
sleep 45
# Oder: Verwende Caching
curl -X POST /api/v1/llm/docs/query \
-H "X-Use-Cache: true" \
-d '{"query": "..."}'Problem:
{
"answer": "...",
"confidence_score": 0.32
}LΓΆsung:
# Verbessere Query-Formulierung
# Schlecht: "wie geht das?"
# Gut: "How do I configure RAID 6 sharding with 9 shards?"
# Nutze DOCS_SEARCH() fΓΌr manuelle Dokumentensuche
themis_cli --execute "RETURN DOCS_SEARCH('RAID sharding configuration', 10)"# Docs-Assistent Request-Rate
rate(themis_docs_requests_total[5m])
# Durchschnittliche Response-Zeit
histogram_quantile(0.95, themis_docs_response_time_seconds_bucket)
# Konfidenz-Score-Verteilung
histogram_quantile(0.5, themis_docs_confidence_score_bucket)
# Cache-Hit-Rate
rate(themis_docs_cache_hits_total[5m]) / rate(themis_docs_requests_total[5m])
# grafana/dashboards/docs_assistant.json
{
"title": "ThemisDB Docs Assistant",
"panels": [
{
"title": "Requests by Role",
"targets": [
{
"expr": "sum(rate(themis_docs_requests_total[5m])) by (role)"
}
]
},
{
"title": "Response Time (p95)",
"targets": [
{
"expr": "histogram_quantile(0.95, themis_docs_response_time_seconds_bucket)"
}
]
}
]
}# Alte JSON-basierte Datenbank
# GrΓΆΓe: 4.2 MB
# Load-Zeit: 42 ms
# Neue RocksDB-basierte Datenbank
python3 scripts/generate_docs_rocksdb.py --output data/docs.db
# GrΓΆΓe: 2.8 MB (-33%)
# Load-Zeit: 7 ms (-83%)
# Update Konfiguration
# config/themis.yaml
llm:
docs_assistant:
database_type: rocksdb # war: json
database_path: data/docs.db # war: data/docs_database.json# Nach Γnderungen an ./docs oder ./compendium
cd /path/to/ThemisDB
# Regeneriere Datenbank
python3 scripts/generate_docs_database.py
python3 scripts/generate_docs_rocksdb.py
# Restart Server (Hot-Reload nicht unterstΓΌtzt)
systemctl restart themisdb
# Verifiziere neue Dokumente
themis_cli --execute "
FOR meta IN docs_metadata
FILTER meta.key == 'generation_time'
RETURN meta.value
"Diese FAQ zeigt realistische Beispiele fΓΌr Fragen, die an den Dokumentations-Assistenten gestellt werden kΓΆnnen, und die zu erwartenden Antworten.
Frage 1: "Wie aktiviere ich Sharding in ThemisDB?"
RETURN DOCS_QUERY('Wie aktiviere ich Sharding in ThemisDB?')
Erwartete Antwort:
Um Sharding in ThemisDB zu aktivieren:
1. Konfiguration in config/themis.yaml:
sharding:
enabled: true
mode: "consistent_hash" # oder "range", "round_robin"
shards: 3
replication_factor: 2
2. Shard-Keys definieren:
CREATE COLLECTION users SHARD_KEY user_id;
3. Server neu starten:
systemctl restart themisdb
4. Verifizierung:
RETURN CURRENT_SHARDING_TOPOLOGY()
Weitere Details: Kapitel 16 (Sharding & Partitioning)
Verwandte Themen: RAID-Konfiguration, Replication, Load-Balancing
Frage 2: "Was sind die Hardware-Mindestanforderungen fΓΌr ThemisDB?"
RETURN DOCS_CONFIG_HELP('hardware requirements')
Erwartete Antwort:
ThemisDB Hardware-Anforderungen:
MINIMUM (Development):
- CPU: 2 Cores (x86_64 oder ARM64)
- RAM: 4 GB
- Disk: 20 GB SSD
- Netzwerk: 100 Mbit/s
EMPFOHLEN (Production):
- CPU: 8+ Cores, AVX2-Support
- RAM: 32 GB+
- Disk: 500 GB NVMe SSD (RAID 10)
- Netzwerk: 1 Gbit/s+
ENTERPRISE (High-Performance):
- CPU: 32+ Cores, AVX-512
- RAM: 128 GB+
- Disk: 2 TB+ NVMe SSD (RAID 10)
- Netzwerk: 10 Gbit/s+
- GPU: NVIDIA A100 (optional fΓΌr ML)
Quelle: Kapitel 4 (Installation), Kapitel 25 (DevOps & Infrastructure)
Frage 3: "Wie konfiguriere ich SSL/TLS fΓΌr sichere Verbindungen?"
RETURN DOCS_CONFIG_HELP('SSL/TLS configuration')
Erwartete Antwort:
SSL/TLS-Konfiguration fΓΌr ThemisDB:
1. Zertifikate generieren:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
2. config/themis.yaml anpassen:
server:
ssl:
enabled: true
cert_file: "/path/to/cert.pem"
key_file: "/path/to/key.pem"
ca_file: "/path/to/ca.pem" # optional
min_tls_version: "1.2"
ciphers: "HIGH:!aNULL:!MD5"
3. Client-Konfiguration:
themis_cli --ssl --ssl-cert /path/to/cert.pem
4. Verifizierung:
curl https://localhost:8765/health --cacert ca.pem
Weitere Details: Kapitel 21 (Authentifizierung & Autorisierung)
Verwandte Themen: mTLS, Certificate Rotation, LDAP-Integration
Frage 4: "Server startet nicht - 'Port already in use' Fehler"
RETURN DOCS_TROUBLESHOOT('Server startet nicht - Port already in use')
Erwartete Antwort:
LΓΆsung fΓΌr 'Port already in use' Fehler:
DIAGNOSE:
1. PrΓΌfen, welcher Prozess Port 8765 nutzt:
sudo lsof -i :8765
# oder
sudo netstat -tulpn | grep 8765
LΓSUNGEN:
A) Prozess beenden:
sudo kill -9 <PID>
B) Anderen Port konfigurieren (config/themis.yaml):
server:
port: 8766 # Alternativer Port
C) Zombie-Prozesse bereinigen:
pkill -9 themisdb
systemctl reset-failed themisdb
PRΓVENTION:
- Graceful Shutdown verwenden: systemctl stop themisdb
- Startup-Script mit Port-Check ergΓ€nzen
- Monitoring fΓΌr Port-Konflikte einrichten
Verwandte Dokumente: Kapitel 27 (Troubleshooting), Appendix I
Frage 5: "Warum sind meine Queries so langsam?"
RETURN DOCS_TROUBLESHOOT('Queries sind langsam - Performance-Probleme')
Erwartete Antwort:
Performance-Optimierung fΓΌr langsame Queries:
DIAGNOSE:
1. Query-Profiling aktivieren:
EXPLAIN <your_query>
2. Metriken prΓΌfen:
curl http://localhost:8765/metrics | grep query_duration
HΓUFIGE URSACHEN & LΓSUNGEN:
A) Fehlende Indizes:
- Problem: Full-Table-Scans
- LΓΆsung: CREATE INDEX idx_name ON collection(field)
B) Suboptimale Query-Struktur:
- Problem: Nested loops ohne LIMIT
- LΓΆsung: LIMIT hinzufΓΌgen, Filter optimieren
C) GroΓe Datenmengen ohne Paging:
- Problem: Millionen Rows im Result-Set
- LΓΆsung: LIMIT + OFFSET verwenden (Batch-Processing)
D) Unzureichende Hardware:
- Problem: RAM < Arbeitsspeicherbedarf
- LΓΆsung: RAM erhΓΆhen, Caching aktivieren
E) Fragmentierung:
- Problem: Viele Updates/Deletes
- LΓΆsung: COMPACT_COLLECTION()
QUICK-WINS:
- Indizes auf Filter-Feldern: +80% schneller
- LIMIT 1000 statt unbegrenzt: +95% schneller
- Parallele Queries aktivieren: +60% schneller
Details: Kapitel 34 (Query Optimization), Kapitel 39 (Performance Tuning)
Frage 6: "Out of Memory - Server crashed"
RETURN DOCS_TROUBLESHOOT('Out of Memory Error - Server crashed')
Erwartete Antwort:
LΓΆsung fΓΌr Out-of-Memory (OOM) Fehler:
SOFORTMASSNAHMEN:
1. Server neustarten:
systemctl restart themisdb
2. Memory-Limit erhΓΆhen (config/themis.yaml):
system:
max_memory: "16GB" # erhΓΆhen von z.B. 8GB
max_query_memory: "2GB"
LANGFRISTIGE LΓSUNGEN:
A) Memory-Profiling:
- Aktivieren: monitoring.memory_profiling = true
- Analyse: curl http://localhost:8765/debug/memory
B) Query-Optimierungen:
- GroΓe Result-Sets vermeiden (LIMIT verwenden)
- Streaming fΓΌr groΓe Datenmengen aktivieren
- Materialized Views fΓΌr hΓ€ufige Aggregationen
C) Cache-Konfiguration anpassen:
cache:
query_cache_size: "4GB" # reduzieren wenn nΓΆtig
block_cache_size: "8GB"
D) Hardware-Upgrade:
- RAM verdoppeln (z.B. 32GB β 64GB)
- Swap-Space aktivieren (nur als Fallback)
MONITORING:
- Grafana Dashboard: Memory Usage Alert bei >85%
- Log-Γberwachung: grep "out of memory" /var/log/themisdb/*
Details: Kapitel 19 (Monitoring), Kapitel 27 (Troubleshooting)
Frage 7: "Wie modelliere ich Many-to-Many Beziehungen?"
RETURN DOCS_QUERY('Wie modelliere ich Many-to-Many Beziehungen in ThemisDB?')
Erwartete Antwort:
Many-to-Many Beziehungen in ThemisDB modellieren:
METHODE 1: Edge-Collection (Graph-Modell - empfohlen)
1. Collections erstellen:
CREATE COLLECTION users;
CREATE COLLECTION projects;
CREATE EDGE COLLECTION user_projects;
2. Daten einfΓΌgen:
INSERT {_key: "u1", name: "Alice"} INTO users;
INSERT {_key: "p1", name: "Project A"} INTO projects;
INSERT {_from: "users/u1", _to: "projects/p1", role: "lead"}
INTO user_projects;
3. Abfragen:
FOR u IN users
FOR proj IN OUTBOUND u user_projects
RETURN {user: u.name, project: proj.name}
METHODE 2: Junction-Table (Relational-Modell)
1. Collections:
CREATE COLLECTION users;
CREATE COLLECTION projects;
CREATE COLLECTION user_project_junction;
2. Daten:
INSERT {user_id: "u1", project_id: "p1", role: "lead"}
INTO user_project_junction;
3. Abfragen mit JOIN:
FOR uj IN user_project_junction
LET u = DOCUMENT(CONCAT("users/", uj.user_id))
LET p = DOCUMENT(CONCAT("projects/", uj.project_id))
RETURN {user: u.name, project: p.name, role: uj.role}
BEST PRACTICE: Graph-Modell fΓΌr:
- HΓ€ufige Traversierungen
- Komplexe Beziehungen (>2 EntitΓ€ten)
- Pfad-Abfragen (SHORTEST_PATH)
Details: Kapitel 6 (Graph-Modell), Kapitel 35 (Data Modeling Patterns)
Frage 8: "Wie verwende ich Vector-Embeddings fΓΌr Γhnlichkeitssuche?"
RETURN DOCS_QUERY('Wie verwende ich Vector-Embeddings fΓΌr Γhnlichkeitssuche?')
Erwartete Antwort:
Vector-Embeddings fΓΌr Γhnlichkeitssuche in ThemisDB:
SETUP:
1. Collection mit Vector-Index:
CREATE COLLECTION documents;
CREATE VECTOR INDEX vec_idx ON documents(embedding)
DIMENSION 768 METRIC cosine;
2. Embeddings generieren (z.B. mit Sentence-Transformers):
import sentence_transformers
model = sentence_transformers.SentenceTransformer('all-MiniLM-L6-v2')
embedding = model.encode("Your text here").tolist()
3. Dokument mit Embedding einfΓΌgen:
INSERT {
text: "ThemisDB is a multi-model database",
embedding: [0.12, -0.45, 0.78, ...] // 768 Dimensionen
} INTO documents;
QUERIES:
A) K-Nearest-Neighbors (KNN):
LET query_vec = [0.15, -0.42, 0.81, ...]
FOR doc IN documents
SORT COSINE_SIMILARITY(doc.embedding, query_vec) DESC
LIMIT 10
RETURN {text: doc.text, score: COSINE_SIMILARITY(doc.embedding, query_vec)}
B) Similarity-Threshold:
FOR doc IN documents
LET sim = COSINE_SIMILARITY(doc.embedding, @query_embedding)
FILTER sim > 0.85
RETURN {text: doc.text, similarity: sim}
C) Hybrid-Search (Text + Vector):
FOR doc IN FULLTEXT(documents, "database", 0.8)
LET vec_sim = COSINE_SIMILARITY(doc.embedding, @vec)
LET combined_score = 0.7 * doc.score + 0.3 * vec_sim
SORT combined_score DESC
LIMIT 10
RETURN doc
METRIKEN:
- cosine: FΓΌr normalisierte Vektoren (Standard)
- euclidean: FΓΌr nicht-normalisierte Vektoren
- dot_product: FΓΌr Performance-kritische Anwendungen
Details: Kapitel 8 (Vector-Modell), Kapitel 16 (ML-Integration)
Frage 9: "Wie implementiere ich Row-Level-Security?"
RETURN DOCS_CONFIG_HELP('Row-Level Security implementation')
Erwartete Antwort:
Row-Level-Security (RLS) in ThemisDB implementieren:
METHODE 1: AQL-basierte Policy (empfohlen)
1. Security-Funktion definieren:
CREATE FUNCTION can_access_row(doc, user)
RETURN (
doc.owner_id == user.id OR
user.role == "admin" OR
doc.public == true
);
2. In Queries verwenden:
FOR doc IN documents
FILTER can_access_row(doc, CURRENT_USER())
RETURN doc
3. View mit Policy:
CREATE VIEW secure_documents AS
FOR doc IN documents
FILTER can_access_row(doc, CURRENT_USER())
RETURN doc
METHODE 2: Collection-Level-Policies
1. Policy erstellen (config/policies.yaml):
policies:
documents:
read:
condition: "doc.owner_id == @user_id OR doc.public == true"
write:
condition: "doc.owner_id == @user_id OR @user_role == 'admin'"
2. Policy aktivieren:
ALTER COLLECTION documents SET POLICY read_policy;
3. Automatische Enforcement:
FOR doc IN documents // Policy automatisch angewendet
RETURN doc
METHODE 3: Tenant-Isolation (Multi-Tenancy)
1. Tenant-ID in jedem Dokument:
INSERT {tenant_id: "tenant_a", data: {...}} INTO documents;
2. Middleware mit Tenant-Filter:
app.use((req, res, next) => {
req.aql_filter = `doc.tenant_id == "${req.user.tenant_id}"`;
});
AUDIT-LOGGING:
monitoring:
audit_log:
enabled: true
log_access_violations: true
Details: Kapitel 21 (Auth), Kapitel 36 (Security Hardening)
Frage 10: "Wie erfΓΌlle ich GDPR-Anforderungen (Recht auf Vergessen)?"
RETURN DOCS_QUERY('Wie erfΓΌlle ich GDPR-Anforderungen in ThemisDB?')
Erwartete Antwort:
GDPR-Compliance in ThemisDB (Recht auf Vergessen):
1. DATEN-LΓSCHUNG (Right to be Forgotten):
A) VollstΓ€ndige LΓΆschung:
// Alle Daten eines Users lΓΆschen
FOR doc IN users
FILTER doc.email == @user_email
REMOVE doc IN users;
// Related Collections durchsuchen
FOR collection IN ["orders", "preferences", "logs"]
FOR doc IN collection
FILTER doc.user_id == @user_id
REMOVE doc IN collection;
B) Anonymisierung (Alternative):
UPDATE {_key: @user_key} WITH {
email: "anonymized@deleted.user",
name: "[DELETED]",
phone: null,
address: null,
gdpr_deleted_at: DATE_NOW()
} IN users;
2. AUDIT-TRAIL fΓΌr GDPR-Requests:
CREATE COLLECTION gdpr_requests;
INSERT {
user_id: @user_id,
request_type: "deletion", // oder "export", "correction"
timestamp: DATE_NOW(),
processed_by: CURRENT_USER(),
status: "completed"
} INTO gdpr_requests;
3. DATEN-EXPORT (Right to Data Portability):
// JSON-Export aller User-Daten
LET user_data = DOCUMENT("users/@user_key")
LET orders = (FOR o IN orders FILTER o.user_id == @user_id RETURN o)
LET preferences = DOCUMENT("preferences/@user_key")
RETURN {
user: user_data,
orders: orders,
preferences: preferences,
export_date: DATE_NOW()
}
4. DATEN-RETENTION-POLICY:
// Automatische LΓΆschung alter Daten
FOR doc IN logs
FILTER doc.created_at < DATE_SUBTRACT(DATE_NOW(), 90, "days")
REMOVE doc IN logs;
5. VERSCHLΓSSELUNG:
config/themis.yaml:
encryption:
at_rest: true
algorithm: "AES-256-GCM"
key_rotation: "monthly"
COMPLIANCE-CHECKLIST:
β
Recht auf LΓΆschung implementiert
β
Recht auf Export implementiert
β
Audit-Trail fΓΌr alle Requests
β
VerschlΓΌsselung (at-rest + in-transit)
β
Zugriffskontrollen (RBAC)
β
Daten-Minimierung (nur notwendige Daten)
β
Anonymisierung von Logs
Details: Kapitel 40 (Data Governance & Compliance)
Frage 11: "Wie integriere ich ThemisDB mit Kubernetes?"
RETURN DOCS_QUERY('Wie deploye ich ThemisDB in Kubernetes?')
Erwartete Antwort:
ThemisDB Kubernetes Deployment:
1. STATEFULSET fΓΌr ThemisDB (Persistence):
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: themisdb
spec:
serviceName: themisdb
replicas: 3
selector:
matchLabels:
app: themisdb
template:
metadata:
labels:
app: themisdb
spec:
containers:
- name: themisdb
image: themisdb/themisdb:v1.4.0
ports:
- containerPort: 8765
volumeMounts:
- name: data
mountPath: /var/lib/themisdb
env:
- name: THEMIS_CLUSTER_MODE
value: "true"
- name: THEMIS_RAFT_PEERS
value: "themisdb-0.themisdb:7687,themisdb-1.themisdb:7687"
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 100Gi
storageClassName: fast-ssd
2. SERVICE (ClusterIP):
apiVersion: v1
kind: Service
metadata:
name: themisdb
spec:
selector:
app: themisdb
ports:
- protocol: TCP
port: 8765
targetPort: 8765
type: ClusterIP
3. CONFIGMAP:
apiVersion: v1
kind: ConfigMap
metadata:
name: themisdb-config
data:
themis.yaml: |
server:
port: 8765
threads: 8
storage:
path: /var/lib/themisdb
cluster:
enabled: true
4. HELM-CHART (Empfohlen):
helm repo add themisdb https://charts.themisdb.io
helm install my-themisdb themisdb/themisdb \
--set replicaCount=3 \
--set persistence.size=100Gi \
--set resources.limits.memory=32Gi
MONITORING:
- Prometheus Operator: ServiceMonitor fΓΌr Metriken
- Grafana: Dashboard fΓΌr Cluster-Health
- Alertmanager: Alerts fΓΌr Node-Failures
Details: Kapitel 25 (DevOps), Kapitel 30 (Deployment & Operations)
Frage 12: "Wie richte ich Backups mit Point-in-Time-Recovery ein?"
RETURN DOCS_CONFIG_HELP('backup and point-in-time recovery')
Erwartete Antwort:
Backup & Point-in-Time-Recovery (PITR) in ThemisDB:
1. AUTOMATISCHE BACKUPS konfigurieren:
config/themis.yaml:
backup:
enabled: true
schedule: "0 2 * * *" # TΓ€glich um 2:00 Uhr
retention_days: 30
destination: "s3://my-bucket/themisdb-backups"
compression: "zstd"
encryption: true
2. MANUELLES BACKUP:
# Full Backup
themis_admin backup create \
--type full \
--output /backup/themisdb-full-$(date +%Y%m%d).tar.zst
# Incremental Backup
themis_admin backup create \
--type incremental \
--base-backup /backup/themisdb-full-20260101.tar.zst \
--output /backup/themisdb-incr-$(date +%Y%m%d).tar.zst
3. WRITE-AHEAD-LOG (WAL) fΓΌr PITR:
config/themis.yaml:
wal:
enabled: true
retention_hours: 72 # 3 Tage
archive_dir: "/var/lib/themisdb/wal_archive"
4. POINT-IN-TIME-RESTORE:
# Restore zu spezifischem Zeitpunkt
themis_admin restore \
--backup /backup/themisdb-full-20260101.tar.zst \
--wal-archive /var/lib/themisdb/wal_archive \
--point-in-time "2026-01-10 14:30:00" \
--target-dir /var/lib/themisdb/restore
5. RESTORE-PROZESS:
# 1. Server stoppen
systemctl stop themisdb
# 2. Daten sichern (Sicherheitskopie)
mv /var/lib/themisdb/data /var/lib/themisdb/data.old
# 3. Restore durchfΓΌhren
themis_admin restore --backup /backup/latest.tar.zst
# 4. Server starten
systemctl start themisdb
# 5. Verifizieren
themis_cli --execute "RETURN COUNT(FOR doc IN users RETURN 1)"
6. S3-BACKUP (Cloud):
# AWS S3 konfigurieren
export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
themis_admin backup create \
--destination s3://my-bucket/backups/ \
--encryption AES256
BACKUP-STRATEGIE:
- Full: TΓ€glich (2:00 Uhr)
- Incremental: StΓΌndlich (wΓ€hrend GeschΓ€ftszeiten)
- WAL-Archive: Kontinuierlich
- Retention: 30 Tage Full, 7 Tage Incremental
- Off-Site: S3 + Glacier (90 Tage)
Details: Kapitel 20 (Backup & Recovery)
Frage 13: "Wie verwende ich die Zeitreihen-Funktionen?"
RETURN DOCS_QUERY('Wie verwende ich Zeitreihen-Features in ThemisDB?')
Erwartete Antwort:
Zeitreihen-Features in ThemisDB:
1. TIMESERIES-COLLECTION erstellen:
CREATE TIMESERIES COLLECTION sensor_data
TIME_FIELD timestamp
GRANULARITY hour
RETENTION 90 # Tage
2. DATEN EINFΓGEN:
INSERT {
timestamp: DATE_NOW(),
sensor_id: "temp_001",
temperature: 23.5,
humidity: 65.2,
location: "room_a"
} INTO sensor_data;
3. ZEITREIHEN-QUERIES:
A) Aggregation ΓΌber Zeitfenster:
FOR data IN sensor_data
FILTER data.timestamp >= DATE_SUBTRACT(DATE_NOW(), 24, "hours")
COLLECT time_bucket = DATE_TRUNC(data.timestamp, "hour")
AGGREGATE avg_temp = AVG(data.temperature),
max_temp = MAX(data.temperature),
min_temp = MIN(data.temperature)
RETURN {
hour: time_bucket,
avg: avg_temp,
max: max_temp,
min: min_temp
}
B) Downsampling (Daten-Verdichtung):
FOR data IN sensor_data
FILTER data.timestamp < DATE_SUBTRACT(DATE_NOW(), 30, "days")
COLLECT bucket = DATE_TRUNC(data.timestamp, "day"),
sensor = data.sensor_id
AGGREGATE avg_temp = AVG(data.temperature)
INSERT {
timestamp: bucket,
sensor_id: sensor,
temperature_avg: avg_temp,
aggregated: true
} INTO sensor_data_daily;
C) Gap-Filling (fehlende Daten interpolieren):
LET time_range = DATE_RANGE(
DATE_SUBTRACT(DATE_NOW(), 7, "days"),
DATE_NOW(),
"PT1H" # 1-Stunden-Intervalle
)
FOR t IN time_range
LET data = FIRST(
FOR d IN sensor_data
FILTER d.timestamp >= DATE_SUBTRACT(t, 30, "minutes")
FILTER d.timestamp <= DATE_ADD(t, 30, "minutes")
LIMIT 1
RETURN d.temperature
)
RETURN {
timestamp: t,
temperature: data != null ? data : INTERPOLATE(...)
}
4. AUTOMATISCHE ROLLUPS:
config/themis.yaml:
timeseries:
rollups:
- name: "hourly_stats"
source: "sensor_data"
target: "sensor_data_hourly"
interval: "1 hour"
aggregations:
- field: "temperature"
functions: ["avg", "min", "max", "stddev"]
5. RETENTION-POLICIES:
ALTER TIMESERIES COLLECTION sensor_data
SET RETENTION 90 DAYS
SET DOWNSAMPLING_POLICY (
AFTER 30 DAYS AGGREGATE BY 1 HOUR,
AFTER 90 DAYS AGGREGATE BY 1 DAY
);
PERFORMANCE-TIPPS:
- Partitionierung nach Zeit fΓΌr schnellere Queries
- Indizes auf sensor_id + timestamp
- Bulk-Inserts verwenden (1000+ pro Request)
- Materialized Views fΓΌr hΓ€ufige Aggregationen
Details: Kapitel 9 (Timeseries-Modell)
Frage 14: "Wie aktiviere ich GPU-Beschleunigung fΓΌr ML-Workloads?"
RETURN DOCS_CONFIG_HELP('GPU acceleration for ML')
Erwartete Antwort:
GPU-Beschleunigung fΓΌr ML-Workloads in ThemisDB:
1. VORAUSSETZUNGEN:
Hardware:
- NVIDIA GPU (CUDA 11.8+): Tesla V100, A100, H100
- Mindestens 16 GB VRAM
- PCIe 4.0 x16
Software:
- NVIDIA Driver 525.x+
- CUDA Toolkit 11.8+
- cuDNN 8.9+
- TensorRT (optional, fΓΌr Inferenz)
2. THEMISDB GPU-SUPPORT AKTIVIEREN:
config/themis.yaml:
ml:
gpu:
enabled: true
device_id: 0 # GPU 0 verwenden
memory_fraction: 0.8 # 80% VRAM fΓΌr ThemisDB
allow_growth: true # Dynamische VRAM-Allokation
3. GPU-BESCHLEUNIGTE OPERATIONEN:
A) Vector-Similarity-Search (GPU):
CREATE VECTOR INDEX vec_idx ON documents(embedding)
DIMENSION 768
METRIC cosine
ACCELERATOR gpu; # GPU-Beschleunigung
// Query wird automatisch auf GPU ausgefΓΌhrt
FOR doc IN documents
SORT COSINE_SIMILARITY(doc.embedding, @query_vec) DESC
LIMIT 100
RETURN doc;
B) ML-Inferenz (GPU):
// Model laden
REGISTER ML_MODEL my_classifier
FROM "/models/bert_classifier.onnx"
ACCELERATOR gpu
BATCH_SIZE 32;
// Batch-Inferenz
FOR doc IN documents
LIMIT 10000
LET prediction = ML_PREDICT("my_classifier", doc.text)
UPDATE doc WITH {category: prediction.label} IN documents;
C) Matrix-Operationen (GPU):
LET matrix_a = [...]; // 1000x1000 Matrix
LET matrix_b = [...];
RETURN MATMUL(matrix_a, matrix_b, {device: "gpu"});
4. MULTI-GPU-SETUP (Cluster):
config/themis.yaml:
ml:
gpu:
enabled: true
devices: [0, 1, 2, 3] # 4 GPUs
distribution: "data_parallel" # oder "model_parallel"
5. MONITORING:
# GPU-Auslastung
curl http://localhost:8765/metrics/gpu
# Output:
# themisdb_gpu_utilization{device="0"} 85.2
# themisdb_gpu_memory_used{device="0"} 13.5GB
# themisdb_gpu_temperature{device="0"} 72C
6. PERFORMANCE-BENCHMARKS:
Operation | CPU | GPU (A100) | Speedup
----------------------- | -------- | ---------- | -------
Vector Search (100k) | 450ms | 12ms | 37.5x
Matrix Multiply (1kx1k) | 850ms | 8ms | 106x
ML Inference (BERT) | 120ms | 9ms | 13.3x
Embedding Generation | 2.5s | 45ms | 55x
TROUBLESHOOTING:
- CUDA out of memory: memory_fraction reduzieren
- Langsame Inferenz: batch_size erhΓΆhen
- GPU nicht erkannt: nvidia-smi prΓΌfen
Details: Kapitel 16 (ML-Integration), Kapitel 39 (Performance Tuning)
Frage 15: "Was sind die wichtigsten Performance-Best-Practices?"
RETURN DOCS_QUERY('Performance Best Practices fΓΌr ThemisDB')
Erwartete Antwort:
Top 10 Performance-Best-Practices fΓΌr ThemisDB:
1. INDIZIERUNG:
β
DO: Indizes auf Filter- und Sort-Felder
CREATE INDEX idx_user_email ON users(email);
β DON'T: Zu viele Indizes (max 5-7 pro Collection)
2. QUERY-OPTIMIERUNG:
β
DO: Filter VOR Joins/Subqueries
FOR u IN users
FILTER u.active == true // Filter zuerst!
FOR o IN orders
FILTER o.user_id == u._key
RETURN o
β DON'T: Subqueries in Projektion
FOR u IN users
RETURN {
user: u,
orders: (FOR o IN orders FILTER o.user_id == u._key RETURN o) // LANGSAM!
}
3. LIMIT & PAGING:
β
DO: Immer LIMIT verwenden
FOR doc IN collection
FILTER doc.type == "active"
LIMIT 100
RETURN doc
β DON'T: Unbegrenzte Result-Sets
FOR doc IN collection RETURN doc // Millionen Rows!
4. BULK-OPERATIONEN:
β
DO: Batch-Inserts (1000+ pro Request)
INSERT [
{name: "Alice"},
{name: "Bob"},
... // 1000 Dokumente
] INTO users OPTIONS {overwriteMode: "ignore"};
β DON'T: Einzelne Inserts in Schleife
FOR i IN 1..10000
INSERT {_key: i} INTO collection // SEHR LANGSAM!
5. CACHING:
β
DO: Query-Cache fΓΌr hΓ€ufige Queries
FOR doc IN documents
FILTER doc.category == @category
OPTIONS {cache: true}
RETURN doc
config/themis.yaml:
cache:
query_cache_size: "4GB"
6. PROJECTION:
β
DO: Nur benΓΆtigte Felder zurΓΌckgeben
FOR doc IN documents
RETURN {id: doc._key, title: doc.title}
β DON'T: VollstΓ€ndige Dokumente bei groΓen Feldern
FOR doc IN documents
RETURN doc // inkl. 10MB BinΓ€rdaten!
7. PARTITIONIERUNG:
β
DO: Sharding nach Access-Pattern
CREATE COLLECTION orders SHARD_KEY date; // Zeit-basiert
β DON'T: Random Sharding bei Zeitreihen
8. AGGREGATIONEN:
β
DO: Materialized Views fΓΌr hΓ€ufige Aggregationen
CREATE VIEW user_stats AS
FOR u IN users
COLLECT WITH COUNT INTO total
RETURN total
β DON'T: COUNT(*) auf groΓen Collections
9. TRANSACTIONS:
β
DO: Kurze Transaktionen (<100ms)
BEGIN TRANSACTION
INSERT ... INTO users
UPDATE ... IN orders
COMMIT
β DON'T: Long-Running-Transactions (>10s)
10. MONITORING:
β
DO: Slow-Query-Log aktivieren
monitoring:
slow_query_threshold: 100ms # Log queries >100ms
β
DO: EXPLAIN verwenden
EXPLAIN FOR doc IN documents FILTER doc.field == @val RETURN doc
QUICK-WINS:
- Indizes hinzufΓΌgen: +80% schneller
- LIMIT verwenden: +95% schneller
- Bulk-Operationen: +90% schneller
- Query-Cache: +99% schneller (bei Cache-Hit)
Details: Kapitel 34 (Query Optimization), Kapitel 39 (Performance Tuning)
Meta-Frage: "Wie verwende ich den Dokumentations-Assistenten effektiv?"
RETURN DOCS_QUERY('Tipps fΓΌr effektive Nutzung des Dokumentations-Assistenten')
Erwartete Antwort:
Effektive Nutzung des ThemisDB Dokumentations-Assistenten:
1. FRAGESTELLUNG:
β
GUTE FRAGEN (spezifisch, kontextreich):
- "Wie konfiguriere ich SSL/TLS mit selbst-signierten Zertifikaten?"
- "Warum sind meine Vector-Similarity-Queries langsam bei 1M Dokumenten?"
- "Wie implementiere ich Multi-Tenancy mit Row-Level-Security?"
β SCHLECHTE FRAGEN (zu allgemein):
- "Hilfe"
- "Performance"
- "Wie funktioniert Datenbank?"
2. KONTEXT ANGEBEN:
β
MIT Kontext:
"Ich habe 10M Dokumente in einer Collection und meine Aggregations-Query
dauert 30 Sekunden. Wie kann ich das optimieren?"
β OHNE Kontext:
"Query ist langsam"
3. AQL-FUNKTIONEN NUTZEN:
// Allgemeine Fragen
RETURN DOCS_QUERY('Deine Frage hier')
// Suche mit Relevanz-Ranking
RETURN DOCS_SEARCH('sharding performance', 10)
// Konfigurationshilfe
RETURN DOCS_CONFIG_HELP('backup')
// Troubleshooting
RETURN DOCS_TROUBLESHOOT('Server startet nicht - Port 8765 already in use')
4. FOLLOW-UP-FRAGEN:
β
DO: Aufbauende Fragen stellen
1. "Wie aktiviere ich Sharding?"
2. "Welche Shard-Keys sind fΓΌr Zeitreihen optimal?"
3. "Wie migriere ich bestehende Daten zu geshardeten Collections?"
5. FEHLERME LDUNGEN EINFΓGEN:
β
DO: VollstΓ€ndige Fehlermeldung kopieren
RETURN DOCS_TROUBLESHOOT('
ERROR: Out of memory
Process: themisdb (PID 12345)
Memory: 15.8 GB / 16 GB
Stack trace: ...
')
6. ERWEITERTE SUCHE:
// Nach Kapiteln filtern
FOR doc IN :document
FILTER doc.type == 'documentation'
FILTER CONTAINS(doc.source, 'chapter_16') // ML-Integration
FILTER CONTAINS(doc.content, @search_term)
RETURN doc
// Multi-Model-Zugriff
FOR node IN docs_graph_nodes
FOR edge IN OUTBOUND node docs_graph_edges
FILTER edge.type == 'related'
RETURN edge._to
7. RATE-LIMITS BEACHTEN:
Rolle | Limit (req/min) | Context Docs
---------- | --------------- | ------------
Admin | 100 | 10
Superuser | 50 | 7
User | 20 | 3
8. BEST PRACTICES:
β
DO:
- Spezifische, klar formulierte Fragen
- Fehler mit vollstΓ€ndigem Kontext beschreiben
- AQL-Funktionen fΓΌr verschiedene Zwecke nutzen
- Verwandte Kapitel und Dokumente durchlesen
β DON'T:
- Mehrere unzusammenhΓ€ngende Fragen auf einmal
- Erwartung, dass LLM Code schreibt (nur Anleitung!)
- Rate-Limits ignorieren
- Sicherheitskritische Daten in Queries einfΓΌgen
9. OFFLINE-ZUGRIFF:
// Dokumentation auch ohne LLM durchsuchbar
FOR doc IN :document
FILTER doc.type == 'documentation'
FILTER FULLTEXT(doc, @query)
SORT BM25(doc) DESC
LIMIT 10
RETURN {
title: doc.title,
source: doc.source,
snippet: SUBSTRING(doc.content, 0, 200)
}
RESSOURCEN:
- Kapitel 42: Diese Anleitung
- docs/en/features/DOCS_ASSISTANT.md: Technische Details
- TODO_DOCS_DATABASE_BUILD.md: Roadmap und Features
Feedback & Verbesserungen: github.com/makr-code/ThemisDB/issues
| Feature | Admin | Superuser | User |
|---|---|---|---|
| REST API Query | β | β | β |
| REST API Config | β | π‘ Read-Only | β |
| REST API Troubleshoot | β | β | π‘ Basic |
| AQL Functions | β | β | π‘ Limited |
| CLI Access | β | β | β |
| C++ SDK | β | β | β |
| Max Context Docs | 10 | 7 | 3 |
| Rate Limit (req/min) | 100 | 50 | 20 |
| Cache TTL | 5 min | 10 min | 15 min |
| System Config Docs | β | β | β |
| Internal Impl Docs | β | β | β |
# Docs-Datenbank generieren
python3 scripts/generate_docs_rocksdb.py
# Query via CLI (AQL)
themis_cli --execute "RETURN DOCS_QUERY('your question here')"
# Query via REST API
curl -X POST /api/v1/llm/docs/query -H "Authorization: Bearer TOKEN" -d '{"query": "..."}'
# Search via AQL
RETURN DOCS_SEARCH('search term', 10)
# Config Help
RETURN DOCS_CONFIG_HELP('topic')
# Troubleshoot
RETURN DOCS_TROUBLESHOOT('error description')- Administratoren: Integrieren Sie den Docs-Assistent in Ihr Monitoring
- Superuser: Nutzen Sie AQL-Funktionen fΓΌr Custom-Workflows
- User: Erkunden Sie die interaktive CLI
Weitere Ressourcen:
- Kapitel 33: Best Practices
- Kapitel 38: Observability & SRE
- Kapitel 41: Hands-on Labs
docs/en/features/DOCS_ASSISTANT.mddocs/en/features/DOCS_ROCKSDB_DATABASE.mdTODO_DOCS_DATABASE_BUILD.md
Ende Kapitel 42
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