Alibaba Cloud リアルタイムデータウェアハウス
自前でビッグデータクラスタを構築すると、複雑でメンテナンスが難しく、デプロイコストも高くなりがちです。Alibaba Cloud の既存プロダクトエコシステムを活用すれば、これらの問題を回避できます。ここでは Alibaba Cloud のマネージドプロダクトでリアルタイムデータウェアハウスを構築する方式を記録します。必要に応じて対応するプロダクトを有効化するだけで、ビジネス要件を満たせます。
直面していた課題
1)基盤のデータベースが大量データを支えきれない。企業の成長にともない、10TB、100TB、さらには PB・EB 級のデータ量は保存しきれず、高速なクエリ応答、データ分析、データマイニングといった作業も支えられなくなります。
2)リアルタイム計算の性能が不足している。ミリ秒級のリアルタイム計算を行える信頼性の高い計算エンジンが必要で、なおかつデータ品質は信頼でき、制御でき、観測可能でなければなりません。
3)データモデルの変更効率が十分に速くない。データモデルの構造を柔軟に調整できず、ビジネスシーンのレポート要件に素早く応えることが困難です。
応用シーン
- Flink とルールエンジンによるリアルタイム風険管理(リスクコントロール)ソリューション
- リアルタイム計算(Flink)とガウスモデルによるリアルタイム異常検知システムの構築
- リアルタイム計算(Flink)でシンプルなリアルタイム推薦システムを作る
リアルタイムデータウェアハウス
全体のデータ開発フロー:

パイプラインを要約すると、データ取得 → データバッファリング → リアルタイム計算 → シンクして格納、という流れです。

コンポーネント選定
Flink
Alibaba Cloud リアルタイムコンピューティング Flink 版
Alibaba Cloud のフルマネージド Flink リアルタイム計算エンジンで、企業が自前で Yarn や Flink のノードを構築したり、煩雑な設定作業を行ったりする必要がなくなります。主な役割は DataHub メッセージバス内のビジネスデータを処理し、データのビジネスシーンに応じて計算結果を後続のパイプラインへ適切に流すことです。Alibaba Cloud のエコシステムに支えられ、メタデータ管理もいっそう便利になります。
DataHub
DataHub の役割はデータバッファリング層に相当し、リアルタイムデータストリームに高性能なストレージとストリーミング転送を提供します。Flink の計算途中で生成される一部の DWD・DWS 層の一時データや下流データは、すべて DataHub を経由してタスクの転送と保存が行われ、メッセージバスの役割を果たします。topic は 1 日あたり TB 級のデータ量を読み書きでき、データの流れは高効率かつ安定しています。このコンポーネントも同様にフルマネージドで、ノード数を気にする必要はありません。
Hologres
リアルタイムデータウェアハウス Hologres - ビッグデータインタラクティブ分析 – 分析とサービングの一体化
Flink の計算が完了すると、対応するレイヤーのデータは Hologres データウェアハウスへ出力・シンクされます。Hologres は行ストア、カラムストア、そしてフィールドに応じたパーティションストレージをサポートしており、大量データの保存問題を解決するとともに、PB 級データのサブセカンド分析を実現しています。Hologres のストレージには Alibaba 自社開発の Pangu 分散ファイルシステム(HDFS に類似)が使われており、アーキテクチャ自体がビッグデータウェアハウスの設計体系に属し、全体として Storage Disaggregation(ストレージとコンピューティングの分離)アーキテクチャを採用しています。計算ノードは水平スケールでき、並列計算能力を高めて、大量データクエリの即時性の問題を解決します。

処理フロー

データウェアハウスのレイヤー設計

ビッグデータの分野では、ODS、DWD、DWS、ADS はデータの組織化と管理に用いられる一般的なレイヤリングの概念で、データの処理と利用においてそれぞれ役割を分担しています。
- ODS(Operational Data Store、オペレーショナルデータストア層):運用系業務に向けたデータストレージ層で、通常はソースシステムの生データを保存し、データの完全性と詳細性を保持します。ODS 層の主な目的は、オンライントランザクション処理やリアルタイムクエリなど、リアルタイムまたは準リアルタイムの運用ニーズを支えることです。この層のデータは通常、大規模な加工や計算を行わず、運用系業務にそのまま使われます。
- DWD(Data Warehouse Detail、データウェアハウス明細層):データウェアハウスに向けた明細データ層で、クレンジング・統合・変換を経たデータを保存します。通常はサブジェクト指向でクエリ可能なデータです。DWD 層のデータは ETL(抽出・変換・ロード)処理を経ており、データ分析、レポーティング、意思決定支援などのタスクを支えます。品質と一貫性が高く、通常はファクトテーブルとディメンションテーブルの形式で組織されます。
- DWS(Data Warehouse Summary、データウェアハウス集計層):集約・サマリー・事前計算を経たデータを保存し、より高いレベルのデータサマリーと分析性能を提供します。DWS 層のデータは通常、集計テーブルや事前計算された指標が中心で、複雑なデータ分析、データマイニング、ビジネスインテリジェンスのニーズを支えます。
- ADS(Application Data Service、アプリケーションデータサービス層):アプリケーションに向けたデータストレージ層で、さらなる加工・計算・最適化を経たデータを保存します。ADS 層のデータは通常、特定アプリケーション向けのデータビューやデータセットで、適合化と最適化を経て、より効率的なデータアクセスと処理能力を提供します。
まとめると、ODS 層は運用系業務にサービスを提供し、生データの完全性を保持します。DWD 層はクレンジング・統合・変換後のクエリ可能なデータを提供します。DWS 層は集計と事前計算を行い、より高いクエリ性能と引き換えにします。ADS 層は特定のアプリケーションに向けて、加工・最適化済みのデータを提供します。
このレイヤー設計にはいくつかのメリットがあります。
- データ処理と管理の分離:データを異なるレイヤーに分けることで、処理と管理の責任も分かれます。DWD 層は生データの抽出・クレンジング・統合を、DWS 層は集約とサマリーを、ADS 層はアプリケーション向けデータサービスを担当し、データ処理はモジュール化されてより柔軟になります。
- データ品質と一貫性:DWD 層は生データの完全性と詳細を保持し、データ品質分析やデータリネージ(トレーサビリティ)に利用できます。DWS 層は集約・サマリー済みのデータを提供し、クエリ性能に優れます。ADS 層は異なるアプリケーションシーンにおけるデータの一貫性と正確性を保証します。
- クエリ性能とアプリケーション開発効率:サマリーと事前計算により、DWS 層はデータ分析と意思決定のプロセスを加速できます。ADS 層はアプリケーション向けのデータサービスとインターフェースを提供し、アプリケーション開発を簡素化して開発効率を高めます。
まとめ
この方式の核心的な考え方は、クラスタ運用をクラウドベンダーに任せることです。DataHub がデータのバッファリングと流通を、Flink がリアルタイム計算を、Hologres がストレージと分析を担い、全パイプラインがマネージドなので自分でノードを維持する必要がありません。ODS/DWD/DWS/ADS のレイヤー設計と組み合わせることで、各層のデータの責務が明確になり、クエリ性能とレポート開発の効率がともに保証されます。ビッグデータクラスタの自前構築に人手を割きたくないチームにとって、これは現実的な道筋です。
COMMENTS