Streams et Tables
Deux abstractions principales dans KSQL :
Streams : séquences partitionnées et append-only d’événements immutables. Représentent des faits qui se sont produits.
Tables : vues stateful dérivées d’agrégations sur streams. Représentent l’état actuel.
Dualité streams-tables
Les streams et tables sont duaux :
TABLE = aggregate(STREAM)
STREAM = changelog(TABLE)
Un stream peut être agrégé en table.
Une table peut être vue comme le changelog d’un stream.
Exemple
Stream de transactions bancaires :
timestamp | compte | montant
10:00:00 | A123 | +100
10:01:00 | A123 | -50
10:02:00 | A123 | +200
Table des soldes (agrégation) :
compte | solde
A123 | 250
Le stream des changements de la table :
timestamp | compte | solde
10:00:00 | A123 | 100
10:01:00 | A123 | 50
10:02:00 | A123 | 250