「ああ、動画のストリーム配信ね。いやー、こないだなんて、ついつい徹夜でガンダム全話見ちゃって、次の日午前半休しちゃったよ、アハハ」
……喝っ!!!! DB Onlineの読者たるもの、そんなことではいけません! いや、徹夜で動画見まくって午前半休というのは、まったくもって問題ない(注:あくまでも筆者の個人的価値観に基づく)。しかし、データベース技術者たるもの、「ストリーム」といえば動画配信ではなく、むしろあっちの方のストリームをとっさに連想してほしいのです。そう、「あっち」といえば、あっちですよ、最近ビッグデータ周りで話題になってる、あっちの方のストリームですよ……。
ストリームデータ処理ってそもそも何ができるものなの?
というわけで今回は、現在日立が取り組んでいるストリーム、正確に言うと「ストリームデータ処理技術」について、同社の専門家の人たちにあれやこれや聞いてみた。
正直に言うと、筆者自身も偉そうなことを言っておきながら、ストリームデータ処理なるものが一体全体何なのか、実はよく分かっていない。ただ、最近何となく、ビッグデータ絡みでよくストリームという用語を耳にするようになってきて、「ああ、センサーのデータとかをリアルタイムで処理するあれね。ビッグデータで、速くて、凄くて、で、モニョモニョモニョ……」。要は、何となく知ったつもりでいるが、実のところはほとんど分かってないというやつだ。
でも、「高速」「リアルタイム」といったキーワードは、そう的外れでもないと思ってるんですが、どうなんでしょ?
「リレーショナルデータベースに代表される従来のデータ処理は、データをいったん溜め込んだ後に、じっくり時間をかけて分析していました。しかしストリームデータ処理はデータを溜め込むことなく、データが発生している“その場”で即座に分析して、何らかの意味のあるイベントをリアルタイムに発生させるという技術です。つまり、過去に起きたことをじっくり細かく分析するのではなく、『今起きていることを、なるべく早く知りたい』というニーズに応えるためのものですね」
こう説明してくれたのは、日立でストリームデータ処理基盤のソリューションに携わる、ソフトウェア開発本部 第2基盤ソフト設計部 主任技師の田村和則さん。
なるほど、やはり「高速」「リアルタイム」というのは、あながち的外れではなかったみたい。「何らかの意味のあるイベントを発生させる」という部分は何だかよく分からないけど、まあいいや。ストリームデータ処理、大体分かっちゃいましたよ、はい。
とここで、田村さんと同じ部署で、同じくストリームデータ処理のソリューションを担当する横山高広さんがポツリ、
「お客さまのところに製品や事例の説明に行くと、既存のデータベースシステムをストリームに置き換えて高速化するというイメージを持たれる方が多いのですが、実はそうではないんですよね」
ドキッ! そう思ってたんだけど……だって、要はこれまでのデータベースより速いから、リアルタイムで処理できるようになったっていうことなんじゃないの?
「そうではなくて、時々刻々と変わっていくデータ、つまり『時系列データ』を対象に分析をかけるために使われるものなんです」
時々刻々! 「時のな~が~れ~に身を任せ~」。テレサテンの歌声が脳内に流れた次の瞬間、NHKの「時事公論」のTV画面がフラッシュバックし、あやうく昏倒するところでむくりと起き上がり、ええと、ええと何の話でしたっけ?何だか途端に分からなくなってきたぞ。「時々刻々」やら「時系列データ」とやらは、一体何?
「従来のデータ処理は、ある瞬間のデータ、つまり“点のデータ”を対象にしていました。例えば、『人や車がある瞬間にこの場所にいた』といった情報です。でもストリームデータ処理の世界では、こういう“点のデータ”は意味を持たないんです。そうではなくて、ある一定の時間枠の中で取得した“データの集合”に対して分析をかけ、点ではなく“軌跡”を見るのです。例えば、『人や車がその間にどこからどこへ移動したのか』といった情報ですね」(田村さん)
ああ、なるほど。時系列って、そういう意味なんですね。
「確かにストリームデータ技術では、インメモリ処理をはじめとした、高速処理のための個々の要素技術が注目されがちです。しかし実は一番のポイントは、こういう『時系列での分析』ができるところにあるんです。点ではなく軌跡の情報を抽出して、それをイベントという形で上位に通知することで、データの中からこれまでにない新たな意味合いや価値を引き出せるようになります」(田村さん)
そうか、さっきの「何らかの意味のあるイベントを発生させる」というのは、そういうことだったのか。