-
Notifications
You must be signed in to change notification settings - Fork 1
sharding_strategy
Version: 2.0
Erstellt: 20. November 2025
Fokus: Sharding-basierte horizontale Skalierung mit VCC-PKI als Skalierungswerkzeug
Status: ✨ NEU - Erweitert Infrastructure Roadmap mit PKI-Integration
Diese Strategie beschreibt die vollständige Implementierung einer horizontal skalierbaren ThemisDB-Architektur mit URN-basiertem Sharding und VCC-PKI als zentralem Skalierungswerkzeug. Die PKI-Integration ermöglicht:
- ✅ Sichere Shard-zu-Shard-Kommunikation via mutual TLS (mTLS)
- ✅ Verifiable Credentials für Shard-Identität und -Autorisierung
- ✅ Dezentrale Trust-Architektur ohne Single Point of Failure
- ✅ Automatische Shard-Authentifizierung bei Cluster-Join/Leave
- ✅ Signierte Rebalancing-Operations zur Auditierbarkeit
- ✅ Zero-Trust Shard-Mesh mit granularer Berechtigungskontrolle
Investition: 12-18 Monate Engineering
ROI: Enterprise-ready, security-first distributed database
- Architekturübersicht
- VCC-PKI als Skalierungswerkzeug
- Sharding-Strategie
- Shard-Kommunikationsprotokoll
- Rebalancing mit PKI-Signatur
- Shard-Authentifizierung & Autorisierung
- Metadata Store mit PKI
- Monitoring & Audit
- Implementierungsplan
- Sicherheitsmodell
- Performance-Optimierungen
- Disaster Recovery
┌────────────────────────────────────────────────────────────────────────┐
│ VCC-PKI Trust Root │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Certificate Authority (CA) │ │
│ │ - Root CA: themis-root-ca.crt │ │
│ │ - Intermediate CA: themis-cluster-ca.crt │ │
│ │ - Shard Certificates: shard-{id}.crt (X.509 mit URN-Extension) │ │
│ └──────────────────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────────────────┘
▼
┌────────────────────────────────────────────────────────────────────────┐
│ PKI-Secured Routing Layer │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ URN Resolver │ │ Shard Router │ │ mTLS Gateway │ │
│ │ + PKI Cache │ │ + PKI Verify │ │ + Cert Mgmt │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ - Certificate-based Shard Discovery │
│ - Mutual TLS für alle Inter-Shard-Kommunikation │
│ - JWT-Tokens signiert mit Shard-Private-Key │
└────────────────────────────────────────────────────────────────────────┘
▼
┌────────────────────────────────────────────────────────────────────────┐
│ Shard Mesh (Zero-Trust) │
│ ┌──────────┐ mTLS ┌──────────┐ mTLS ┌──────────┐ mTLS ┌──────────┐ │
│ │ Shard 1 │◄────►│ Shard 2 │◄────►│ Shard 3 │◄────►│ Shard N │ │
│ │ + PKI │ │ + PKI │ │ + PKI │ │ + PKI │ │
│ │ RocksDB │ │ RocksDB │ │ RocksDB │ │ RocksDB │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │ │
│ ┌────▼───┐ ┌────▼───┐ ┌────▼───┐ ┌────▼───┐ │
│ │Replica1│ │Replica1│ │Replica1│ │Replica1│ │
│ │+ PKI │ │+ PKI │ │+ PKI │ │+ PKI │ │
│ └────────┘ └────────┘ └────────┘ └────────┘ │
└────────────────────────────────────────────────────────────────────────┘
▼
┌────────────────────────────────────────────────────────────────────────┐
│ PKI-Secured Metadata Store (etcd) │
│ - Shard Topology signiert mit Cluster-CA │
│ - Rebalancing Operations signiert mit Operator-Key │
│ - Certificate Revocation List (CRL) für kompromittierte Shards │
└────────────────────────────────────────────────────────────────────────┘
- Zero-Trust Architecture: Jeder Shard muss sich authentifizieren
- Certificate-Based Identity: Shard-Identität = X.509-Zertifikat
- Mutual TLS (mTLS): Alle Shard-zu-Shard-Verbindungen verschlüsselt
- Signed Operations: Rebalancing, Topology-Changes signiert
- Auditability: Alle PKI-Events werden geloggt (Audit Trail)
Die VCC-PKI (siehe pki_integration_architecture.md) wird als zentrales Skalierungswerkzeug eingesetzt:
PKI-Hierarchie:
themis-root-ca.crt (Self-Signed, Offline, HSM-backed)
│
├─► themis-cluster-ca.crt (Intermediate CA für Shards)
│ ├─► shard-001.themis.local.crt
│ ├─► shard-002.themis.local.crt
│ └─► shard-NNN.themis.local.crt
│
├─► themis-operator-ca.crt (Intermediate CA für Operatoren)
│ ├─► operator-admin.crt (Rebalancing, Add/Remove Shard)
│ └─► operator-readonly.crt (Nur Lesen/Monitoring)
│
└─► themis-client-ca.crt (Intermediate CA für Clients)
├─► client-app1.crt
└─► client-app2.crt
X.509 Certificate Extensions für Shard-Identität:
Subject: CN=shard-001.themis.local, O=ThemisDB, OU=Cluster-Production
SAN (Subject Alternative Names):
- DNS: shard-001.themis.local
- DNS: shard-001.dc1.themis.local
- IP: 10.1.2.3
- URI: urn:themis:shard:cluster-prod:001
Custom X.509 Extensions (OID 1.3.6.1.4.1.XXXXX):
- shardID: shard_001
- datacenter: dc1
- tokenRangeStart: 0x0000000000000000
- tokenRangeEnd: 0x3FFFFFFFFFFFFFFF
- capabilities: [read, write, replicate, admin]
- role: primary | replica
Implementation Reference:
- Existing:
src/utils/pki_client.cpp(RSA-Signaturen) - Neu:
include/sharding/pki_shard_certificate.h(X.509-Extensions-Parser)
Integration mit Infrastructure Roadmap:
// Erweitert URNResolver aus infrastructure_roadmap.md
namespace themis::sharding {
class PKIShardDiscovery {
public:
/// Register shard certificate in etcd
void registerShard(const ShardCertificate& cert);
/// Discover shards via PKI certificates
std::vector<ShardInfo> discoverShards();
/// Verify shard certificate against Root CA
bool verifyShard(const std::string& shard_id);
/// Revoke compromised shard
void revokeShard(const std::string& shard_id, const std::string& reason);
};
} // namespace themis::shardingetcd Key-Schema:
/themis/cluster-prod/shards/shard-001/certificate
→ {cert_pem, serial_number, not_before, not_after, capabilities}
/themis/cluster-prod/crl/revoked
→ [serial_001, serial_042, ...] # Certificate Revocation List
Verwendet URN-Schema aus infrastructure_roadmap.md:
urn:themis:{model}:{namespace}:{collection}:{uuid}
Beispiele:
urn:themis:relational:customers:users:550e8400-e29b-41d4-a716-446655440000
urn:themis:graph:social:edges:7c9e6679-7425-40de-944b-e07fc1f90ae7
Hash-Funktion: xxHash (fast, gleichmäßig verteilt)
uint64_t hashURN(const URN& urn) {
return xxh3::xxh64(urn.uuid.data(), urn.uuid.size(), /*seed=*/0);
}Shard-Zuordnung via Consistent Hashing Ring:
- Virtual Nodes: 150 pro Shard (konfigurierbar)
- Balance-Faktor: <5% Standard-Abweichung
- Rebalancing: Automatisch bei Add/Remove Shard
// Shard-Router mit PKI-Verification
class ShardRouter {
std::optional<ShardInfo> resolveShard(const URN& urn) {
// 1. Hash URN → Token
uint64_t token = hashURN(urn);
// 2. Consistent Hash → Shard-ID
std::string shard_id = hash_ring_.getShardForHash(token);
// 3. PKI-Verification: Ist Shard-Certificate gültig?
if (!pki_discovery_->verifyShard(shard_id)) {
LOG(ERROR) << "Shard certificate invalid/revoked: " << shard_id;
return std::nullopt;
}
// 4. Get Shard-Info (mit mTLS-Endpoint)
return shard_topology_->getShard(shard_id);
}
};Verbindungsaufbau:
1. Shard-A lädt eigenes Zertifikat (shard-A.crt + shard-A.key)
2. Shard-A öffnet TLS-Verbindung zu Shard-B
3. TLS-Handshake:
a) Shard-A sendet Client-Cert (shard-A.crt)
b) Shard-B verifiziert gegen Root CA
c) Shard-B sendet Server-Cert (shard-B.crt)
d) Shard-A verifiziert gegen Root CA
4. Certificate Extensions Check:
- shardID korrekt?
- Capabilities vorhanden?
- Nicht in CRL?
5. TLS-Session established (TLS 1.3)
Implementation:
namespace themis::sharding {
class MTLSClient {
public:
struct Config {
std::string cert_path; // /etc/themis/pki/shard-001.crt
std::string key_path; // /etc/themis/pki/shard-001.key
std::string ca_cert_path; // /etc/themis/pki/root-ca.crt
std::string crl_path; // /etc/themis/pki/crl.pem
};
MTLSClient(const Config& cfg);
/// GET mit mTLS
std::optional<nlohmann::json> get(const std::string& endpoint,
const std::string& path);
/// POST mit mTLS + Request-Signatur
std::optional<nlohmann::json> post(const std::string& endpoint,
const std::string& path,
const nlohmann::json& body);
};
} // namespace themis::shardingDefense-in-Depth: Requests werden zusätzlich mit Shard-Private-Key signiert
struct SignedRequest {
std::string shard_id; // Sender
std::string operation; // GET, PUT, DELETE
std::string path; // URN-Pfad
nlohmann::json body;
uint64_t timestamp_ms; // Replay-Protection
uint64_t nonce; // Replay-Protection
std::string signature_b64; // RSA-SHA256 Signature
std::string cert_serial; // Certificate Serial Number
};Verification:
- Timestamp-Check (max 60s Abweichung)
- Nonce-Check (Duplicate-Detection)
- Certificate-Lookup (via cert_serial)
- Signature-Verification (RSA-SHA256)
- Capability-Check (darf Sender diese Operation?)
Nur autorisierte Operatoren dürfen Rebalancing durchführen:
themis-operator-ca.crt
├─► admin.operator.crt
│ Capabilities: [rebalance, add_shard, remove_shard]
└─► readonly.operator.crt
Capabilities: [view_topology]
struct RebalanceOperation {
std::string operation_id; // UUID
std::string from_shard;
std::string to_shard;
uint64_t token_range_start, token_range_end;
std::string operator_id; // Operator CN
std::string signature_b64; // Operator-Signatur
std::string cert_serial;
void sign(const PKIClient& operator_pki);
bool verify(const std::string& operator_ca_pem) const;
};Workflow:
$ themis-admin rebalance \
--from=shard-001 \
--to=shard-002 \
--token-range=0x0000:0x1FFF \
--operator-cert=/etc/themis/pki/admin.operator.crt \
--operator-key=/etc/themis/pki/admin.operator.key
# → Signierte Operation wird an beide Shards gesendet
# → Shards verifizieren Operator-Signatur
# → Rebalancing startet (mit Audit-Log)Dieses Dokument erweitert infrastructure_roadmap.md mit PKI-Sicherheit:
Übernommen aus infrastructure_roadmap.md:
- ✅ URN-Schema (
urn:themis:{model}:{namespace}:{collection}:{uuid}) - ✅ Consistent Hashing Ring
- ✅ Shard Topology Manager (etcd-basiert)
- ✅ Scatter-Gather Queries
- ✅ Client SDKs (Python, JavaScript, Rust)
Neu hinzugefügt (PKI-Layer):
- ✨ X.509-basierte Shard-Identität
- ✨ mTLS für alle Shard-Verbindungen
- ✨ Signierte Rebalancing-Operationen
- ✨ Operator-Zertifikate für Admin-Tasks
- ✨ Certificate Revocation (CRL)
- ✨ PKI-Audit-Trail
Prinzip: Kein Shard vertraut einem anderen ohne Verification
Implementierung:
- Mutual TLS: Beide Seiten verifizieren Zertifikate
- Certificate Extensions: shardID, datacenter, capabilities
- Capability-Based Access Control: Nur erlaubte Operationen
- Signed Requests: Replay-Protection via Nonce+Timestamp
- CRL-Checking: Revoked Certificates werden abgelehnt
| Bedrohung | Mitigation |
|---|---|
| Kompromittierter Shard | Certificate Revocation (CRL) |
| Man-in-the-Middle | mTLS + Signed Requests |
| Unauthorized Rebalancing | Operator-Certificates |
| Certificate Theft | Encrypted Keys (Passphrase/HSM) |
| CA-Compromise | Offline Root-CA, HSM-backed |
- Root CA erstellen (offline, HSM-backed)
- Intermediate CAs (Cluster, Operator, Client)
- Certificate-Generation-Tool
- X.509-Extensions-Parser
- PKI-Shard-Discovery Implementation
- MTLSClient Implementation (Boost.Beast + OpenSSL)
- Signed-Request-Protokoll
- Integration mit ShardRouter
- etcd-Integration mit mTLS
- URN-Parser & Consistent Hashing (aus infrastructure_roadmap.md)
- PKI-gesicherte Shard-Zuordnung
- Scatter-Gather mit mTLS
- Performance-Benchmarks
- Operator-Zertifikate
- Signierte Rebalancing-Operations
- Zero-Downtime Rebalancing
- Audit-Logging
Total: 8 Monate mit 2-3 Entwicklern
enum class PKIAuditEvent {
CERTIFICATE_ISSUED,
CERTIFICATE_REVOKED,
MTLS_CONNECTION_SUCCESS,
MTLS_CONNECTION_FAILED,
SIGNATURE_VERIFIED,
SIGNATURE_FAILED,
CAPABILITY_DENIED,
REBALANCE_INITIATED
};Prometheus Metrics:
themis_pki_events_total{event="MTLS_CONNECTION_SUCCESS"}
themis_certificate_expiry_days{shard_id="shard-001"}
themis_crl_size_bytes
# Prometheus Alert Rules
- alert: CertificateExpiringSoon
expr: themis_certificate_expiry_days < 30
severity: warning
- alert: CertificateRevoked
expr: themis_pki_events_total{event="CERTIFICATE_REVOKED"} > 0
severity: criticalBestehende Dokumentation:
-
infrastructure_roadmap.md- URN-basiertes Sharding (Foundation) -
pki_integration_architecture.md- VCC-PKI Grundlagen -
security/key_management.md- Schlüsselverwaltung -
encryption_strategy.md- End-to-End-Verschlüsselung
Neue Komponenten:
-
include/sharding/pki_shard_certificate.h- X.509-Extensions -
include/sharding/mtls_client.h- mTLS HTTP-Client -
include/sharding/signed_request.h- Request-Signatur-Protokoll
Diese Strategie kombiniert:
- ✅ URN-basiertes Sharding (aus infrastructure_roadmap.md)
- ✅ VCC-PKI-Integration (aus pki_integration_architecture.md)
- ✅ Zero-Trust Security (mTLS + Signed Requests)
- ✅ Operator-Controls (Certificate-based Authorization)
Ergebnis: Enterprise-ready, security-first distributed database mit horizontal scaling
Nächste Schritte:
- Review & Approval
- Resource-Allocation (2-3 Engineers)
- PKI-Setup (CA-Hierarchie)
- Phase 1 Kickoff
- 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