従来のデータウェアハウスアーキテクチャ(Lambda アーキテクチャや Kappa アーキテクチャなど)には、主に以下の 3 つの課題があります。バッチ処理とストリーミング処理を別々のフレームワークで実装するため、開発およびメンテナンスコストが高くなること、複数のデータコピーによるストレージ効率の低下、レイヤー間でロジックやスキーマが揃っていないことによる一貫性の問題です。これらの課題を解決するために、Realtime Compute for Apache Flink ではマテリアライズドテーブルを導入しました。この機能は、データの鮮度(日次から数分単位まで)とクエリ文に基づいて自動的にテーブルスキーマを導出し、継続的に更新されるデータパイプラインを構築します。これにより、バッチ処理とストリーム処理のロジックが統合され、冗長なデータコピーが削減されるだけでなく、エンドツーエンドでデータ処理ロジックとテーブルスキーマの一貫性も確保され、リアルタイムデータウェアハウスのメンテナンスが大幅に簡素化されます。
基本概念
マテリアライズドテーブルの仕組み
マテリアライズドテーブルを作成する際には、FRESHNESS パラメーターと AS <select_statement> 句を明示的に定義する必要があります。Flink エンジンはクエリ結果に基づいてマテリアライズドテーブルのスキーマを自動的に導出し、カタログに登録します。また、FRESHNESS 値に基づいてストリーミングジョブまたはバッチジョブによる更新タスクを自動的に作成します。
マテリアライズドテーブル C の鮮度が 30 分に設定されていると仮定します。そのソースであるマテリアライズドテーブル A が更新されると、Flink は 30 分以内にマテリアライズドテーブル C を可能な限り速やかに更新しようと試みます。マテリアライズドテーブル C のダウンストリームにあるマテリアライズドテーブル(E や F など)の鮮度は、マテリアライズドテーブル C の鮮度の正の整数倍(例:60 分または 90 分)である必要があります。鮮度の値を X 分から Y 時間に増やす(上限は 1 日)ことで、更新頻度が低下し、リソース消費を抑えることができます。
利用シーン
バッチ処理とストリーム処理を統合することにより、マテリアライズドテーブルは以下のユースケースにおいて顕著な技術的およびコスト面のメリットを提供します。
既存データのバックフィル
データ伝送遅延などの問題により、最終的なデータが部分的に歪むことがあります。従来は、このような既存データを修正するにはバッチジョブが必要でした。マテリアライズドテーブルでは、オンデマンドでの更新機能により、特定のマテリアライズドテーブルおよびそのすべてのダウンストリーム依存テーブルの更新を手動でトリガーできます。
データ処理ロジックおよびテーブルスキーマの統一
Lambda アーキテクチャでは、既存データとリアルタイムデータが別々のシステムに格納されるため、それらの処理ロジックおよびデータをホストするテーブルのスキーマを揃えることが困難です。マテリアライズドテーブルを使用すると、データは単一のコピーのみが保存されるため、複雑な結合や計算が不要になります。この機能により、ストレージ効率が向上するだけでなく、バッチ処理とストリーム処理のロジックが整合し、既存データとリアルタイムデータをホストするテーブルのスキーマも統一されます。
柔軟なデータ鮮度を持つ動的ダッシュボードの構築
動的ダッシュボードでは、ビジネスシナリオによって異なるデータ鮮度が求められることがよくあります。マテリアライズドテーブルでは、鮮度の値を変更することで、日次から数秒単位まで簡単に更新間隔を調整できます。これにより、別々のリアルタイムパイプラインを構築・維持する必要がなくなります。
マテリアライズドテーブルの使用
参考文献 | 説明 |
このトピックでは、マテリアライズドテーブルの作成方法、既存データのバックフィル方法、マテリアライズドテーブルのデータ鮮度の変更方法、およびマテリアライズドテーブルのデータリネージの確認方法について説明します。 | |
このトピックでは、マテリアライズドテーブルと Apache Paimon テーブルを使用してストリーム・バッチ統合型データレイクハウスを構築する方法について説明します。また、マテリアライズドテーブルの鮮度を調整してバッチ実行モードからストリーミング実行モードに切り替え、リアルタイムデータ更新を実現する方法についても説明します。 |
参考資料
Apache Paimon は、バッチ処理およびストリーミング処理の両方でデータを処理できる中央集権型のレイクストレージプラットフォームです。Realtime Compute for Apache Flink で Apache Paimon テーブルを使用して、Object Storage Service (OSS) などのサービスに基づくデータレイクを迅速に構築できます。詳細については、「Paimon によるストリーミングレイクハウス」をご参照ください。