Dataflow Model: Eine Selbstkritik nach elf Jahren
The Dataflow Model Revisited
Elf Jahre nach der Veröffentlichung des Dataflow-Model-Papers ziehen die Autoren Bilanz: Was hat sich bewährt, was war falsch? Sie räumen ein, dass die Betonung von Fenstern und Triggern überzogen war und dass der Stream-zentrierte Blick eine tiefere Wahrheit verfehlte: Streams und Tabellen sind zwei Sichtweisen auf dasselbe Objekt. Die eigentliche Lösung kam aus der Datenbankwelt: SQL, inkrementelle Sichtpflege und materialisierte Sichten. Der Artikel diskutiert, wie sich das Vollständigkeitsprinzip in Watermarks und snapshot-konsistente Aktualisierung aufspaltete und warum letzteres mehr Nutzer erreichte.
Wir haben uns zu sehr auf die Mechanik des Streamings konzentriert, anstatt zu Ende zu bringen, was die Datenbank-Community begonnen, aber nie abgeschlossen hatte: die Komplexität des analytischen Streamings fast vollständig verschwinden zu lassen.
- janpeuker
Ich war frueher extrem in Dataflow/Apache Beam und hatte buchstaeblich das Paper auf meinem Schreibtisch UND das Buch. Ich stimme zu, dass sie Event-Zeit versus Verarbeitungszeit und 'Verlasse dich nie auf Vollstaendigkeit' richtig hinbekommen haben, und ich liebe es, dass sie tiefer darauf eingehen, warum das einfach schwer zu akzeptieren war. Mir tut immer noch der Kopf weh, wenn ich an unbegrenzte Stream-Trigger denke, und ich bin froh, dass wir zu einem tabellenzentrierten Modell gekommen sind. Ich denke trotzdem, dass es schoen gewesen waere, einige Ideen von Spanner zu uebernehmen, Datenbanken als Message Bus oder Konsistenzinformationen pro Zeile, im Grunde In-Database-CQRS. Grossartiges Paper.
- scott_s
Ich habe ein Jahrzehnt lang im Streaming-Bereich geforscht und entwickelt (siehe: https://scholar.google.com/citations?user=Rdf5OIYAAAAJ&hl=en). Nachdem ich mich von Streaming im Speziellen abgewandt und den allgemeinen Problemen in grossen Data Warehouses zugewandt habe, bin ich auch zu dem Schluss gekommen: einfach standardmaessig SQL fuer alle Analysen verwenden, und die Datenbank-Perspektive ist die beste Art, ueber Streaming fuer Analysen nachzudenken.
Ich denke immer noch, dass Stream-Programmiermodelle extrem interessant und maechtig sind. Aber ich dachte frueher, dass sie irgendwann mehr Mainstream werden wuerden, als eine elegante Art, hochdurchsatz-, niedriglatenz-, massiv parallele Systeme zu programmieren. Das ist nicht der Fall gewesen, und ich denke nicht mehr, dass es das sein wird. Die Leute kommen mit den vorhandenen Programmiersprachen und -modellen zurecht, und das scheint in Ordnung zu sein.