このトピックでは、従来のデータウェアハウスからリアルタイムデータウェアハウスへのビジネス処理の技術的なフレームワーク変換と、リアルタイムデータウェアハウスの利点について説明します。 これにより、適切なデータウェアハウスを選択できます。
背景情報
情報技術の発展とインターネットの普及により、企業はビジネスの適時性に重点を置いています。 特にデータ分析の分野では、企業はリアルタイムまたはほぼリアルタイムのデータに対するより高い要件を持っています。 データウェアハウスシナリオでは、実質的なビジネスデータの処理が従来のバッチモードから増分ストリーミングを使用するリアルタイムモードに変換され始めています。 したがって、リアルタイムデータウェアハウスを構築することは、データ分析にとって重要なタスクとなっている。
リアルタイムデータウェアハウスの構築には、次の問題点があります。
従来のバッチ処理モードでリアルタイムデータウェアハウスを使用する場合、2つの異なるアーキテクチャ間でコードを再利用することは困難です。 これにより、開発とO&Mのコストが増加します。
データウェアハウスでデータをバッチ処理する場合は、複雑なスケジューリング方法を実装するためにスケジューリングシステムが必要です。 バッチ処理モードは完全なデータを処理する必要があります。 その結果、データの適時性を達成するための費用対効果は低い。
純粋なストリーム処理では、大規模なオフラインディメンションテーブルとの結合、テーブルのマルチレイヤネスティング、履歴データのバックトラックなど、複雑なビジネスシナリオを実装できません。
ほとんどのビジネスシナリオでは、複数のシステムが連携して環境を構築してデータを抽出する必要があり、その結果、O&Mが複雑になります。問題が発生すると、多数のモジュールが関与し、根本原因を特定するためにさまざまな新しい知識を深く理解する必要があります。 これにより、トラブルシューティングのコストが増加します。
上記の問題点に対処するために、AnalyticDB for PostgreSQLは、リアルタイムのマテリアライズドビューに基づいてストリーム処理とバッチ処理を統合するエンドツーエンドのリアルタイムデータウェアハウスソリューションを提供します。 このソリューションは、1つのデータコピー、1つの書き込み操作、および1つのシステムを使用して、データウェアハウスでのリアルタイムデータソースのインポートからリアルタイム分析までのプロセス全体を実装できます。
技術アーキテクチャ
リアルタイムデータウェアハウスの構築には、リアルタイムデータ書き込み、リアルタイムデータ処理、およびリアルタイムデータ分析の3つのステップが含まれます。 単純なビジネスプロセスに、累積注文数の統計などの少量のデータが含まれる場合、ストリーム処理エンジンを使用してビジネスプロセスを実装できます。 ビジネスプロセスに大量のデータ、非標準データ形式、複雑なコンピューティングロジック、または中間テーブルへの依存度が高い場合は、運用データストア (ODS) 、データウェアハウス詳細 (DWD) 、データウェアハウスサービス (DWS) 、およびアプリケーションデータサービス (ADS) レイヤーを含むデータウェアハウスの階層アーキテクチャを考慮する必要があります。 AnalyticDB for PostgreSQLは、バッチデータウェアハウスの階層アーキテクチャとリアルタイムのマテリアライズドビューを統合して、リアルタイムデータウェアハウスの機能を実装し、データの適時性要件を満たすことができます。
ほとんどの場合、ビジネスプロセスは次の手順を使用して実装できます。まず、マルチソースデータ (リアルタイムデータとバッチデータ) をリアルタイムデータウェアハウスにリアルタイムで高性能に並列に書き込みます。 次に、データウェアハウスでリアルタイムのマテリアライズドビューを使用して、データクレンジング、フィールド変換、JOIN、GROUP BY、UNION ALL操作などのリアルタイムの増分データ処理を実行します。 次に、リアルタイムの具体化されたビューに基づいて、抽出、変換、ロード (ETL) 操作から結果セットが生成されます。 最後に、アドホッククエリ、レポート表示、リアルタイムダッシュボードなど、リアルタイムのマテリアライズドビューでデータ分析を実行します。
リアルタイムデータ書き込み: さまざまなデータ形式と包括的なトランザクション処理機能をサポートし、高性能と低レイテンシを実現します。 書き込まれたデータはすぐに見ることができます。
リアルタイムデータ処理: リアルタイムマテリアライズドビューに基づいて、増分ストリーミングモードでリアルタイムETL処理を実行します。 標準のマテリアライズドビューと比較して、リアルタイムマテリアライズドビューは、REFRESHステートメントを実行する必要なく、データが変更されたときに自動的かつ増分的にリフレッシュできます。 ベーステーブルに基づいてリアルタイムマテリアライズドビューを作成し、以前に作成したリアルタイムマテリアライズドビューに基づいて別のリアルタイムマテリアライズドビューを作成できます。 ベーステーブルが変更されると、2つのリアルタイムマテリアライズドビューを自動的に増分的に更新できます。 これにより、データ分析用のリアルタイムETL処理チェーンを構築できます。
リアルタイムデータ分析: 単一命令、複数データ (SIMD) 命令セット、コストベースのオプティマイザ (CBO) 、および列指向ストレージエンジンに基づくベクトル化実行エンジンを使用して、効率的なリアルタイムデータ分析を実装します。
メリット
シンプルなアーキテクチャと費用対効果
AnalyticDB for PostgreSQLを使用すると、データをリアルタイムで書き込み、処理、分析できます。 単一のデータウェアハウスシステムを使用して、エンドツーエンドのリアルタイムデータウェアハウスプロセスを構築できます。 AnalyticDB for PostgreSQLは、単一のデータウェアハウスシステム内でデータウェアハウジングの開発とデータ転送を実行できます。 これは、低コストで高い安定性と簡単なO&Mを提供します。 シンプルなアーキテクチャには、次の利点があります。
費用対効果 データの単一のコピーのみが単一のシステムに書き込まれる必要があり、これは最適なコストを達成する。
シンプルな開発プロセス 開発プロセスは、複数のシステムと統合する必要なく、1セットのSQLスクリプトのみを使用して完了できます。
高性能 単純なリンクおよび増分データ処理は、少量のリソースを必要とし、低レイテンシをもたらす。
シンプルなO&M単一のシステムのみを維持する必要があります。 データ例外は簡単に識別および修正できます。
スケジューリングフリーのリアルタイムETLデータ処理
リアルタイムのマテリアライズドビューに基づいてETL処理チェーンを構築し、データウェアハウスのデータ依存関係を処理できます。 データがデータウェアハウスのベーステーブルに書き込まれた後、関連するリアルタイムマテリアライズドビューを使用して、データ依存関係を自動的に処理し、増分データのリアルタイム更新を実装できます。 AnalyticDB for PostgreSQLは、リアルタイムのマテリアライズドビューのチェーンを提供し、追加のスケジューリングシステムを維持する必要なく、リアルタイムのETL処理を実行します。 これにより、リアルタイムデータウェアハウスの構築および保守コストが削減されます。
複雑なSQL文をサポートするリアルタイム処理ジョブ
リアルタイムデータウェアハウスを構築する際の大きな課題は、複雑なバッチ処理ジョブをリアルタイム処理ジョブに変換することです。 バッチ処理ジョブは、ネストまたはマルチテーブルのJOINステートメントなどの複雑なSQLステートメントを使用して実行できます。 しかし、ストリーム処理は、SQL文に多くの制限を課す。
AnalyticDB for PostgreSQLは、従来のデータウェアハウスに基づくリアルタイムのマテリアライズドビューを提供します。 したがって、リアルタイムマテリアライズドビューは複雑なSQL文をサポートできます。 リアルタイムのマテリアライズドビューに基づいて構築されたデータウェアハウスは、コンピューティングウィンドウの制限なしに数十のテーブル間の複雑な結合関係をサポートできます。 ストリームコンピューティングエンジンと比較して、複雑なバッチ処理ジョブは、低コストでリアルタイム処理ジョブに変換できます。 実際のアプリケーションでは、リアルタイムのマテリアライズドビューを使用することにより、かなりの数のバッチ処理ジョブをリアルタイム処理ジョブに変換できます。
データウィンドウの制限なし
リアルタイムマテリアライズドビューはデータベースエンジンに基づいて実装され、データベースエンジンはディスクストレージに基づいて設計されています。 メモリに基づいて設計されたストリーム計算エンジンと比較して、リアルタイムマテリアライズドビューは、特にテーブルに超大量のデータが含まれている場合に、より高いパフォーマンスで大きなテーブル間のリアルタイムJOIN操作を実装できます。 リアルタイムマテリアライズドビューは、データウィンドウの制限なしですべての履歴データのバックトラックもサポートします。 リアルタイムマテリアライズドビューを使用して、履歴データを修正およびバックトラックできます。 生データの更新は、リアルタイムリンクに自動的に反映されます。 実際のシナリオでは、AnalyticDB for PostgreSQLを使用すると、数十のテーブルを結合して、データウィンドウの制限なしで数秒のレイテンシでリアルタイムの増分更新を実装することで、リアルタイムのマテリアライズドビューを作成できます。
統合されたストリームとバッチ処理
リアルタイムのマテリアライズドビューに基づく統合されたストリームおよびバッチ処理をサポートするには、1セットのSQLスクリプトのみが必要です。 リアルタイムマテリアライズドビューが初めて作成されるとき、SQL文はバッチ処理モードで実行され、完全な結果セットが計算されます。 その後、データがリアルタイムで書き込まれると、SQL結果セットは増分的に更新されます。 リアルタイムマテリアライズドビューは、特定のデータのみをリアルタイムで更新する必要があり、残りのデータをスケジュールされた方法で更新する必要があるシナリオもサポートします。 スケジュールされた更新をリアルタイムの更新から除外する必要があるテーブルを設定できます。 必要に応じて、REFRESHステートメントを実行して、スケジュールされた更新で構成されている結果セットをバッチ更新できます。 ストリーム統合とバッチ処理のフローチャートを次の図に示します。
Zero-ETLのサポート
AnalyticDB for PostgreSQLは、zero-ETL機能を提供します。 AnalyticDB for PostgreSQLインスタンスを作成した後、そのインスタンスを使用して、並列データインポート、ETL処理、アドホッククエリ、およびデータ分析をリアルタイムで実行できます。