-
Notifications
You must be signed in to change notification settings - Fork 1
content_manager.cpp
GitHub Actions edited this page Jan 2, 2026
·
1 revision
# content_manager.cpp
**Stand:** 5. Dezember 2025
**Version:** 1.0.0
**Kategorie:** Src
---
Path: `src/content/content_manager.cpp`
**Purpose:** Implementiert `ContentManager` für Content‑Ingest, Chunking, optionale ZSTD‑Kompression, Metadatenverwaltung und Integration mit Vector/Graph Indizes.
**Kerntypen:**
- `ContentMeta` — Metadaten eines Content‑Objekts (mime_type, size_bytes, compressed, chunk_count, embedding_dim, timestamps, hashes).
- `ChunkMeta` — Metadaten eines Chunks (seq_num, chunk_type, embedding, content_id).
- `ContentManager` — bietet Import/Get/Delete/Search APIs.
**Wichtige API‑Funktionen (Übersicht):**
- `importContent(spec, blob)` — Ingest eines Content‑Objekts.
- `getContentMeta(content_id)` — lädt `ContentMeta`.
- `getContentBlob(content_id)` — liefert entpackten Blob (falls komprimiert, Dekompression intern).
- `getContentChunks(content_id)` — liefert Chunk‑Liste (`ChunkMeta`).
- `getChunk(chunk_id)` — lädt einzelnes Chunk‑Meta.
- `searchContent(query_text, k, filters)` — vektorbasierte Suche via TextProcessor→Embedding.
- `searchWithExpansion(query_text, k, expansion_hops, filters)` — erweitert per Graph BFS/Dijkstra.
- `deleteContent(content_id)` — löscht Blob, Chunks, Metadaten und Index‑Einträge.
- `getStats()` — einfache Statistiken (counts, approximate storage size).
**Speicher‑Keys / Konventionen:**
- `content:<id>` → ContentMeta JSON
- `content_blob:<id>` → Blob (roh oder ZSTD)
- `chunk:<id>` → ChunkMeta JSON
- `content_chunks:<id>` → JSON Liste der chunk ids
- `content_hash:<sha256>` → lookup für Duplikaterkennung
**Import‑Ablauf (`importContent`):**
1. `spec` JSON parsen (metadaten, chunks, edges optional).
2. Generiere IDs falls notwendig (UUID fallback).
3. Entscheide Kompression über Heuristik + `config:content` (z.B. skip small mime types, size threshold ~4KB).
4. Wenn komprimiert → ZSTD (nur wenn `THEMIS_HAS_ZSTD` verfügbar), sonst roher Blob.
5. Speichere Blob unter `content_blob:<id>` und Meta unter `content:<id>`.
6. Für jeden Chunk: speichere `chunk:<id>`, optional Embedding → `vector_index_->addEntity(...)` in `chunks:` namespace.
7. Optional: Kanten in `graph_index_` anlegen.
**Kompressions‑Heuristik (aktuell):**
- MIME‑Whitelist / Blacklist: gewisse textliche MIMEs komprimieren, bereits komprimierte MIMEs (z. B. `image/*`, `video/*`) werden ausgelassen.
- Größenheuristik: Standardfall komprimieren wenn > ~4096 Bytes (siehe Quellcode: `return size > 4096;`).
- Build‑Zeit: Wenn ZSTD nicht vorhanden ist (kein `THEMIS_HAS_ZSTD`) → Fallback auf rohen Blob.
**Deduplication:**
- SHA256 des Inhalts wird berechnet und in `content_hash:<hex>` abgelegt; ein Treffer kann Import überspringen oder referenzieren.
**Suche & Expansion:**
- `searchContent` nutzt einen `TextProcessor` (falls registriert) zur Erstellung einer Query‑Embedding und ruft `vector_index_->searchKnn` auf.
- `searchWithExpansion` kombiniert Vector‑Scores mit Graph‑Expansion (BFS) und optionalen Dijkstra‑Kosten; Parameter `alpha/beta/gamma` steuern Gewichtung und Hop‑Penalty.
**Fehlerbehandlung / Fallbacks:**
- Alle `storage_->put`/`get` Rückgaben werden geprüft; fehlgeschlagene Stores geben `Status::Error` zurück.
- Dekompressionsfehler führen zu Rückgabe des rohen Bytestrings (Fallback).
**Beispiel `spec` (Import JSON):**
```json
{
"id": "", // optional
"mime_type": "text/plain",
"title": "Beispiel",
"chunks": [ { "seq_num": 0, "id": "", "embedding": [0.1, 0.2, ...] } ],
"edges": [ { "from": "obj:1", "to": "obj:2", "weight": 1.0 } ]
}Pseudocode‑Beispiel (Ingest → Suche):
ContentManager cm(storage, vector_index, graph_index);
json spec = ...; std::string blob = readFile("file.txt");
auto st = cm.importContent(spec, blob);
auto meta = cm.getContentMeta(st.id);
auto results = cm.searchContent("Suchtext", 10, json::object());Wichtige Ergänzungen / TODOs:
- E2E Tests: ingest → getBlob → searchContent → deleteContent (inkl. Kompressionsvarianten).
- Concurrency: dokumentieren, welche atomic/transactional Guarantees Storage bietet und ob externes Locking empfohlen wird (race beim Setzen von
embedding_dim). - Explizite Beispiele für
config:contentSettings.
ThemisDB v1.3.4 | GitHub | Documentation | Discussions | License
Last synced: January 02, 2026 | Commit: 6add659
Version: 1.3.0 | Stand: Dezember 2025
- Übersicht
- Home
- Dokumentations-Index
- Quick Reference
- Sachstandsbericht 2025
- Features
- Roadmap
- Ecosystem Overview
- Strategische Übersicht
- Geo/Relational Storage
- RocksDB Storage
- MVCC Design
- Transaktionen
- Time-Series
- Memory Tuning
- Chain of Thought Storage
- Query Engine & AQL
- AQL Syntax
- Explain & Profile
- Rekursive Pfadabfragen
- Temporale Graphen
- Zeitbereichs-Abfragen
- Semantischer Cache
- Hybrid Queries (Phase 1.5)
- AQL Hybrid Queries
- Hybrid Queries README
- Hybrid Query Benchmarks
- Subquery Quick Reference
- Subquery Implementation
- Content Pipeline
- Architektur-Details
- Ingestion
- JSON Ingestion Spec
- Enterprise Ingestion Interface
- Geo-Processor Design
- Image-Processor Design
- Hybrid Search Design
- Fulltext API
- Hybrid Fusion API
- Stemming
- Performance Tuning
- Migration Guide
- Future Work
- Pagination Benchmarks
- Enterprise README
- Scalability Features
- HTTP Client Pool
- Build Guide
- Implementation Status
- Final Report
- Integration Analysis
- Enterprise Strategy
- Verschlüsselungsstrategie
- Verschlüsselungsdeployment
- Spaltenverschlüsselung
- Encryption Next Steps
- Multi-Party Encryption
- Key Rotation Strategy
- Security Encryption Gap Analysis
- Audit Logging
- Audit & Retention
- Compliance Audit
- Compliance
- Extended Compliance Features
- Governance-Strategie
- Compliance-Integration
- Governance Usage
- Security/Compliance Review
- Threat Model
- Security Hardening Guide
- Security Audit Checklist
- Security Audit Report
- Security Implementation
- Development README
- Code Quality Pipeline
- Developers Guide
- Cost Models
- Todo Liste
- Tool Todo
- Core Feature Todo
- Priorities
- Implementation Status
- Roadmap
- Future Work
- Next Steps Analysis
- AQL LET Implementation
- Development Audit
- Sprint Summary (2025-11-17)
- WAL Archiving
- Search Gap Analysis
- Source Documentation Plan
- Changefeed README
- Changefeed CMake Patch
- Changefeed OpenAPI
- Changefeed OpenAPI Auth
- Changefeed SSE Examples
- Changefeed Test Harness
- Changefeed Tests
- Dokumentations-Inventar
- Documentation Summary
- Documentation TODO
- Documentation Gap Analysis
- Documentation Consolidation
- Documentation Final Status
- Documentation Phase 3
- Documentation Cleanup Validation
- API
- Authentication
- Cache
- CDC
- Content
- Geo
- Governance
- Index
- LLM
- Query
- Security
- Server
- Storage
- Time Series
- Transaction
- Utils
Vollständige Dokumentation: https://makr-code.github.io/ThemisDB/