English version

← Learning Hub Lektion 12 Dauer: ca. 15 Min. Thema: Latenzstufen & Plattform-Eignung

Ist Databricks das Richtige für 5-Minuten-SCADA-Daten?

Du bekommst alle 5 Minuten Telemetrie aus einem SCADA-System und brauchst am Ende eine Erzeugungsprognose für Solar und Wind. Deine Frage ist genau die, die ein Tech Lead stellen sollte, bevor das Team baut: Ist Databricks dafür das richtige Werkzeug — oder zwingen wir gerade eine Batch-Analyseplattform in eine Rolle, für die sie nie gedacht war?

Diese Lektion gibt dir eine belastbare Antwort, die Belege dahinter und — noch wichtiger — den Denkrahmen, den du bei der nächsten Latenzfrage wiederverwenden kannst.

Die kurze Antwort

Urteil Empfohlen, mit einer Einschränkung

Databricks passt gut für eine 5-Minuten-SCADA-Ingestion, die eine Solar-/Wind-Erzeugungsprognose speist — aber du solltest sie auf der inkrementellen (getriggerten) Stufe bauen, nicht auf der Echtzeit-Stufe. Fünf-Minuten-Daten bedeuten nicht automatisch eine Fünf-Millisekunden-Plattform. Der Fehler, den du vermeiden musst, ist nicht „Databricks zu nutzen“; es ist, für Streaming zu bezahlen, das du nicht brauchst — oder umgekehrt, eine Leitwarten-Entscheidung hinter ein Lakehouse zu legen.

Schritt 1: Trenne die zwei Zahlen, die alle vermischen

„5-Minuten-Daten“ ist eine Aussage über den Ankunftstakt. Über deine Latenzanforderung sagt sie nichts. Beides ist unabhängig voneinander, und die Verwechslung ist die mit Abstand häufigste Ursache überkonstruierter Energiedatenplattformen.

FrageDeine AntwortWas daraus folgt
Wie oft treffen Daten ein?Alle 5 Minuten, je AnlageTrigger-Takt, Batch-Größe, Dateilayout
Wie alt darf das Ergebnis sein?Bestimmt durch die Markt-/Dispatch-FristCompute-Stufe, Kosten, Architektur

Bei einer Erzeugungsprognose lautet die Frist fast nie „so schnell wie physikalisch möglich“. Sie ist ein Kalender: die Intraday-Gate-Closure (Handelsschluss), der Fahrplan, den du beim ÜNB einreichen musst, die Redispatch-Anforderung, die Stunden-Nominierung. Wenn deine Prognose auf jemandes Schreibtisch liegen muss, bevor ein Gate 15 Minuten vor Lieferung schließt, liegt dein Ende-zu-Ende-Budget im Minutenbereich — und genau in diesem Bereich ist Databricks am günstigsten und am einfachsten.

⚠ Die Falle

Teams hören „SCADA“ und „Echtzeit“ im selben Satz und greifen zu dauerhaft laufendem Streaming. Die Rechnung kommt jeden Monat, für immer — unabhängig davon, ob irgendjemand die Prognose schneller liest, als der Markt einen Handel darauf zulässt. Leite dein Latenz-SLA aus der geschäftlichen Frist ab und wähle dann die Stufe — niemals umgekehrt.

Schritt 2: Kenne die drei Latenzstufen, die Databricks tatsächlich anbietet

Databricks hat nicht eine Streaming-Antwort. Es hat drei, mit deutlich unterschiedlichen Kosten- und Komplexitätsprofilen. Zu wissen, welche du gerade kaufst, ist bereits der größte Teil der Architekturentscheidung.

StufeLatenzWie du sie baustCompute
Inkrementell / getriggert Minuten Serverless Job nach Zeitplan mit Trigger.AvailableNow() oder eine getriggerte Lakeflow-Pipeline Startet, verarbeitet den Batch, beendet sich — am günstigsten
Continuous Sekunden Lakeflow-Pipeline im Continuous-Modus Dauerhaft laufendes Cluster — teurer
Real-Time Mode Unter einer Sekunde .trigger(realTime='5 minutes') in Structured Streaming oder Lakeflow Dediziertes Compute, dauerhaft offen gehalten

