-
Notifications
You must be signed in to change notification settings - Fork 1
architecture_multi_model
makr-code edited this page Dec 21, 2025
·
1 revision
Stand: 5. Dezember 2025
Version: 1.0.0
Kategorie: Architecture
ThemisDB verwendet einen vollstΓ€ndig integrierten Ansatz fΓΌr Multi-Model-Abfragen. Anstatt separate Sprachelemente fΓΌr Graph, Vektor, Geo und Prozesse einzufΓΌhren, werden alle Datentypen als Collections behandelt und ΓΌber den bestehenden AQL-Wortschatz abgefragt.
Alle Datentypen werden als Collections modelliert:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ThemisDB Collection β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Dokument (Relational) β Felder, Indizes, Constraints β
β Graph (Knoten/Kanten) β _from, _to, _type, Adjazenzlisten β
β Vektor (Embeddings) β _embedding, Dimensionen, Index β
β Geo (Geometrie) β _geometry, SRID, Spatial-Index β
β Temporal (Zeit) β _valid_from, _valid_to β
β Prozess (Workflow) β _state, _tokens, _variables β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Feld | Typ | Beschreibung |
|---|---|---|
_from |
string | Graph: Quellknoten-ID |
_to |
string | Graph: Zielknoten-ID |
_type |
string | Graph: Kantentyp / Prozess: Knotentyp |
_embedding |
float[] | Vektor: Embedding-Array |
_geometry |
string/object | Geo: WKT oder GeoJSON |
_valid_from |
int64 | Temporal: GΓΌltig ab (ms) |
_valid_to |
int64 | Temporal: GΓΌltig bis (ms) |
_state |
string | Prozess: AusfΓΌhrungszustand |
_parent |
string | Prozess: Eltern-Instanz |
-- Dokumente (Relational)
FOR doc IN customers
FILTER doc.country == "DE"
RETURN doc
-- Graph-Knoten
FOR node IN process_nodes
FILTER node._type == "USER_TASK"
RETURN node
-- Graph-Kanten
FOR edge IN process_edges
FILTER edge._type == "SEQUENCE_FLOW"
RETURN edge
-- Prozess-Instanzen (sind auch Dokumente)
FOR instance IN process_instances
FILTER instance._state == "RUNNING"
RETURN instance
-- Prozess-Fluss traversieren
FOR v, e, p IN 1..10 OUTBOUND "start_event" process_edges
FILTER e._type == "SEQUENCE_FLOW"
RETURN { node: v, edge: e, path: p }
-- KΓΌrzester Prozess-Pfad
FOR v IN SHORTEST_PATH "start" TO "end" process_edges
RETURN v
-- Γhnliche Prozesse finden
FOR process IN process_definitions
LET sim = SIMILARITY(process._embedding, [0.1, 0.2, ...], 10)
FILTER sim > 0.8
RETURN { process, similarity: sim }
-- Aufgaben in der NΓ€he
FOR task IN active_tasks
FILTER GEO_DISTANCE(task._geometry, [8.68, 50.11]) < 10000
RETURN task
| Collection | Beschreibung |
|---|---|
_process_definitions |
Prozess-Modelle (BPMN/EPK) |
_process_nodes |
Knoten im Prozess-Modell |
_process_edges |
Kanten/FlΓΌsse im Prozess-Modell |
_process_instances |
Laufende Prozess-Instanzen |
_process_tokens |
Token (AusfΓΌhrungsposition) |
_process_history |
Audit-Log der AusfΓΌhrung |
_process_variables |
Prozess-Variablen |
FOR instance IN _process_instances
FILTER instance.process_id == "order-process"
FILTER instance._state == "RUNNING"
RETURN instance
FOR token IN _process_tokens
FOR node IN _process_nodes
FILTER token.current_node == node.id
FILTER node._type == "USER_TASK"
FILTER node.assignee == "john.doe"
RETURN { task: node, token: token }
FOR v, e IN 1..20 OUTBOUND "start_event" _process_edges
COLLECT type = e._type WITH COUNT INTO count
RETURN { edgeType: type, count: count }
FOR order IN _process_instances
FILTER order.process_id == "order-process"
FOR shipping IN _process_instances
FILTER shipping.process_id == "shipping-process"
FILTER order.variables.orderId == shipping.variables.orderId
RETURN { order, shipping }
-- Finde ΓΌberfΓ€llige Aufgaben in der NΓ€he des Kunden
-- mit Γ€hnlichen historischen FΓ€llen
FOR task IN _process_tokens
-- Relational: Join mit Prozess-Knoten
FOR node IN _process_nodes
FILTER task.current_node == node.id
FILTER node._type == "USER_TASK"
-- Relational: Join mit Kunden-Daten
LET customer = DOCUMENT("customers", task.variables.customerId)
-- Temporal: ΓberfΓ€llige Aufgaben (> 24h)
FILTER DATE_DIFF(task.created_at, DATE_NOW(), "hour") > 24
-- Geo: Aufgaben in der NΓ€he des Kunden
FILTER GEO_DISTANCE(node._geometry, customer._geometry) < 50000
-- Vektor: Γhnliche historische FΓ€lle
LET similar = (
FOR hist IN _process_history
FILTER SIMILARITY(hist._embedding, task._embedding) > 0.85
LIMIT 5
RETURN hist
)
RETURN {
task: task,
node: node,
customer: customer,
waitingHours: DATE_DIFF(task.created_at, DATE_NOW(), "hour"),
distanceKm: GEO_DISTANCE(node._geometry, customer._geometry) / 1000,
similarCases: similar
}
| Funktion | Beschreibung |
|---|---|
PROCESS_START(processId, vars) |
Startet neue Instanz |
PROCESS_SIGNAL(instanceId, event, payload) |
Sendet Signal |
PROCESS_SUSPEND(instanceId) |
Pausiert Instanz |
PROCESS_RESUME(instanceId) |
Setzt Instanz fort |
PROCESS_TERMINATE(instanceId, reason) |
Beendet Instanz |
| Funktion | Beschreibung |
|---|---|
TASK_COMPLETE(instanceId, nodeId, output) |
SchlieΓt Aufgabe ab |
TASK_CLAIM(instanceId, nodeId, user) |
Γbernimmt Aufgabe |
TASK_DELEGATE(instanceId, nodeId, newUser) |
Delegiert Aufgabe |
| Funktion | Beschreibung |
|---|---|
PROCESS_DURATION(instanceId) |
Laufzeit in ms |
TASK_DURATION(instanceId, nodeId) |
Aufgaben-Dauer in ms |
PROCESS_PATH(instanceId) |
Durchlaufener Pfad |
PROCESS_VARIABLES(instanceId) |
Alle Variablen |
-- Starte Prozess und erhalte Instanz-ID
LET instanceId = PROCESS_START("order-process", { orderId: "ORD-123", amount: 500 })
-- Gib Instanz-Details zurΓΌck
FOR instance IN _process_instances
FILTER instance.id == instanceId
RETURN {
id: instance.id,
state: instance._state,
variables: PROCESS_VARIABLES(instance.id),
path: PROCESS_PATH(instance.id)
}
Die Collection-Registry erkennt automatisch den Datentyp basierend auf:
- PrΓ€fix
_process_*β Prozess-Collection - Feld
_from/_tovorhanden β Graph-Edge - Feld
_embeddingvorhanden β Vektor-fΓ€hig - Feld
_geometryvorhanden β Geo-fΓ€hig
Der Query-Optimizer wΓ€hlt automatisch den optimalen AusfΓΌhrungsplan:
- Graph-Traversierung β GraphIndexManager
- Vektor-Suche β VectorIndex (HNSW/FAISS)
- Geo-Abfragen β SpatialIndex (R-Tree)
- Relationale Filter β SecondaryIndex
Ein einziger QueryExecutor verarbeitet alle Abfragetypen:
class QueryExecutor {
// Dispatch basierend auf Collection-Typ und Operationen
Result execute(const Query& query) {
for (const auto& forNode : query.for_nodes) {
auto collType = registry_.getCollectionType(forNode.collection);
switch (collType) {
case CollectionType::Document:
return executeRelational(forNode);
case CollectionType::Graph:
return executeGraphTraversal(forNode);
case CollectionType::Process:
return executeProcess(forNode);
}
}
}
};Durch die vollstΓ€ndige Integration:
- Keine neuen Sprachelemente - Bestehender AQL-Wortschatz reicht
- Einheitliche Semantik - FOR, FILTER, RETURN fΓΌr alles
- Transparente Optimierung - System wΓ€hlt besten Index
- Kombinierbare Abfragen - Multi-Model in einer Query
- Einfache Lernkurve - Ein Sprachkonzept fΓΌr alle Modelle
ThemisDB 1.9.0-beta Β· Home Β· Wiki-Index Β· Module-Index Β· FAQ Β· Quick-Reference Β· GitHub Β· Issues Β· Discussions Β· License
- 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
- Deploy Overview
- 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
- Disabled Stub Policy
- Docs PR Policy
- GA Promotion Sign Off
- Github Milestones Setup
- 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
- Query Module Status
- Readme
- Release Promotion Gate Policy
- Release Validation Checklist
- Security Module 5671 Evidence Summary
- Sharding P6 Residual Risk Acceptance
- Sourcecode Compliance Governance
- Updates Development Status Sign Off
- Wave C Implementation Complete
- 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
- 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