メインコンテンツまでスキップ
バージョン: 26.x

Adviceの使用

概要

非同期マテリアライズドビューはクエリ結果を事前に計算して保存することでクエリパフォーマンスを向上させますが、各リフレッシュにおいて大きなオーバーヘッドが発生する場合があります。このドキュメントでは、非同期マテリアライズドビューの使用推奨事項を説明します。
マテリアライズドビューのリフレッシュ原則については、Refresh Principles を参照してください。

推奨使用シナリオ

推奨シナリオ

複雑な集計クエリ

  • シナリオ: 複数Tableの結合、複雑な集計関数(例:SUM、AVG、COUNT)、またはウィンドウ関数を含むクエリ
  • 利点: 各実行時に複雑なロジックの再計算を回避

レポート

  • シナリオ: 固定時点(例:毎日深夜)で一貫したスナップショットを必要とするレポート
  • 利点: 全ユーザーが同一時点のデータを参照できることを保証

計算集約的な分析

  • シナリオ: 複雑な数学的計算やデータ変換を含む分析クエリ(顧客生涯価値の計算や予測モデリングなど)
  • 利点: 結果を事前に計算してランタイムのリソース消費を削減

データウェアハウスのスター/スノーフレークスキーマ

  • シナリオ: ファクトTableと複数のディメンションTableの結合(例:売上ファクトTableと商品、時間、地域ディメンションTableの結合)
  • 利点: 結合結果を事前にマテリアライズ化して分析クエリを高速化

Data Lake加速

  • シナリオ: data lakeのクエリはネットワーク遅延とオブジェクトストレージのスループット制限により遅延する場合がある
  • 利点: Dorisのローカルストレージの利点を活用してdata lake分析を高速化

データウェアハウス階層化

  • シナリオ: ベースTableに大量の生データが含まれ、クエリで複雑なETL操作が必要
  • 利点: 多層非同期マテリアライズドビューを構築することでデータウェアハウス階層化を実装

非推奨シナリオ

頻繁に更新されるベースTable

  • シナリオ: ソースTableのデータが非常に頻繁に変更される(例:1分間に複数回の更新)
  • 問題: 非同期マテリアライズドビューは同期を維持することが困難で、リフレッシュコストが高すぎる。代わりに定期的なリフレッシュを検討

単純なクエリ

  • シナリオ: 単一Tableスキャンまたは単純なフィルタリングのみを含むクエリ
  • 問題: 非同期マテリアライズドビューの利点がリフレッシュコストを相殺できない

リアルタイム(1~5分の鮮度)データが必要なシナリオ

  • シナリオ: ビジネス要件で最新データが必要
  • 問題: 非同期マテリアライズドビューはデータの遅延を導入

小規模なソースTable

  • シナリオ: ベースTableに少数のレコード(例:数百行)のみが含まれる
  • 問題: 非同期マテリアライズドビューの最適化効果は無視できる程度

リフレッシュ戦略の推奨事項

非同期マテリアライズドビューは3つの主要なリフレッシュ戦略を提供しており、それぞれ異なるビジネスシナリオとデータ特性に適しています。適切な戦略を選択することは、データの鮮度とシステムパフォーマンスのバランスを取るために重要です。

詳細なリフレッシュ戦略

手動リフレッシュ

動作方式:

  • ユーザーコマンドまたは外部システムのスケジューリングによって明示的にトリガー

適用シナリオ:

  • リアルタイムデータ要件が低いレポートシステム
  • データウェアハウスでの履歴データ分析
  • 特定のビジネスプロセスとの同期が必要なシナリオ
  • 協調的なシステムリソースが必要な大規模データリフレッシュ

メリット・デメリット:

  • メリット: リフレッシュタイミングの完全制御、ビジネスピーク時間の回避
  • デメリット: 追加のスケジューリング管理と、外部ループが継続的にリフレッシュをトリガーすることを防ぐフォルトトレラント性が必要

スケジュールリフレッシュ

動作方式:

  • 固定間隔で自動的にリフレッシュ
  • 最小時間単位:分
  • 初回タスク実行の開始時間を指定可能

適用シナリオ:

  • 定期的なビジネス指標監視
  • 階層化データパイプライン
  • 時間に敏感なレポートシステム
  • 規則的な変動を持つソースデータ

メリット・デメリット:

  • メリット: 予測可能なデータ遅延でスケジュールされたデータ処理
  • デメリット: データ鮮度の制限;関連ビューのリフレッシュシーケンスには手動オーケストレーションが必要

設定時の制約:
準リアルタイム結果を達成するために、すべてのマテリアライズドビューに高頻度のスケジュールリフレッシュを設定することは避けてください。以下の問題が発生する可能性があります:

  • システムリソースの継続的な占有
  • リフレッシュジョブ間のリソース競合
  • 頻繁なpartition/tablet操作によるBEへの重い負荷

トリガーベースリフレッシュ

動作方式:

  • ベースTableデータの変更時に自動的にリフレッシュをトリガー

適用シナリオ:

  • 多層マテリアライズドビューアーキテクチャの上位層ビュー
  • ベースTableの変更が稀なシナリオ

メリット・デメリット:

  • メリット: 高いデータ鮮度と自動化
  • デメリット: リフレッシュストームと予測不可能なシステム負荷を引き起こす可能性

設定時の制約:
以下の場合を除き、基盤マテリアライズドビューにトリガーベースリフレッシュを使用することは避けてください:

  • ベースTableのリフレッシュ頻度が低いことが既知(例:数十分ごとの変更)

組み合わせリフレッシュ戦略の推奨事項

階層化戦略

  • 基盤層: スケジュールリフレッシュ(例:毎時)
  • 中間層: スケジュールまたはトリガーベースリフレッシュ
  • プレゼンテーション層: トリガーベースまたは手動リフレッシュ

ビジネス重要度階層化

  • 重要なリアルタイムビジネスデータ: 非同期マテリアライズドビュー非推奨
  • 通常の分析データ: スケジュールリフレッシュ(日次/時間次)
  • 履歴/アーカイブデータ: 手動リフレッシュ

データ変更頻度への適応

  • 高頻度変更: スケジュールリフレッシュ(長間隔)または手動リフレッシュ
  • 低頻度変更: トリガーベースリフレッシュまたは短間隔スケジュールリフレッシュ
  • バルク変更: 変更後の手動リフレッシュ

リフレッシュ頻度の推奨事項

これらは一般的なガイドラインです。実際の設定では、システムリソース、マテリアライズドビュー数、その他のビジネスリソース使用を考慮してください。

実際のリフレッシュ時間推奨リフレッシュ頻度
< 15s≥ 5分
< 10分≥ 1時間
< 1時間≥ 1日

非同期マテリアライズドビューの主要な考慮事項

  1. 監視: マテリアライズドビューをデプロイした後、メトリクスを通してシステムパフォーマンスを監視してください。非同期マテリアライズドビュー用の追加メトリクスは将来公開予定です。現在はtasksを使用してタスク数、実行状態、期間を確認してください。
  2. 計画: マテリアライズドビューの数、リフレッシュ頻度、クラスターの最大計算能力を計画してください。「マテリアライズドビューを作成するだけでメンテナンスしない」状況を避けてください—これらは本質的に拡張されたETL計算であり、従来のETLと同様にメンテナンスが必要です。
  3. リソース分離: マテリアライズドビューはデータ計算タスクです。必要に応じてリソース分離を実装してください。