Die Zahlen hinter dieser Tabelle, direkt vom Hersteller:

Die ehrliche Unschärfe an dieser Stelle

Dein 5-Minuten-Takt liegt exakt auf der Nahtstelle: Der getriggerte Modus ist für „alle 10 Minuten oder langsamer“ dokumentiert, Continuous für „10 Sekunden bis wenige Minuten“. Kein Dokument kann dir sagen, auf welcher Seite du landest. Benchmarke beide gegen deine echte Flottengröße und entscheide anhand gemessener Tageskosten, nicht aus Prinzip. Fang getriggert an — das ist die günstigere Hypothese, die du widerlegen kannst.

Schritt 3: Erkenne die zwei Takte in deiner Pipeline

Das ist die Einsicht, die die Kosten einer Wetter-zu-Strom-Prognose überhaupt tragfähig macht. Dein System hat zwei unabhängige Aktualisierungsraten, und beide auf der schnelleren laufen zu lassen ist reine Verschwendung.

Zwei Takte: langsame NWP-Spur, schnelle SCADA-Spur NWP-Prognose (ICON, ECMWF) alle 1–6 Stunden Silver: Wetter → Anlage Basis-Leistungsprognose SCADA-Telemetrie alle 5 Minuten Bronze → Silver: QC, Verfügbarkeit, Abregelung Nowcast-Korrektur Bias + Persistenz Gold: Prognose je Anlage, je Horizont langsame Spur — viel Compute, selten schnelle Spur — wenig Compute, häufig Kostenregel: Nur die schnelle Spur läuft alle 5 Minuten. NWP-Join, Feature-Aufbau und volles Modell im 5-Minuten-Takt vervielfachen die Kosten ohne jeden Genauigkeitsgewinn.

Numerische Wettervorhersage aktualisiert sich ein paar Mal am Tag. Dein SCADA-Feed aktualisiert sich 288 Mal am Tag. Der 5-Minuten-Pfad sollte nur das tun, was frische Telemetrie überhaupt verändern kann: gemessene Erzeugung, Verfügbarkeit und Abregelungszustand sowie eine Bias-/Persistenz-Korrektur mit kurzem Horizont auf die stehende NWP-getriebene Prognose. Das ist ein kleiner, günstiger, inkrementeller Job — und genau deshalb passt die getriggerte Stufe.

Schritt 4: Wisse, wo Databricks die falsche Antwort ist

Glaubwürdig „nein“ sagen zu können, ist das, was dein „ja“ gegenüber Stakeholdern wertvoll macht. Vier Dinge gehören nicht durchs Lakehouse:

WorkloadEignungWo es hingehört
Abschaltlogik der Turbine, Schutzfunktionen, Abregelungsbefehle Nein SCADA/SPS. Sicherheits- und Regelkreise laufen nie über Analytik.
Protokollterminierung (OPC UA, IEC 60870-5-104, Modbus) Nein Ein Edge-Gateway oder Historian. Databricks liest, was diese veröffentlichen.
Abfragen unter 50 ms pro Request für eine Web-App oder API Nein Ein Serving-Store oder Model-Serving-Endpunkt, gespeist aus Gold — kein Delta-Scan.
Ein Delta-Write pro SCADA-Datensatz beim Eintreffen Nein Am Gateway oder Message Bus bündeln. Jeder Write ist eine Transaktion und eine Datei.
5-Min-Ingest, QC, Feature-Aufbau, Prognose, Historie, Analyse Ja Genau dafür ist das Lakehouse da.

Die Ein-Satz-Fassung für Stakeholder

Databricks ist der Ort, an dem du entscheidest und dich erinnerst. SCADA ist der Ort, an dem du handelst. Wenn eine Maschine auf das Ergebnis reagiert, ohne dass ein Mensch oder ein Markt dazwischensteht, gehört es nicht ins Lakehouse.

Schritt 5: Die empfohlene Bauform

