-
Notifications
You must be signed in to change notification settings - Fork 1
ADDITIONAL_PROTOCOLS
Stand: 18. Dezember 2024
Version: 1.2.0
Kategorie: APIs, Netzwerk, Architektur
Dieses Dokument analysiert weitere Netzwerk-Protokolle über HTTP hinaus, die für ThemisDB-Deployments relevant sein könnten. Die Analyse berücksichtigt Use Cases, Implementierungsaufwand und Business Value.
| Protokoll | Use Case | Prio | Aufwand | ROI |
|---|---|---|---|---|
| gRPC | Microservices, Service-to-Service | HOCH | Mittel | Sehr hoch |
| WebSocket | Real-time Dashboards, Live-Updates | HOCH | Niedrig | Hoch |
| GraphQL über WebSocket | Subscriptions, Real-time Queries | Mittel | Mittel | Mittel |
| Server-Sent Events (SSE) | One-way Live-Updates | Niedrig | Sehr niedrig | Mittel |
| MQTT | IoT, Sensor-Datenströme | Mittel | Mittel | Hoch (IoT) |
| Apache Kafka Protocol | Event Streaming, CDC | Niedrig | Hoch | Mittel |
| Redis Protocol (RESP) | Cache-Kompatibilität | Niedrig | Mittel | Niedrig |
| PostgreSQL Wire Protocol | SQL-Tool-Kompatibilität | Mittel | Hoch | Hoch (Enterprise) |
| Native UDP | Low-Latency Bulk-Transfer | Sehr niedrig | Hoch | Sehr niedrig |
| SCTP | Multi-homing, Mobilität | Sehr niedrig | Sehr hoch | Sehr niedrig |
- Transport: HTTP/2 (binary frames)
- Serialisierung: Protocol Buffers (Protobuf)
- Use Case: High-performance service-to-service communication
-
Binäres Protokoll
- Protobuf ist 3-10x kompakter als JSON
- Parsing ist 5-20x schneller als JSON
- Nutzen für ThemisDB: Ideal für Microservice-Architekturen mit vielen API-Calls
-
HTTP/2 Multiplexing
- Alle gRPC-Vorteile von HTTP/2 (siehe vorheriges Dokument)
- Nutzen: Reduzierte Latenz bei parallelen Requests
-
Streaming
- Unidirektional (Server/Client)
- Bidirektional
-
Nutzen für ThemisDB:
- Bulk Insert Streams
- Large Query Result Streaming
- Real-time CDC Feeds
-
Code-Generierung
- Automatische Client-Generierung für 10+ Sprachen
- Type-Safety durch Protobuf-Schemas
- Nutzen: Reduzierter SDK-Entwicklungsaufwand
-
Tooling
- grpcurl (CLI-Testing wie curl)
- gRPC UI (Postman-Ähnliches GUI)
- Built-in Health Checking
- Nutzen: Bessere Developer Experience
-
Browser-Support problematisch
- Native gRPC funktioniert nicht im Browser
- Benötigt gRPC-Web (Proxy-Schicht)
- Problem: Web-Dashboards benötigen separate REST-API
-
Debugging schwieriger
- Binäres Protokoll nicht human-readable
- Mitigation: grpcurl, Wireshark-Plugin
-
Firewall/Proxy-Probleme
- Manche alte HTTP-Proxies haben Probleme mit gRPC
- Risiko: Niedrig, da HTTP/2 inzwischen weit verbreitet
Zeitrahmen: 2-3 Wochen
- Woche 1: Protobuf-Schema-Definition (alle ThemisDB-Operationen)
- Woche 2: gRPC-Server-Implementation (C++ mit grpc++)
- Woche 3: Client-SDK-Generierung + Testing
Dependencies:
{ "name": "grpc", "features": ["cpp-plugin"] }
{ "name": "protobuf" }-
Microservice-Kommunikation ✅
- ThemisDB als Backend für Microservices
- Niedrige Latenz, hoher Throughput
-
Bulk-Operationen ✅
- Streaming Insert (CSV-Import)
- Large Query Results (Pagination über Streams)
-
CDC/Changefeed ✅
- Server-Side Streaming für Echtzeit-Events
- Alternative zu SSE mit besserer Performance
✅ STARK EMPFOHLEN - Prio 1 nach HTTP/2
Begründung:
- Sehr hoher Nutzen für Service-to-Service Kommunikation
- Geringer Aufwand (grpc++ ist mature)
- Koexistenz mit REST-API möglich (beide parallel betreiben)
Strategie:
- REST-API für Web-Clients und Public API
- gRPC für interne Microservices und SDKs
- Transport: TCP mit HTTP-Upgrade
- Use Case: Full-duplex bidirektionale Kommunikation
- Status: ThemisDB hat bereits SSE (unidirektional) - WebSocket ist der nächste Schritt
-
Bidirektionale Kommunikation
- Client und Server können jederzeit senden
- Nutzen: Interaktive Queries mit Live-Updates
-
Niedriger Overhead
- Kein HTTP-Header bei jedem Frame
- Nutzen: Effizienter als Polling oder SSE
-
Breite Browser-Unterstützung
- Alle modernen Browser
- Nutzen: Einfache Integration in Web-Dashboards
-
Stateful
- Server muss Verbindungen offen halten
- Impact: Memory-Overhead (~40 KB pro Verbindung)
-
Load Balancing komplex
- Sticky Sessions erforderlich
- Problem: Horizontale Skalierung schwieriger
-
Firewall-Probleme
- Manche Corporate-Proxies blockieren WebSockets
- Mitigation: Fallback zu SSE oder Long-Polling
Zeitrahmen: 1 Woche
Boost.Beast unterstützt WebSocket bereits!
#include <boost/beast/websocket.hpp>Tasks:
- WebSocket-Handler in HttpServer integrieren
- Subscription-Management für CDC/Changefeed
- Ping/Pong Keep-Alive
-
Live Query Dashboards ✅
- Real-time Metrics
- Live Graph-Visualisierung
-
Interactive CDC ✅
- Client kann Filter ändern (z.B. "nur Tabelle X")
- Server pushed nur relevante Events
-
Collaborative Editing ✅
- Mehrere Clients bearbeiten gleiche Daten
- Server broadcasted Änderungen
✅ EMPFOHLEN - Prio 2
Begründung:
- Geringer Aufwand (Boost.Beast unterstützt es bereits)
- Bessere Alternative zu SSE für interaktive Use Cases
- Standard für moderne Web-Apps
Strategie:
- SSE behalten für einfache One-Way-Updates
- WebSocket hinzufügen für bidirektionale Kommunikation
- Transport: WebSocket (graphql-ws Protokoll)
- Use Case: Real-time GraphQL Queries
-
Deklarative Subscriptions
subscription { entityChanged(type: "User") { id name timestamp } }
-
Client-definierte Payload
- Client wählt Felder
- Nutzen: Reduziert Bandbreite
-
GraphQL-Server erforderlich
- ThemisDB hat bereits GraphQL (siehe
src/api/graphql.cpp) - Aber: WebSocket-Integration fehlt noch
- ThemisDB hat bereits GraphQL (siehe
-
Komplexität
- Resolver für Subscriptions
- Pub/Sub-System erforderlich
Zeitrahmen: 2 Wochen
- GraphQL-Subscriptions-Resolver
- Integration mit Changefeed
- WebSocket-Transport
Begründung:
- Nutzen ist marginal gegenüber WebSocket + REST
- Höherer Aufwand
- Nur sinnvoll wenn GraphQL stark genutzt wird
- Transport: TCP (oder WebSocket)
- Use Case: IoT, Sensor-Daten, Pub/Sub
- Pattern: Publisher/Subscriber mit Topics
-
IoT-Standard
- Extrem weit verbreitet in IoT-Welt
- Kleine Embedded Devices (ESP32, Arduino)
- Nutzen: ThemisDB könnte IoT-Sensor-Daten direkt aufnehmen
-
Niedriger Overhead
- ~2 Byte Header
- Nutzen: Ideal für hochfrequente Sensor-Daten
-
QoS-Levels
- 0: At most once
- 1: At least once
- 2: Exactly once
- Nutzen: Garantien für kritische Daten
-
Last Will & Testament
- Device kann "Abschiedsnachricht" konfigurieren
- Nutzen: Erkennung von Device-Ausfällen
-
Broker erforderlich
- ThemisDB müsste MQTT-Broker sein
- Aufwand: Komplettes MQTT-Protokoll implementieren (~4-6 Wochen)
-
Nicht HTTP-kompatibel
- Separater Port (Standard: 1883)
- Problem: Firewall-Konfiguration
Zeitrahmen: 4-6 Wochen
Dependencies:
- mosquitto (als Library) ODER
- Eigene Implementation mit Paho MQTT C++
-
IoT-Sensor-Ingestion ✅
Sensor → MQTT → ThemisDB → Time-Series Store -
Edge Computing ✅
- Lokale MQTT-Broker auf Edge-Devices
- ThemisDB aggregiert Daten
-
Event-Driven Architecture ✅
- ThemisDB published CDC-Events via MQTT
- Andere Services subscribed
Begründung:
- Hoher Aufwand
- Nur sinnvoll wenn ThemisDB IoT-Backend sein soll
- Alternative: Externe MQTT-Broker (Mosquitto) + ThemisDB als Storage-Backend
Bessere Strategie:
- MQTT-Bridge implementieren (2-3 Tage)
- Mosquitto → HTTP → ThemisDB
- ThemisDB muss kein MQTT-Broker sein
- Use Case: Event Streaming, Log Aggregation
- Pattern: Publish/Subscribe mit Persistence
-
Kafka-Kompatibilität
- ThemisDB könnte Kafka-Topics emulieren
- Nutzen: Kafka-Clients könnten direkt ThemisDB lesen
-
CDC mit Replay
- Kafka-Style Event-Log
- Nutzen: Debezium-kompatibel
-
Sehr hohe Komplexität
- Kafka-Protokoll ist extrem komplex
- Aufwand: 3-6 Monate für vollständige Implementation
-
ThemisDB ist keine Message-Queue
- Unterschiedliche Architektur
- Problem: Impedance Mismatch
❌ NICHT EMPFOHLEN
Begründung:
- Zu hoher Aufwand
- ThemisDB ist Database, nicht Message-Queue
- Bessere Alternative: Kafka Connect Sink für ThemisDB entwickeln
- Use Case: Cache-Kompatibilität
- Pattern: Key-Value Commands
-
Redis-Tool-Kompatibilität
- redis-cli könnte ThemisDB bedienen
- Nutzen: Einfaches Testing/Debugging
-
Einfaches Protokoll
- Text-basiert
- Aufwand: 1-2 Wochen
-
Semantic Cache als Redis-Ersatz
GET embedding:user123 SET embedding:user123 [0.1, 0.2, ...] -
Session-Store
- ThemisDB als Redis-Alternative für Sessions
Begründung:
- Geringer Aufwand, aber auch geringer Nutzen
- ThemisDB ist zu mächtig für einfache Key-Value-Ops
- Redis ist dafür besser geeignet
- Use Case: PostgreSQL-Tool-Kompatibilität
- Pattern: SQL über binäres Protokoll
-
Tool-Ökosystem ⭐
- pgAdmin, DBeaver, DataGrip funktionieren out-of-the-box
- Nutzen: Massive Developer-Experience-Verbesserung
-
ORM-Kompatibilität
- Django, Rails, TypeORM könnten ThemisDB als Postgres nutzen
- Nutzen: Keine speziellen Adapter erforderlich
-
SQL-Standard
- ThemisDB hat bereits SQL-ähnliche AQL
- Synergy: Könnte vollständiges SQL werden
-
Sehr hohe Komplexität
- Vollständiges SQL-Implementation erforderlich
- Aufwand: 6-12 Monate
-
Semantik-Unterschiede
- ThemisDB ist Multi-Model, nicht relational
- Problem: Viele PostgreSQL-Features würden fehlen
Zeitrahmen: 6-12 Monate (vollständige PostgreSQL-Kompatibilität)
Alternative: Subset-Implementation (3 Monate):
- Basic SELECT/INSERT/UPDATE/DELETE
- PostgreSQL Wire Protocol
- Mapping zu AQL
✅ LANGFRISTIG SEHR WERTVOLL - Prio 2 (Enterprise)
Begründung:
- Sehr hoher Business-Value (Tool-Kompatibilität)
- Aber: Sehr hoher Aufwand
- Erst nach Core-Features etabliert
Strategie:
- V1: PostgreSQL-kompatible Subset (SELECT, INSERT, UPDATE, DELETE)
- V2: Transactions (BEGIN, COMMIT, ROLLBACK)
- V3: Advanced Features (JOINs, Subqueries)
- Use Case: Low-Latency Bulk-Daten ohne Reliability-Overhead
- Pattern: Fire-and-forget
-
Maximale Performance
- Kein TCP-Overhead
- Nutzen: ~50% weniger Latenz als TCP
-
Multicast-fähig
- Ein Sender, viele Empfänger
- Use Case: Metrics-Broadcasting
-
Keine Reliability
- Pakete können verloren gehen
- Problem: Ungeeignet für kritische Daten
-
Sehr spezieller Use Case
- Fast immer besser: HTTP/3 (QUIC) nutzen
- Fazit: Redundant mit HTTP/3
❌ NICHT EMPFOHLEN
Begründung:
- HTTP/3 bietet bessere Alternative (UDP + Reliability)
- Zu spezieller Use Case
- Wartungsaufwand nicht gerechtfertigt
- Use Case: Multi-Homing, Message-orientiert
- Pattern: TCP-Alternative mit erweiterten Features
-
Multi-Homing
- Verbindung über mehrere IPs gleichzeitig
- Use Case: Hochverfügbarkeit
-
Message-Boundaries
- Im Gegensatz zu TCP byte-stream
- Nutzen: Einfacheres Framing
-
Kaum verbreitet
- NAT-Probleme
- Firewall-Blockierung
- Problem: Deployment unmöglich
-
Keine Browser-Support
- Problem: Webbasierte Clients ausgeschlossen
❌ NICHT EMPFOHLEN
Begründung:
- Zu wenig verbreitet
- HTTP/3 (QUIC) bietet ähnliche Features mit besserer Adoption
-
HTTP/2 Support ✅
- Aufwand: 2-3 Wochen
- Nutzen: Sehr hoch (30-50% Performance-Gewinn)
- Status: Bereits in Arbeit
-
gRPC Support ✅
- Aufwand: 2-3 Wochen
- Nutzen: Sehr hoch für Microservices
- Delivery: Q1 2025
-
WebSocket Support ✅
- Aufwand: 1 Woche
- Nutzen: Hoch für Real-time Dashboards
- Delivery: Q1 2025
-
PostgreSQL Wire Protocol (Subset) ⭐
- Aufwand: 3 Monate
- Nutzen: Sehr hoch (Tool-Kompatibilität)
- Delivery: Q3 2025
-
MQTT-Bridge (falls IoT-Use Case vorhanden)
- Aufwand: 2-3 Tage (Bridge), 4-6 Wochen (vollständiger Broker)
- Nutzen: Hoch für IoT-Deployments
- Delivery: On-Demand
-
HTTP/3 Support (nur für spezielle Use Cases)
- Aufwand: 6-8 Wochen
- Nutzen: Variabel (hoch bei Mobile/Edge)
- Delivery: Wenn Business Case validiert
-
GraphQL Subscriptions (optional)
- Aufwand: 2 Wochen
- Nutzen: Mittel
- Delivery: On-Demand
- ❌ Kafka Protocol (zu komplex, falscher Use Case)
- ❌ Redis Protocol (geringer Nutzen)
- ❌ Native UDP (redundant mit HTTP/3)
- ❌ SCTP (zu wenig verbreitet)
┌─────────────────────────────────────────────────────────┐
│ ThemisDB API Gateway │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
│ │ REST │ │ gRPC │ │WebSocket │ │PostgreSQL│ │
│ │ HTTP/1.1 │ │ (HTTP/2)│ │ │ │ Wire │ │
│ │ HTTP/2 │ │ │ │ │ │ Protocol│ │
│ │ HTTP/3* │ │ │ │ │ │ │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬────┘ │
│ │ │ │ │ │
│ └─────────────┴─────────────┴─────────────┘ │
│ │ │
│ ┌──────▼──────┐ │
│ │ Unified │ │
│ │ Request │ │
│ │ Handler │ │
│ └──────┬──────┘ │
│ │ │
├─────────────────────────┼────────────────────────────────┤
│ ▼ │
│ ┌────────────────────┐ │
│ │ ThemisDB Core │ │
│ │ (Storage Engine) │ │
│ └────────────────────┘ │
└─────────────────────────────────────────────────────────┘
Optional Extensions:
┌──────────┐
│ MQTT │ (IoT Use Case)
│ Bridge │
└────┬─────┘
│
└─→ HTTP → ThemisDB
- vcpkg.json + CMakeLists.txt (bereits erledigt)
- nghttp2 Integration
- ALPN Negotiation
- Testing
- Protobuf Schema Definition
- gRPC Server Implementation
- Client SDK Generation (C++, Python, Go, JavaScript)
- Performance Benchmarks
- Boost.Beast WebSocket Handler
- CDC/Changefeed Integration
- Subscription Management
- Testing
- Protocol Parser (Frontend/Backend Messages)
- SQL → AQL Translator (Subset)
- Basic CRUD Operations (SELECT, INSERT, UPDATE, DELETE)
- Connection Pooling
- Tool Testing (pgAdmin, DBeaver)
| Protokoll | Aufwand | Nutzen | ROI | Empfehlung |
|---|---|---|---|---|
| HTTP/2 | 2-3 Wochen | Sehr hoch | ⭐⭐⭐⭐⭐ | ✅ Sofort |
| gRPC | 2-3 Wochen | Sehr hoch | ⭐⭐⭐⭐⭐ | ✅ Q1 2025 |
| WebSocket | 1 Woche | Hoch | ⭐⭐⭐⭐ | ✅ Q1 2025 |
| PostgreSQL Wire | 3 Monate | Sehr hoch | ⭐⭐⭐⭐ | ✅ Q3 2025 |
| MQTT | 4-6 Wochen | Mittel-Hoch* | ⭐⭐⭐ | |
| HTTP/3 | 6-8 Wochen | Variabel | ⭐⭐ | |
| GraphQL Subscriptions | 2 Wochen | Mittel | ⭐⭐ | |
| Kafka Protocol | 3-6 Monate | Niedrig | ⭐ | ❌ Nein |
| Redis Protocol | 1-2 Wochen | Niedrig | ⭐ | ❌ Nein |
| Native UDP | 2-4 Wochen | Sehr niedrig | ⭐ | ❌ Nein |
| SCTP | 4-6 Wochen | Sehr niedrig | ⭐ | ❌ Nein |
*MQTT-Nutzen ist hoch NUR für IoT-Deployments
| Phase | Protokolle | Wochen | Kosten* |
|---|---|---|---|
| Q1 2025 | HTTP/2 + gRPC + WebSocket | 6-7 | €45K-52K |
| Q2-Q3 2025 | PostgreSQL Wire (MVP) | 12 | €90K |
| Q4 2025 | HTTP/3 (optional) + Polish | 8 | €60K |
| Total | Alle empfohlenen Protokolle | 26-27 | €195K-202K |
*Annahme: €7.5K pro Developer-Woche (inkl. Overhead)
| Resource | Zusätzlicher Bedarf |
|---|---|
| RAM | +500 MB @ 10K connections (alle Protokolle) |
| CPU | +15-20% (gRPC + HTTP/2 + WebSocket) |
| Disk | +50 MB (Binaries) |
| Ports | +3 (gRPC: 9090, PostgreSQL: 5432, MQTT*: 1883) |
-
TLS Mandatory
- Alle Protokolle MÜSSEN TLS 1.3 unterstützen
- Exception: Lokale Development (localhost)
-
Rate Limiting
- Pro Protokoll separate Limits
- Reason: gRPC kann höhere Last erzeugen als REST
-
Authentication
- Unified Auth-Middleware für alle Protokolle
- Implementation: JWT-Tokens funktionieren überall
| Protokoll | Security-Risiko | Mitigation |
|---|---|---|
| gRPC | Reflection-API kann Schema leaken | Nur in Dev aktivieren |
| WebSocket | Connection Exhaustion | Max 1000 Connections/IP |
| PostgreSQL | SQL Injection | Prepared Statements + Validation |
| MQTT | Topic Flooding | ACL + Topic Limits |
themis_protocol_requests_total{protocol="grpc|rest|websocket|postgres"}
themis_protocol_latency_seconds{protocol="..."}
themis_protocol_connections_active{protocol="..."}
themis_protocol_errors_total{protocol="...", error_type="..."}
- OpenTelemetry-Integration für alle Protokolle
- Distributed Tracing über Protokoll-Grenzen hinweg
- Example: REST → gRPC → ThemisDB Core (single Trace)
- HTTP/2 - Sofort (bereits in Arbeit) ✅
- gRPC - Q1 2025 ✅
- WebSocket - Q1 2025 ✅
- PostgreSQL Wire Protocol - Q3 2025 ⭐
-
HTTP/3 - Q4 2025 (nur bei Bedarf)
⚠️
- Kafka Protocol (zu komplex, falscher Use Case)
- Redis Protocol (geringer Nutzen)
- Native UDP (redundant)
- SCTP (zu wenig verbreitet)
- MQTT - Nur für IoT-Deployments
- GraphQL Subscriptions - Nur wenn GraphQL stark genutzt wird
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/