【必読】データ処理の真髄!「The Dataflow Model」の現代的再解釈
The Dataflow Model Revisited
The Dataflow Model Revisited
分散システムやストリーム処理の基盤となる名論文「The Dataflow Model」を現代の視点で再検証した最新の論文が公開されました。データパイプライン構築に携わるエンジニアなら、ぜひ押さえておきたい一冊です。詳細は以下のリンクからPDFを参照してください。PDF: https://www.vldb.org/pvldb/vol19/p4953-fernandez-moctezuma.pdf
10年ほどストリーミングの分野で研究開発をやってきた(https://scholar.google.com/citations?user=Rdf5OIYAAAAJ&hl=en 参照)。ストリーミング専業から離れて大規模データウェアハウスの汎用的な問題に取り組むようになった今、自分もこう結論付けている。結局、分析にはSQLをデフォルトで採用するのが一番だし、データベースというレンズを通してストリーミングを捉えるのが分析の考え方として最適だ、と。
ストリーミングのプログラミング「モデル」自体は今でも非常に興味深く、強力だと思ってる。かつては、高スループットかつ低遅延な超並列システムをエレガントに構築する手法として、もっとメインストリームになるだろうと考えていた。でも現実はそうならなかったし、今後もそうなることはないだろうな。既存のプログラミング言語とモデルで十分回せてるし、それで事足りてるみたいだ。
以前はDataflowやApache Beamにめちゃくちゃハマってて、論文を印刷してデスクに置いてたし、書籍まで持ってたよ。イベント時間と処理時間の区別や、完全性に依存しないという考え方は正しかったと思うし、なぜそれが受け入れ難い概念なのかを深く掘り下げた点も素晴らしい。未だにアンバウンデッド(無限)ストリームのトリガーについて考えると頭が痛くなるけど、テーブル中心のモデルに落ち着いたのは嬉しいよ。ただ、Spannerのアイデアや、メッセージバスとしてのデータベース、あるいは行ごとの整合性情報、つまりインデータベースなCQRSの考え方をもっと取り入れても良かったんじゃないかと思う。素晴らしい論文だね。
この論文はずっと隠れた名著だと思ってる:https://www.vldb.org/conf/2002/S07P01.pdf
ストリーム処理を「クエリとデータの結合」と見なして、内部的にはすべてが互いにプローブし合うマテリアライズドビューであると捉えているんだ。
著者が最終的に概念として同じ場所に辿り着いたのは興味深いね。
ストリーミングはマシンコストも人件費も高い割に、ほとんどのアプリケーションにおいてメリットがかなり薄いんだよね。まあ、Googleのエンジニアも昇進しなきゃいけないからさ、わかるでしょ?
分割(Splitting)
これ、BeamのAPIにずっとあってほしいと思っていた機能で、ドキュメントに含まれていて嬉しいよ。非常に大きなCSVファイルみたいに、単一の関数では処理しきれない、一度に処理できない要素も存在するからね。後にSplittable DoFnとしてサポートが追加されたけど、実装によって対応状況がバラバラだったんだ。
TLDR:15年前はSQLを避けてストリーミング専用の言語を作った。今日、業界は「鮮度」やタイムラグの保証を伴うSQLマテリアライズドビューこそが、正しいメンタルモデルであると結論付けた。