Konkret, für deinen Fall:

  1. Edge → Bus. SCADA/Historian veröffentlicht über ein Gateway nach Kafka / Event Hubs oder legt 5-Minuten-Dateien im Cloud-Storage ab. Databricks spricht keine SCADA-Protokolle.
  2. Bronze. Auto Loader (Dateien) oder die Kafka-Quelle, die Rohereignisse an eine Streaming Table anhängt. Roh bleibt roh — du brauchst es für das Backtesting des Prognosefehlers.
  3. Silver. Deduplizieren, QC anwenden (klemmende Sensoren, Werte außerhalb des Bereichs, Plausibilität des Gondel-Anemometers), Verfügbarkeit und Abregelung kennzeichnen, an die Asset-Hierarchie aus Lektion 2 joinen.
  4. Feature + Scoring der schnellen Spur. Nur die inkrementelle Korrektur. Der schwere NWP-getriebene Pfad bleibt auf seinem eigenen, langsameren Zeitplan (Lektion 3).
  5. Gold. Prognose je Anlage und Horizont, mit model_version und produced_at, als Vertrag nach unten (Lektion 8).

Baue das Ganze als Serverless Lakeflow-Pipeline. Databricks empfiehlt für neue Pipelines ausdrücklich Lakeflow-Pipelines statt selbst gebautem Structured Streaming, weil dir damit das Management der Produktionsinfrastruktur abgenommen wird. [Production considerations for Structured Streaming]

⚠ Serverless-Einschränkung, die dich einholen wird

Auf Serverless Compute werden nur Trigger.AvailableNow() und das veraltete Trigger.Once() unterstützt. Trigger.ProcessingTime(interval) und Trigger.Continuous(interval) nicht — und eine Query ohne expliziten Trigger scheitert mit INFINITE_STREAMING_TRIGGER_NOT_SUPPORTED. Für einen dauerhaft laufenden Stream auf Serverless nimmst du stattdessen eine Lakeflow-Pipeline im Continuous-Modus. [Serverless compute limitations]

Entscheide selbst

Arbeite den Baum unten für deinen eigenen Workload durch. Probiere ihn zweimal: einmal für die Prognose-Pipeline und einmal für etwas, das du versucht sein könntest anzuflanschen — etwa einen Abregelungsalarm.

1. Vom Eintreffen der Daten bis zur nachgelagerten Nutzbarkeit des Ergebnisses: Was ist deine harte Frist?

2. Reagiert irgendetwas automatisch auf das Ergebnis, ohne Mensch oder Marktschritt dazwischen?

3. Was passiert, wenn ein Lauf 10 Minuten zu spät kommt?

Databricks — getriggerte Stufe

Die günstigste richtige Antwort. Serverless Job oder getriggerte Lakeflow-Pipeline, Trigger.AvailableNow(), alle 5–15 Minuten geplant. Das Compute startet in Sekunden, arbeitet den Rückstand seit dem letzten Checkpoint ab und beendet sich. Widerstehe allem Aufwändigeren, bis dich eine Messung dazu zwingt.

Databricks — getriggerte Stufe, mit SLA

Gleiche Bauform, aber Aktualität ist jetzt ein Produktionsthema. Dimensioniere den Job so, dass ein Lauf deutlich innerhalb des Intervalls fertig wird, alarmiere bei veraltetem Bronze und bei überlanger Laufzeit, und lass den nachgelagerten Konsumenten produced_at lesen, damit er den Handel auf einer veralteten Prognose verweigern kann. Wenn Läufe regelmäßig überziehen, wechsle zu einer Continuous-Lakeflow-Pipeline, bevor du zum Real-Time Mode greifst.

Databricks — Continuous-Stufe

Lakeflow-Pipeline im Continuous-Modus auf Serverless. Du kaufst dir ein dauerhaft laufendes Cluster, also begründe die Sekunden: Benenne die Entscheidung, die bei 5 Minuten schlechter ausfällt. Wenn du keine benennen kannst, bist du auf der getriggerten Stufe und bezahlst die Continuous-Stufe.

Kein Lakehouse-Workload

Das bleibt in SCADA, in der SPS oder in einem dedizierten Stream-Prozessor an der Edge. Der Real-Time Mode von Databricks schafft zwar rund 300 ms, aber eine Steuerungs- oder Schutzentscheidung sollte überhaupt nicht von der Verfügbarkeit einer Cloud-Analyseplattform abhängen. Lass Databricks das Ergebnis beobachten, festhalten und analysieren — nicht die Entscheidung treffen.

