Data plane — stores en migratiepad
Afstemming met het platformplan: PostgreSQL = control plane; ClickHouse = telematics history & analytics; Redis = hot state; Kafka/Redpanda = event backbone; OpenSearch = search/audit; S3-compatible = exports en blobs.
Rol per store
| Store | Inhoud | Wanneer introduceren |
|---|---|---|
| PostgreSQL | Users, tenants, devices inventory, sessies, command queue metadata, business config | MVP (huidige repo) |
| ClickHouse | Hoge volumes positie/events, aggregaties, rapporten | v1+ wanneer volume/rapporten het vereisen |
| Redis | Sessions (na Keycloak), rate limits, presence, last-position cache | v1+ |
| Kafka / Redpanda | Ingest events, integratie, async rapporten | v1+ |
| OpenSearch | Zoeken users/voertuigen/audit/support | v1/v2 afhankelijk van feature-prioriteit |
| MinIO / S3 | PDF/CSV exports, firmware hosting, attachments | v1+ |
TSDB-keuze
- Primair aanbevolen: ClickHouse voor analytische telematica en grote historiek.
- TimescaleDB kan waar nuttig zijn voor PostgreSQL-teams en kleinere time-series naast OLTP — geen verplichte tweede TSDB; kies één strategie per omgeving.
Event backbone
- Kafka of Redpanda (Kafka-protocol compatibel).
- Lokale dev: zie
docker-compose.platform-stack.yml(Confluent Kafka + Zookeeper enkel voor development — productie: KRaft of Redpanda zonder Zookeeper volgens vendor).
Migratiepad (huidige repo)
Huidige telematica staat in PostgreSQL (device_positions, device_online, device_ingest_raw). Richting v1:
- Introduceer Kafka-topics voor genormaliseerde positie-events (na parser).
- Schrijf consumers die naar ClickHouse batch-inserten (en Redis voor “last seen”).
- Houd Postgres voor recente operational queries indien nodig, of verminder retentie in Postgres na backfill.
- Geen zware rapportqueries op Postgres-primary — verplaats naar ClickHouse.
OpenSearch
- Niet in de standaard
platform-stackcompose (geheugenintensief). - Productie: cluster volgens OpenSearch-documentatie; zet
vm.max_map_countop Linux-hosts.
Lokale stack starten
docker compose -f docker-compose.yml -f docker-compose.platform-stack.yml --profile platform up -d
Verbind apps via service-namen op het Docker-netwerk (kafka:9092, redis:6379, …) wanneer services aan hetzelfde compose-project hangen.