-
Notifications
You must be signed in to change notification settings - Fork 1
priorities
Stand: 29. Oktober 2025, 22:15
Basis: IMPLEMENTATION_STATUS.md Audit-Ergebnisse
| Feature | Impact | Aufwand | Risiko | Prio | Empfehlung |
|---|---|---|---|---|---|
| Mittel | 2-4h | Niedrig | ✅ ERLEDIGT | Quick Win - Abgeschlossen | |
| Hoch | 1-2 Tage | Mittel | ✅ ERLEDIGT | Datenverlust-Risiko eliminiert | |
| Hoch | 3-5 Tage | Mittel | ✅ ERLEDIGT | Basisfunktionalität implementiert | |
| Hoch | 1-2 Tage | Niedrig | ✅ ERLEDIGT | API-Integration vollständig | |
| Mittel | 2-3 Tage | Mittel | ✅ ERLEDIGT | DisjunctiveQuery implementiert | |
| Mittel | 3-5 Tage | Niedrig | ✅ ERLEDIGT | Production-Debugging enabled | |
| Inkrementelle Backups | Niedrig | 5-7 Tage | Hoch | 📋 P2 | Nice-to-Have |
| RBAC (Basic) | Hoch | 7-10 Tage | Hoch | 📋 P2 | Security (später) |
| Apache Arrow Integration | Niedrig | 10-15 Tage | Mittel | 📋 P3 | Analytics (später) |
Status Update (30. Oktober 2025, 13:50):
- ✅ Alle P0-Features abgeschlossen!
- ✅ P1 OpenTelemetry Tracing: VOLLSTÄNDIG IMPLEMENTIERT
- ✅ Infrastruktur: Tracer-Wrapper, OTLP HTTP Exporter, CMake integration
- ✅ HTTP-Handler instrumentiert (7 Endpoints)
- ✅ QueryEngine instrumentiert (11 Methoden + Child-Spans)
- ✅ AQL-Operator-Pipeline instrumentiert (parse, translate, for, filter, limit, collect, return, traversal+bfs)
- ✅ Dokumentation aktualisiert (docs/tracing.md)
- Build erfolgreich, Server-Test bestanden
- ALLE P1-TASKS ABGESCHLOSSEN!
Abgeschlossene Features:
- ✅ HNSW-Persistenz: Automatisches Save/Load implementiert
- ✅ COLLECT/GROUP BY MVP: Parser + In-Memory Aggregation (COUNT, SUM, AVG, MIN, MAX)
- ✅ Prometheus-Histogramme: Kumulative Buckets implementiert + validiert
- ✅ Vector Search HTTP Endpoint: POST /vector/search mit k-NN Suche
- ✅ OR Query Index-Merge: DisjunctiveQuery mit Index-Union
- ✅ OpenTelemetry Distributed Tracing: End-to-End Instrumentierung (HTTP → QueryEngine → AQL Operators)
Legende:
- 🔥 P0 = Kritisch (sofort/diese Woche) - ✅ ALLE ERLEDIGT
⚠️ P1 = Wichtig (nächste 2 Wochen) - ✅ ALLE ERLEDIGT- 📋 P2 = Nice-to-Have (nächster Sprint) - NÄCHSTE PHASE
- 📋 P3 = Backlog (zukünftig)
Tag 1-2: Prometheus Histogramme (kumulative Buckets) ✅
Tag 2-4: OR/NOT Index-Merge (Query-Flexibilität) ✅
Tag 5-7: HNSW Persistenz (Datenverlust-Risiko eliminieren) ✅
Ergebnis: Alle P0-Features implementiert und getestet!
Tag 1-2: OpenTelemetry Tracing - Infrastruktur ✅
Tag 2-3: OpenTelemetry Tracing - Instrumentierung (HTTP, Query)
Tag 4-5: Jaeger Integration testen + Dokumentation
Tag 1-5: COLLECT/GROUP BY MVP (Basisfunktionalität)
Tag 6-7: HNSW Persistenz (Datenverlust-Risiko)
Tag 8: Prometheus Histogramme (Quick Win zum Abschluss)
Vorteil: Kernfunktionalität (Aggregationen) schnell verfügbar
Nachteil: Längerer initialer Entwicklungszyklus
Tag 1-2: HNSW Persistenz (Datenverlust-Risiko eliminieren)
Tag 3-7: COLLECT/GROUP BY MVP (Basisfunktionalität)
Tag 8: Prometheus Histogramme (Quick Win)
Vorteil: Kritische Risiken (Datenverlust) sofort adressiert
Nachteil: Komplexes Feature am Anfang (HNSW save/load)
Problem:
- Aktuelle Implementation: Non-kumulative Buckets (jeder Bucket zählt nur seinen Range)
- Prometheus-Spec: Buckets müssen kumulativ sein (
le="100"= alle Werte ≤ 100) - Impact: Grafana/Prometheus-Tools zeigen falsche Percentiles
Lösung:
// Aktuell (FALSCH):
if (ms <= 1) page_bucket_1ms_++;
else if (ms <= 5) page_bucket_5ms_++;
// ...
// Korrekt (KUMULATIV):
if (ms <= 1) page_bucket_1ms_++;
if (ms <= 5) page_bucket_5ms_++;
if (ms <= 10) page_bucket_10ms_++;
// ... (jeder Wert inkrementiert ALLE passenden Buckets)Aufwand:
- Änderungen:
http_server.cpp(recordLatency, recordPageFetch) - Tests: Smoke-Test erweitern (Bucket-Prüfung)
- Doku: README.md aktualisieren
- Geschätzt: 2-4 Stunden
DoD (Definition of Done):
- recordLatency() verwendet kumulative Bucket-Logik
- recordPageFetch() verwendet kumulative Bucket-Logik
- Smoke-Test validiert: Wert 150ms → buckets 1,5,10,25,50,100,250,500,1000,5000,Inf alle ≥ 1
- README.md Histogram-Beschreibung korrigiert
Problem:
- Vector-Index ist nur In-Memory
- Server-Restart → alle Vektoren weg
- Manuelles Rebuild nötig (Performance-Impact)
Lösung:
// HNSWlib API:
index_->saveIndex("data/vector_index_<collection>.bin");
index_->loadIndex("data/vector_index_<collection>.bin", space_, max_elements_);Implementierung:
-
Startup:
VectorIndexManager::init()prüft auf existierende.bin, lädt wenn vorhanden -
Shutdown:
VectorIndexManager::shutdown()speichert Index - Background Save: Optional: Periodisches Save alle N Minuten
-
Versioning: Filename-Schema:
<collection>_v<version>.bin
Aufwand:
- Code:
vector_index.cpp(init/shutdown/save/load) - Tests:
test_vector_index.cpp(save → restart → load → verify results) - Config:
config.json(vector_save_interval_minutes) - Geschätzt: 1-2 Tage
DoD:
-
saveIndex()speichert bei Shutdown -
loadIndex()lädt bei Startup (wenn vorhanden) - Test: Add 100 Vektoren → Restart → Search findet alle
- Config-Option:
vector_auto_save: true/false
Problem:
- Aggregationen sind SQL/AQL-Standard-Feature
- AST-Node (
CollectNode) existiert, aber keine Executor-Integration - Queries wie
SELECT city, COUNT(*) FROM users GROUP BY cityunmöglich
Lösung (MVP-Scope):
// Beispiel:
FOR doc IN orders
FILTER doc.created_at >= "2025-01-01"
COLLECT city = doc.city
AGGREGATE
total = SUM(doc.amount),
count = COUNT()
RETURN {city, total, count}
Implementierung:
-
Parser:
CollectNodeparsing (bereits vorhanden in AST) -
Translator:
handleCollect()inaql_translator.cpp -
Executor:
- Hash-Map für Gruppierung:
std::unordered_map<string, AggregateState> - Aggregat-Funktionen: COUNT, SUM, AVG, MIN, MAX
- Streaming-Execution (keine Full-Scan-Materialisierung)
- Hash-Map für Gruppierung:
- Tests: Unit-Tests + HTTP-Integration-Tests
Aufwand:
- Code:
aql_translator.cpp,query_engine.cpp - Tests:
test_aql_translator.cpp(mindestens 10 neue Tests) - Doku:
docs/aql_syntax.mdaktualisieren - Geschätzt: 3-5 Tage
MVP-Scope (Reduktion):
- ✅ Einspaltige Gruppierung (
COLLECT city = doc.city) - ✅ Basis-Aggregat-Funktionen (COUNT, SUM, AVG, MIN, MAX)
- ❌ Mehrspaltige Gruppierung (später)
- ❌ HAVING-Filter (später)
- ❌ KEEP/WITH COUNT (später)
DoD:
-
COLLECT field = exprfunktioniert -
AGGREGATE count = COUNT()funktioniert -
AGGREGATE sum = SUM(field)funktioniert - Unit-Tests: 10+ Test-Cases PASS
- HTTP-Test: End-to-End GROUP BY Query
- Doku: Beispiel in
docs/aql_syntax.md
- COLLECT/GROUP BY: ⭐⭐⭐⭐⭐ (Kernfunktionalität, Kundenerwartung)
- HNSW Persistenz: ⭐⭐⭐⭐ (Datenverlust-Risiko, Produktionsfähigkeit)
- Prometheus Histogramme: ⭐⭐⭐ (Observability, Ops-Qualität)
- Prometheus Histogramme: ⭐⭐⭐⭐⭐ (Compliance-Fix, behebt Spec-Verletzung)
- HNSW Persistenz: ⭐⭐⭐⭐ (Architektur-Lücke schließen)
- COLLECT/GROUP BY: ⭐⭐⭐ (AST-Code-Completion)
- HNSW Persistenz: ⭐⭐⭐⭐⭐ (Datenverlust-Risiko eliminieren)
- COLLECT/GROUP BY: ⭐⭐ (Feature-Lücke, kein direktes Risiko)
- Prometheus Histogramme: ⭐⭐ (Monitoring-Fehler, aber nicht kritisch)
Woche 1 (Tag 1-7):
🔥 Tag 1 (2-4h): Prometheus Histogramme (Quick Win, Motivation)
🔥 Tag 1-3 (2 Tage): HNSW Persistenz (Risiko-Minimierung)
🔥 Tag 4-7 (4 Tage): COLLECT/GROUP BY MVP (Strategisch wichtig)
Rationale:
- Quick Win am Anfang: Momentum, sichtbarer Fortschritt nach 4h
- Risiko-Minimierung: HNSW-Persistenz vor Wochenende fertig
- Strategisches Feature: COLLECT/GROUP BY nutzt volle Woche
Erwartete Ergebnisse (Ende Woche 1):
- ✅ Prometheus-konforme Histogramme
- ✅ Vector-Index überleben Server-Restart
- ✅ Basis-Aggregationen (COLLECT/COUNT/SUM) funktional
- 📈 Production-Readiness-Score: ~35% → ~55%
Woche 2:
- OR/NOT Index-Merge (2-3 Tage)
- OpenTelemetry Tracing (3-5 Tage)
Sprint 2:
- Inkrementelle Backups/WAL-Archiving
- Automated Restore-Verification
- Strukturierte JSON-Logs
Sprint 3:
- RBAC (Basic)
- Query/Plan-Cache
- POST /config (Hot-Reload)
Langfristig:
- Apache Arrow Integration
- Phase 4 (Filesystem/Content) Start
- Phase 7 (Security/Governance) Vollausbau
Bitte wählen:
- Option A: Quick Wins zuerst (Prometheus → OR/NOT → HNSW)
- Option B: Strategisch (COLLECT → HNSW → Prometheus)
- Option C: Risiko-Minimierung (HNSW → COLLECT → Prometheus)
- Empfehlung: Hybrid (Prometheus [Quick Win] → HNSW [Risiko] → COLLECT [Strategisch])
Oder eigene Priorisierung nennen.
Erstellt: 29. Oktober 2025
Nächster Review: Nach Abschluss von 3 P0-Features
- Architecture-ACCESS-MODEL-IMPLEMENTATION-SUMMARY
- Architecture-ADR-003-pg-dump-sql-parser
- Architecture-BASEENTITY-PRINCIPLE
- Architecture-CACHE-STORAGE-INTEGRATION
- Architecture-CMAKE-ARCHITECTURE
- Architecture-CMAKE-FLAGS-REFERENCE
- Architecture-CMAKE-MODULAR-ARCHITECTURE
- Architecture-CONCERNS-ARCHITECTURE-DIAGRAM
- Architecture-CONCERNS-IMPLEMENTATION-SUMMARY
- Architecture-CONTENT-MODEL
- Architecture-COPILOT-THEMISDB-GRAPH-RAG-BACKEND-ARCHITECTURE
- Architecture-CRYPTO-AND-KEYS
- Architecture-FEATURE-FLAGS-REFERENCE
- Architecture-GPU-ARCHITECTURE-REVIEW-TEMPLATE
- Architecture-HTTP-SHUTDOWN-HARDENING
- Architecture-MIGRATION-GUIDE-CONCERNS
- Architecture-MIGRATION-GUIDE-v13-v14
- Architecture-MODULARIZATION-GUIDE
- Architecture-MODULAR-ARCHITECTURE-ROADMAP
- Architecture-MODULE-ARCHITECTURE-INDEX
- Architecture-P1D01-ISSMPLUGIN-DESIGN-REVIEW
- Architecture-P1-D01-ISSMPLUGIN-DESIGN-REVIEW
- Architecture-P1-D08-MAMBA-GOVERNANCE-CONTRACT
- Architecture-P1-P2-IMPLEMENTATION-COMPLETION-INDEX
- Architecture-PHASE0-COMPLETION-ASSESSMENT
- Architecture-PHASE3-QUERYENGINE-DI-ARCHITECTURE
- Architecture-PHASE4-INDEX-MANAGER-DI
- Architecture-POSTGRESQL-WIRE-PROTOCOL
- Architecture-QUERYENGINE-IMPLEMENTATION-GUIDE
- Architecture-QUERY-SCHEDULING
- Architecture-RAFT-CONSENSUS-DESIGN
- Architecture-README
- Architecture-README-SSM-HYBRID-IMPLEMENTATION
- Architecture-REFACTORING-SUMMARY
- Architecture-RESOURCE-POOLING
- Architecture-SOURCE-DIRECTORY-GUIDE
- Architecture-THEMIS-CORE-GUIDE
- Architecture-UNIFIED-ACCESS-MODEL
- Architecture-WAL-GRPC-MTLS-CONFIGURATION
- Architecture-WIRE-PROTOCOL-RETRY
- Architecture-boltzmann-observability-draft
- Architecture-experimental-logarithmic-vector-storage
- Architecture-llm-wiki-mvp-adr
- Architecture-rewrite-engine-architecture
- Architecture-rope-api-architecture
- Architecture-ssm-gguf-mamba-status
- Architecture-ssm-hybrid-analysis
- Architecture-ssm-hybrid-rollout-plan
- Architecture-ssm-plugin-interface-design-review
- Architecture-transaction-coordinators
- Architecture-wiki-secondary-index
- Architecture-wire-protocol
- Governance-DISABLED-STUB-POLICY
- Governance-DOCS-PR-POLICY
- Governance-GA-PROMOTION-SIGN-OFF
- Governance-GITHUB-MILESTONES-SETUP
- Governance-MATURITY-CLAIM-VERIFICATION-CHECKLIST
- Governance-MATURITY-EVIDENCE-REGISTRY
- Governance-MERGE-GATE-BOT-CONFIG
- Governance-MERGE-GATE-STATUS-LIVE
- Governance-PHASE3-ENFORCEMENT-RUNBOOK
- Governance-PHASE-1-CLOSURE-REPORT
- Governance-PHASE-CLOSURE-POLICY
- Governance-PHASE-DEPENDENCY-GRAPH
- Governance-PLUGIN-SUBMODULE-ROLLBACK
- Governance-PRODUCTION-READY-2026-DELIVERY-PLAN
- Governance-PR-VERSION-TARGETING
- Governance-PR-VERSION-TARGETING-BACKFILL
- Governance-QUERY-MODULE-STATUS
- Governance-README
- Governance-RELEASE-PROMOTION-GATE-POLICY
- Governance-RELEASE-VALIDATION-CHECKLIST
- Governance-SECURITY-MODULE-5671-EVIDENCE-SUMMARY
- Governance-SHARDING-P6-RESIDUAL-RISK-ACCEPTANCE
- Governance-SOURCECODE-COMPLIANCE-GOVERNANCE
- Governance-UPDATES-DEVELOPMENT-STATUS-SIGN-OFF
- Governance-WAVE-C-IMPLEMENTATION-COMPLETE
- Module-acceleration-Roadmap
- Module-access-model-Roadmap
- Module-ai-Roadmap
- Module-analytics-Roadmap
- Module-api-Roadmap
- Module-aql-Roadmap
- Module-auth-Roadmap
- Module-base-Roadmap
- Module-cache-Roadmap
- Module-cdc-Roadmap
- Module-chaos-Roadmap
- Module-chimera-Roadmap
- Module-config-Roadmap
- Module-content-Roadmap
- Module-core-Roadmap
- Module-distributed-knowledge-Roadmap
- Module-distributed-tensor-Roadmap
- Module-document-Roadmap
- Module-ethics-ai-Roadmap
- Module-evaluation-Roadmap
- Module-execution-Roadmap
- Module-exporters-Roadmap
- Module-failover-Roadmap
- Module-geo-Roadmap
- Module-governance-Roadmap
- Module-gpu-Roadmap
- Module-graph-Roadmap
- Module-image-analysis-Roadmap
- Module-importers-Roadmap
- Module-index-Roadmap
- Module-ingestion-Roadmap
- Module-llama-cpp-Roadmap
- Module-llm-Roadmap
- Module-llm-streaming-Roadmap
- Module-llm-wiki-Roadmap
- Module-maintenance-Roadmap
- Module-metadata-Roadmap
- Module-network-Roadmap
- Module-observability-Roadmap
- Module-onnx-clip-Roadmap
- Module-performance-Roadmap
- Module-plugins-Roadmap
- Module-process-Roadmap
- Module-projects-Roadmap
- Module-prompt-engineering-Roadmap
- Module-query-Roadmap
- Module-rag-Roadmap
- Module-replication-Roadmap
- Module-retrieval-Roadmap
- Module-rpc-grpc-Roadmap
- Module-scheduler-Roadmap
- Module-scraper-Roadmap
- Module-search-Roadmap
- Module-security-Roadmap
- Module-server-Roadmap
- Module-sharding-Roadmap
- Module-stable-diffusion-Roadmap
- Module-storage-Roadmap
- Module-temporal-Roadmap
- Module-tensor-Roadmap
- Module-themis-Roadmap
- Module-timeseries-Roadmap
- Module-toolbox-Roadmap
- Module-training-Roadmap
- Module-transaction-Roadmap
- Module-updates-Roadmap
- Module-user-storage-encrypted-Roadmap
- Module-utils-Roadmap
- Module-vector-search-Roadmap
- Module-voice-Roadmap
- Module-whisper-Roadmap