Verständnis prüfen

Was sollte die Latenzanforderung deiner SCADA-gespeisten Prognose-Pipeline bestimmen?

Richtig. Der Ankunftstakt sagt dir, wie oft du triggerst; die geschäftliche Frist sagt dir, wie frisch das Ergebnis sein muss. Das SLA aus der Frist abzuleiten hält dich von teuren Stufen fern, die du nicht brauchst.
Die Frist gibt den Takt vor. Daten, die alle 5 Minuten eintreffen, bedeuten nicht, dass die Antwort innerhalb von 5 Minuten gebraucht wird — Gate Closure (Handelsschluss), Fahrplaneinreichung oder Dispatch-Entscheidung definieren das echte Budget, und dieses Budget wählt deine Compute-Stufe.

Welche Konfiguration liefert auf Serverless Aktualität im Minutenbereich zu den geringsten Kosten?

Richtig, und es ist die dokumentierte Empfehlung: Ein per Zeitplan ausgeführter Trigger.AvailableNow()-Job ist das kosteneffizienteste Streaming-Muster auf Serverless, wenn Latenz im Minutenbereich akzeptabel ist — das Compute startet in Sekunden, verarbeitet den Batch und fährt herunter.
Es ist der geplante Trigger.AvailableNow()-Job. Real-Time Mode braucht dediziertes Compute, All-Purpose Compute wird für Streaming ausdrücklich abgeraten, und zeitbasierte oder Continuous-Trigger werden auf Serverless gar nicht unterstützt.

Welcher dieser Workloads sollte vollständig außerhalb von Databricks bleiben?

Richtig. Alles, worauf eine Maschine ohne Mensch oder Markt dazwischen reagiert, gehört in SCADA oder die SPS. Das Lakehouse darf den Alarm im Nachhinein festhalten und analysieren, aber die Entscheidung darf nicht von der Cloud-Verfügbarkeit abhängen.
Die Steuerungsaktion fällt aus der Reihe. Retraining, Fehleranalyse und 5-Minuten-Aggregation sind analytische Workloads, die das Lakehouse gut beherrscht — aber ein Abregelungsbefehl, der direkt auf die Anlage wirkt, darf niemals über eine Analyseplattform laufen.

Warum solltest du nicht jeden SCADA-Datensatz sofort beim Eintreffen nach Delta schreiben?

Richtig. Die ACID-Garantie von Delta gilt pro Commit, also bedeuten Writes pro Datensatz auch Transaktionen pro Datensatz und eine Flut winziger Dateien. Bündle am Gateway oder Message Bus und lass einen Micro-Batch genau einen Commit erzeugen.
Es sind die Kosten für Commits und kleine Dateien. Delta nimmt Streaming-Appends problemlos an und Unity Catalog kennt kein Frequenzlimit — das Problem ist, dass ein Write einer Transaktion plus einer Datei entspricht, was die Lese-Performance zerstört und den Wartungsaufwand aufbläht.

Primärquelle

📖 Empfohlene Lektüre

Streaming on serverless compute — Databricks. Das ist die mit Abstand nützlichste Seite für deine Frage: ein expliziter Entscheidungsleitfaden, der Streaming-Anwendungsfälle dem passenden Produkt zuordnet und klar benennt, welche Trigger verfügbar sind und welche nicht. Lies die Tabelle „Choose the right streaming configuration“ und den Abschnitt „Workloads that are not streaming pipelines“.

Anschließend Real-time mode concepts, um genau zu sehen, was du auf der obersten Stufe kaufen würdest — und warum die Dokumentation Medaillon-Workloads davon wegführt.

Wie es weitergeht

Zwei naheliegende Anschlussthemen, beide direkt auf der Mission:

💬 Dein Lehrer ist da

Stell mir Rückfragen zu allem oben. Besonders lohnend: ab welcher Flottengröße die getriggerte Stufe aufhört, günstiger zu sein als Continuous — oder wie du diese Empfehlung für einen Stakeholder formulierst, dem bereits „Echtzeit“ verkauft wurde.


Siehe auch: Architektur-Spickzettel · Lektion 10 — Kosten & Betrieb

Rechtliches: Impressum