前回「一体何だ???」と尋ねたとき、私たちは__Apache Kafka __®プロトコル互換のデータストリーミングプラットフォームを見ていました。
Flinkは2014年12月にApacheプロジェクトとして承認されたため、かなり前から存在していました。ストリーム処理の成長により、ここ数年で関心が高まり、利用が加速しました。Flinkは、社内で立ち上げて使用するにはやや難しいシステムであり、専任のエンジニアリング人材が必要です。
ここでは、Apache Flink の Web ページから引用します。Apache Flink は、無制限および制限付きデータ ストリーム上でステートフルな計算を行うためのフレームワークおよび分散処理エンジンです。Flink は、一般的なすべてのクラスター環境で実行し、メモリ内速度であらゆる規模で計算を実行できるように設計されています。Web サイトに載っている内容をこれ以上繰り返すつもりはありませんので、Flink についてよくわからない場合は、調べてみてください。
DeltaStreamは、Flinkを使わずにFlinkのパワーを提供します。私のテストでは、
サインアップすると、14 日間の無料トライアルが提供されます。「trial_store」というサンプルの Kafka クラスターが起動し、自分のデータの代わりに試すことができます。デモには、試すためのトピックが多数含まれています。[アクション] の下のアイコンを使用すると、トピックを削除したり、トピックに関する詳細やコンテンツを表示したりできます。
後で使用するページビューのトピックの詳細を参考までに示します。
さて、Kafka クラスターとトピックができました。では、興味深いことをしてみましょう。冒頭で述べたように、私が実行できる最も興味深いことは、データベース/ウェアハウス/レイクなどの最終目的地に到着する前に、データが転送中に強化および/またはフィルタリングすることです。そのために、ワークスペースに移動します。
この部分には、少し慣れる必要がありました。DeltaStream のデータベースとスキーマは、単なる組織フォルダです。n 個のデータベースを作成でき、データベース内に n 個のスキーマを持つことができます。スキーマには、STREAM、CHANGELOG、MATERIALIZED VIEW、および TABLE と呼ばれる DeltaStream オブジェクトの定義レイアウトが保持されます。テーブルは、PostgreSQL などのデータベース テーブルに関連し、マテリアライズド ビューは、特定の場所に置くことなく結果セットにデータを保持する方法です。このブログでは、どちらにも触れず、Stream と Changelog に焦点を当てます。
次のスクリーンショットでは、Kafka クラスターでページビュートピックのストリームを作成しています。これは、トピックのテーブル定義を作成するものと考えます。フィールドの名前を割り当て、使用するトピックとデータ形式を指定しました。trial_store クラスターは上部のコンボ ボックスでデフォルトとして設定されているため、完全に正当化する必要はありません。このコマンドを実行すると、TestDB.public の下に表示されます。次に、SELECT * FROM PAGEVIEWS などのクエリを実行すると、下部の結果ペインにデータが表示されます。
次に、ユーザーのトピックをバックにした、UserID 順に並べられた変更ログを宣言します。変更ログはストリームに似ていますが、トピック内のイベントを UPSERT イベントとして解釈できます。イベントには主キーが必要です。DeltaStream は、各イベントを指定された主キーの挿入または更新として解釈します。この場合、変更ログには、性別や興味など、ユーザーごとの特定の詳細が反映されます。
ここからが楽しいところです。useridを結合するキー値として使用して、 users_log変更ログのデータでページビューストリームを拡充する新しいストリームを作成します。これで、2 つの異なるトピックのデータを含むクラスター内の一意のトピックが作成されます。ここから、regionid などを使用してフィルター処理し、そのクエリの結果をデータベース、ウェアハウス、レイクなどの最終宛先に書き込むことができます。これにより、データを着陸させる前に、飛行中のデータを拡充およびフィルター処理できるため、レイテンシが改善され、コンピューティングとストレージのコストが削減されます。
では、DeltaStream とは一体何なのでしょうか? これは、Apache Flink について何も知らなくても、直接操作しなくても、Apache Flink を使用する非常に簡単な方法です。私の例から、Apache Kafka に接続して、データの読み取り、結合、フィルタリングがいかに簡単であるかがおわかりいただけたと思います。現在サポートされている他の接続は、Kinesis、PostgreSQL、Snowflake、Databricks で、ClickHouse と Iceberg もまもなく利用可能になると聞いています。
結局のところ、DeltaStream は Apache Flink を扱うことなく Apache Flink のパワーを提供し、Java の代わりに SQL を使用してそれを実行できます。ストリーミング データを扱っている場合、またはそれを実装しようとしている場合、これは間違いなく非常に賢明で便利なソリューションです。
以下のリンクから、私の他の「What the Heck is…」の記事をご覧ください。
**