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