HUOXIU

百度のワンストップデータセルフサービス分析プラットフォーム(TDA)構築

出典: Baidu Geek Talk
著者 | いつか

導入
導入
この記事では、主にビジネスインテリジェンス(BI)とチューリングデータ分析(TDA)の概念とアプリケーションを紹介します。BIは、データを収集、整理、分析、および提示することで、企業がより良い意思決定と戦略計画を立てるのに役立ちます。しかし、従来のBI構築アプローチには、ビジネスニーズの変化に応じて再開発が必要になることや、基礎となるデータの分析効率が低いなどの問題があります。そのため、ワンストップセルフサービス分析プラットフォームであるTDAが登場しました。詳細なデータに基づいて、分析トピックに従って公開データセットを構築し、ユーザーが分析を自由にドラッグアンドドロップしてワンクリックで結果を保存し、他のユーザーと共有することもできます。ただし、TDAの構築には、包括的な分析ディメンションと指標、正確なデータ定義、クエリパフォーマンスなどの課題もあります。これらの課題に対処するために、包括性、正確性、効率性、速度という目標を提案し、プロセスメカニズム、機能構築、MPPデータエンジンを通じてこれらの目標を達成します。

全文は 5795 語から成り、読むのに 15 分かかると推定されます。

オタクトーク

01

背景と目的

BI(ビジネスインテリジェンス)は、データの収集、整理、分析、提示を通じて、企業が競争優位を維持し、より優れたビジネス上の意思決定と戦略計画を策定するのに役立ちます。データの収集と整理のプロセスはデータウェアハウスの構築であり、データの分析と提示は視覚化分析プラットフォームの構築です。
業界で一般的な BI 実装アプローチは次のとおりです。企業は特定のメトリックの変化を表示することを要求し、データ プラットフォームにリクエストを送信します。データ開発では、ODS > DWD > DWS > ADS の順にデータをレイヤーごとに構築します。カスタマイズされた ADS 結果テーブルが開発され、Palo/MySQL に保存されます。最後に、複数のチャートが設定され、ビジネスでの表示用にレポートに保存されます。このアプローチは、ビジネスのデータ視覚化ニーズを満たしますが、次の 2 つの問題に直面します。1. ビジネス データ要件が変更されると、ADS 結果テーブルを再開発する必要があり、開発リソースが繰り返し消費されます。2. このアプローチは、ビジネスのデータ視覚化ニーズにのみ対応しています。基になるテーブルは現在のチャートのデータのみを含む集計テーブルであるため、変動の理由をさらにドリルダウンして分析することは困難です。分析には詳細データをダウンロードして Excel などの方法で分析する必要があり、非効率的です。
TDA (Turing Data Analysis) は、BI における長い分析チェーンの問題を解決するために設計されたワンストップのセルフサービス分析プラットフォームです。
TDAアーキテクチャはDWD詳細ワイドテーブルを基盤として構築され、分析テーマに応じて公開データセット(1日数千万点のデータポイント)が構築されています。ユーザーは公開データセットを自由にドラッグ&ドロップして分析することができ、分析結果を個人ダッシュボードに保存したり、ワンクリックで公開ダッシュボードとして公開して他のユーザーと共有したりできます。ユーザーは公開ダッシュボードで変動傾向を確認し、可視化分析ページにドリルダウンして変動原因の探究を継続することで、「傾向の把握、ディメンションの内訳、詳細の確認」という3つの分析をワンストップで完了できます。
次の図は、TDA 構築の全体的なプロセスを示しています。
この開発アプローチには、いくつかの課題もあります。

1. 分析の次元と指標は包括的である必要があります。そうでない場合、複数のデータセットを構築する必要があり、以前のレポート作成の問題と同様に、多数の散在したデータセットが生成されます。

2. データは正確かつ信頼できるものでなければなりません。

3. 1 日あたり数千万のデータ ポイントが存在するため、クエリのパフォーマンスは大きな課題となります。

上記の課題に対応して、効率的な分析に対するビジネスの需要を満たすための対応する目標も設定しました。

1. 包括的(分析の次元と指標は包括的で、ビジネス ニーズの 80% 以上をカバーする必要があります)。

2. 正確(一貫した基準と正確なデータ)

3.効率(データ出力時間T+10h)

4. 高速(10 秒以内に 10 億のデータ ポイントをクエリ)。

TDA プラットフォームは、プロセス メカニズムと機能開発を通じてデータセット構築の包括性、正確性、効率性を確保し、MPP データ エンジンを組み合わせてクエリ パフォーマンスを保証し、BI の視覚化ドラッグ アンド ドロップ、シナリオ分析、セルフサービス モデリング機能を通じてユーザーの分析効率を向上させます。

オタクトーク

02

技術的解決策

上記の分析に基づき、TDAの製品ポジショニングは、ユーザーがワンストップでセルフサービスクエリを実行できるBIプラットフォームです。ユーザーはデータセットを自由にドラッグ&ドロップし、視覚的なデータ分析を行い、コアダッシュボードを構築できます。TDAは、以下の観点から、ユーザーがワンストップでクエリと分析を実行できるエクスペリエンスを実現します。

ビジネスダッシュボードの反復効率向上 (セルフサービス) : データレポートの反復モードが変更され、PM の要求提出と RD のスケジュール設定モードから、PM/運用のセルフサービス操作 (ダッシュボードの作成/データ分析) に徐々に移行しています。

データの洞察と分析の効率向上 (超高速) : 1 回のデータクエリに必要な時間が数分から数秒に短縮され、指標変動分析の効率が 20 倍向上し、単一の指標変動のエンドツーエンドのアトリビューション分析が 2 時間から 5 分以内に短縮されます。

ワンストップセルフサービスビジネス分析(ワンストップ) :データ傾向の観察、ディメンションドリルダウン分析、詳細エクスポートなどの機能を可能にし、データ監視とデータ分析の統合エクスペリエンスを実現します。

この製品の機能マトリックスは次のとおりです。

1. データ ソース アクセス: 企業は TDS を使用して計算エンジンを通じて上流のチューリング テーブル データを計算し、そのデータを ClickHouse/MySQL/Palo などのエンジンに書き込み、直接接続を通じてアクセスします。または、企業が独自の Palo/MySQL データ ソース アクセスを提供します。

a. データ ソース管理: データ ソースに対する CRUD 操作、および ClickHouse/MySQL/Palo などのエンジン用のドライバーの適応。

2. データモデリング:データソースに接続した後、SQLを記述するか、生のテーブルを直接使用することで、データを製品にロードできます。ただし、これらのテーブルを分析可能なデータセットに変換するには、通常、簡単な二次処理が必要です。

a. データセット管理: CRUD 操作、データ プレビュー、スキーマの表示、ワンクリックの視覚化分析が含まれます。
b. データセット フィールド管理: CRUD 操作、フィールドの並べ替え、カスタム フィールドなど。
c. データセット カテゴリの管理: カテゴリ、カスタム並べ替えなどに応じてフィールドを追加、削除、変更、クエリします。
d. データセット ディレクトリの管理: データセットの追加、削除、変更、クエリ、およびカスタム並べ替え。

3. データ分析: ユーザーはデータセットに基づいてインジケーター、ディメンション、フィルターを自由にドラッグ アンド ドロップし、適切なチャートの種類とシナリオ分析方法を選択して分析と計算を実行できます。

a . データ構成: データセットの切り替え、カスタムフィールドの追加
b. グラフの構成: 表、折れ線グラフ、棒グラフ、円グラフなどのさまざまなグラフの種類の構成、凡例の色設定、データ形式の設定など。
c. シナリオ分析: 日次平均、前年比、前月比、パーセンテージ、合計など、さまざまなシナリオ分析機能をサポートします。
d . 帰属分析: 自己啓発的帰属分析能力
e. インタラクティブ分析: ドリルダウン分析など

4. データアプリケーション: ユーザーは分析結果をダッシュ​​ボードに保存したり、サードパーティのプラットフォームに埋め込んだり、大画面に保存したり、インテリジェント分析に直接使用したりできます。

a. ダッシュボード管理: ダッシュボードの CRUD 操作、カスタム並べ替え、公開と廃止、データのエクスポート、アラートのサブスクリプション。
b. 埋め込み分析: iFame 埋め込みや SDK 埋め込みなどの複数の埋め込みモード。
c. 大画面:リアルタイム大画面
d.インテリジェントな分析: LUI 会話分析


2.1 全体設計

TDA の全体的なアーキテクチャを下の図に示します。
全体的なプロセス: ユーザーがクエリを開始すると、サーバーはコンテキストを均一にクエリし、クエリ オブジェクトを構築します。基盤となるエンジンはローカル方言に適応し、統一されたデータ形式を返しますその後、フロントエンド レンダリング フレームワークがチャートの種類に応じてデータを適応させてレンダリングします。

サーバー側:

1. 統合クエリ コンテキスト: 将来的に他のチャート機能を拡張するときに共通機能の再利用を容易にするために、統合クエリ コンテキストが設計されています。

2. クエリ ビルダー: フロントエンドから送信されたリクエスト パラメータに基づいて、クエリ オブジェクトを構築します (テーブルのページ区切り用に 2 つのクエリ オブジェクト、ページ区切り用に 1 つ、カウント用に 1 つなど、複数のオブジェクトが存在する場合があります)。

3. クエリコネクタ:

a. 現在、SQLクエリを構築するエンジン(MySQL、Palo Alto、ClickHouseなど)に対応するには、SQLコネクタのみ利用可能です。エンジンによって構文や機能が異なる場合がありますが、エンジンルールの設定によって適応が実現されます。

b. 将来的には、非 SQL クエリに対応するために他のコネクタが追加される可能性があります。

4. キャッシュ書き込み: クエリのパフォーマンスを確保するために、ユーザーが初めてアクセスしたときに書き込むか、Celery のスケジュールされたタスクを通じてキャッシュを事前加熱するという 2 つの書き込み方法があります。

5. データセット モジュール: データ サポートを提供し、基礎となるデータ ソースとのリンクを確立してデータの品質を確保します。

6. システム セキュリティ モジュール: サブスクリプション、早期警告、アナウンスによりデータの早期警告機能が有効になり、共有、公開、承認によりデータ フローの効率が向上し、管理センターと権限によりデータの基盤となる管理と権限のサポートが提供されます。


フロントエンド:

1. コンポーネント ライブラリ: 構成解析、さまざまなチャート レンダリング コンポーネント、フィルター コンポーネント、およびカスタム コンポーネント機能を提供します。

2. インタラクション: ドラッグ アンド ドロップ エディター、ドリルダウン リンク、補助ショートカット機能、キャンバス機能、その他のイベント インタラクションなどのページ インタラクション機能をカプセル化します。

3. アプリケーション: ダッシュボード、大画面など、さまざまなユーザーや使用シナリオに合わせてさまざまな視覚化アプリケーションを有効にします。


2.2 詳細設計

2.2.1 コアクエリ
モデリングに公開データセットを使用し、「傾向、ディメンション、詳細」の 3 つの分析アプローチを実装するワンストップ セルフサービス BI は、次のような多くの課題に直面しています。

  • マルチソースデータ、マルチチャート表示、マルチシナリオ分析・計算:BIシステムの基盤となるデータソースエンジンは単一種類ではありません。データソースを柔軟に拡張し、豊富なチャート表示スタイルをサポートするためには、前月比や日次平均といった一般的な分析機能もサポートし、様々なシナリオにおける分析・計算ニーズに対応する必要があります。

  • 数千万のデータポイントを数秒でクエリ:公開データセットの構築方法は分析を容易にする一方で、新たな課題も生み出します。毎日数千万のデータポイントを処理することは、クエリパフォーマンスにとって大きな課題となります。

上記の問題に対処するために、対応するソリューションが開発されました。

  • 統合クエリ: 統合クエリ コンテキスト、クエリ オブジェクトの構築、基盤となるエンジンの方言の適応、統合データ形式の戻り、およびフロントエンド レンダリング フレームワークがチャートの種類に応じて適応およびレンダリングされます。

  • クエリの最適化:Ⅰ> キャッシュ + 自動ロールアップ、一般的なダッシュボード リクエストの 70% をカバーします。Ⅱ> エンジン側の集計機能を最大限に活用するための SQL クエリ構築の最適化、Ⅲ> マルチコルーチン応答による複数ドメインからの同時リクエストの処理。

統一調査:

プラットフォーム ユーザーの統合クエリ プロセスは次のとおりです。

1. ユーザーは、ページ上で自由にドラッグ アンド ドロップして分析できます。データセットを切り替えたり、さまざまなグラフの種類を切り替えたり、インジケーター、ディメンション、フィルター、クエリをドラッグしたりできます。また、高度なシナリオ分析機能を使用したい場合は、ワンクリックで構成を切り替えることができます。

2. フロントエンドリクエストは、データソース、クエリオブジェクト、戻り値形式を含む統合クエリコンテキストで処理されます。クエリオブジェクトは、基本的な指標、ディメンション、フィルタリング情報に加え、前年比・前月比、日次平均といった高度な分析設定もカプセル化します。

3. 統合認証サービス: ダッシュボードとデータセットの二重認証のカーネルに基づいて、行と列の権限のよりきめ細かい権限制御もサポートします。

4. クエリオブジェクトの構築:まず、指標、ディメンション、フィルタートリプルに基づいて基本的なSQL構築(集計、グループ化、フィルタリング)を完了します。次に、ソートルールに従ってソートロジックを組み立てます。一部の高度な分析オプション(前月比、日次平均など)については、追加の組み立てロジックを追加します。次に、ページネーションを処理します。プロセス全体を通して、方言の適応が必要です。データのクエリでは、異なるエンジンリンカーに従って、異なるデータベース(MySQL、Palo Alto、ClickHouseなど)にクエリが実行されます。

5. データのクエリと処理: リンカーを介してデータをクエリした後、データを処理します (日付形式の処理、折れ線グラフのピボットなど)。

6. キャッシュ: 処理されたデータはキャッシュに書き込まれます。または、クエリ中にキャッシュがヒットした場合は、キャッシュされたデータが読み取られ、直接返されます。

7. フロントエンドレンダリングフレームワークの統一レンダリング:統一されたデータ形式を返し、フロントエンドでチャートやスタイルなどの適応とレンダリングを完了します。


クエリの最適化: Ⅰ> キャッシュ + 自動ロールアップ、一般的なダッシュボード リクエストの 70% をカバーします。

1. 2つのキャッシュ方法:

  • 最初のクエリ: ユーザーが初めてアクセスすると (キャッシュ ペネトレーション)、データベースに対してクエリが実行され、キャッシュに書き込まれます。

  • オフライン タスクの予熱: パブリック ダッシュボードのチャート レコードをスキャンし、チャートの要求をシミュレートして (1 回あたり 500 回以上の更新)、キャッシュを強制的に更新します。

2. 自動巻き

過去のクエリから得られたトリプル(インジケーター、ディメンション、フィルター)に基づいて上位テーブルが作成されます。クエリが上位テーブルにヒットすると、取得されるデータ量が大幅に削減され、パフォーマンスが向上します。


クエリの最適化:Ⅱ> SQL クエリの構築を最適化し、MPP アーキテクチャ エンジン (ClickHouse/Palo など) の集約機能を最大限に活用します。

公開データセットの分析シナリオでは、データを取得した後にメモリ内で集計計算を実行することはほぼ不可能です(例:(a + b)/c は、詳細データ a、b、c に基づく集計計算が必要です)。エンジン側 MPP アーキテクチャのクエリ機能を活用して集計計算を抽出し、エンジン側で実行する必要があります。例えば、月次集計を実行する場合、データ量は数百億のデータポイントに及びます。エンジン側で集計計算を実行すると、データ量は数十分の1に削減され、パフォーマンスは数倍向上します。

クエリの最適化: III> 複数のドメインからの同時要求と複数のコルーチンからの応答を処理します。

1. ブラウザの同時実行制限 6 : 複数のドメインを使用することで、チャートのリクエストが他のリクエストに分散され、プラットフォームのスムーズなインタラクションが保証され、チャートのリクエストの同時実行性が向上し、全体的なパフォーマンスが向上します。

  • オペレーティングシステムのポートリソースについて:PCには合計65,536個のポートがあり、1つのTCP接続(HTTPもTCPです)が1つのポートを占有します。オペレーティングシステムは通常、ポート制限がすぐに使い果たされるのを防ぐため、外部からのリクエストに対して全ポートの約半分を開放します。

  • 同時実行性が高すぎるとコンテキストスイッチが頻繁に発生し、パフォーマンスの問題が発生します。各スレッドは1つのHTTPリクエストを処理するため、同時リクエスト数が多いとスレッドスイッチが頻繁に発生する可能性があります。スレッドのコンテキストスイッチは必ずしも軽量なリソースではありません。そのため、この取り組みは逆効果になる可能性があります。そのため、リクエストコントローラは接続プールを使用して以前の接続を再利用します。接続プールは、ドメインごとに最大4~8個の接続を持つものと想定できます。接続プール全体が使用されると、後続のリクエストタスクはブロックされ、利用可能な接続の実行を待機することになります。

  • 同一クライアントからの大量の同時リクエストがサーバーの同時実行しきい値を超えるのを防ぐため:サーバーは通常、悪意のある攻撃を防ぐために、同じクライアントオリジンに対して同時実行しきい値を設定します。ブラウザが同一ドメインの同時実行を制限していない場合、サーバーの同時実行しきい値を超え、アクセスが禁止される可能性があります。

  • クライアント側の整合性メカニズム: 2 つのアプリケーションがリソースを競合した場合に、強い方のアプリケーションが制限なくリソースを取得し、弱い方のアプリケーションが永続的にブロックされるのを防ぎます。

2. サーバーサイドのマルチプロセス + マルチコルーチン同時実行:

  • 複数のプロセスで開発を行う場合、「サンダーリング・ハード問題」が発生する可能性があります。これは、複数のプロセスが同じイベントを待機する問題です。イベントが発生すると、カーネルによってすべてのプロセスが起動されますが、イベントを取得して処理できるのは1つのプロセスだけです。他のプロセスはイベントを取得できなかったため、待機を続けます。同じイベントを待機するプロセスが増えるほど、CPUの競合が激しくなり、コンテキストスイッチのコストが著しく増加します。

  • したがって、この状況に対処するために、uwsgi サービスは共有ロック メカニズムを設計および実装し、特定の時点で 1 つのプロセスのみがイベントをリッスンするようにして、thundering herd 問題を解決しました。

  • ただし、プロセス数を無制限に増やすことはできません。一般的には、CPU コア数の 2 倍にすることが推奨されます。

  • プロセス数が限られている場合、スループットを向上させるにはどうすればよいでしょうか。通常、I/O はブロッキングです。データベースやファイルから読み取る際、現在のプロセスまたはスレッドは、I/O 操作が結果を返すまで待機してから実行を続行します。マルチスレッド化によってスループットを向上させると、 I/O ブロッキングに遭遇したスレッドがスタックし、他の同時要求が処理されないままになります。非同期 I/O は、コルーチンによって実現できます。各スレッドは、独自の I/O を実行する際に、結果を待つのではなく、受信した要求を処理し、完了すると I/O 操作を待機していたコードに戻ります。このようにして、プログラム内のすべてのスレッドを最大限に活用し、常にビジー状態を維持できます。このアプローチにより、全体的なスループットが向上し、全体的な実行時間が短縮されますが、個々のスレッドの実行時間には影響しません。


2.2.2 システム保証
購読アラート:
ユーザーは、レポートを構成し、サブスクリプション管理インターフェイスを通じて生成されたサブスクリプション レポートを管理し、システムの実行ログ (レポートのプッシュ ステータス) を表示できます。
レポート構成には、主にプッシュ コンテンツ、プッシュ形式、トリガー条件、プッシャーの 4 つの部分が含まれます。

プッシュ通知の内容: 単一のグラフ、レポート全体

プッシュ通知の形式:3つの形式

  • チャートのスクリーンショット

  • チャートのCSVデータ(メール添付)

  • スクリーンショットを報告

発動条件

  • スケジュールされたプッシュ通知は、cron 式に従って送信されます。

  • データ同期が完了すると、プッシュ通知が送信されます。レポート内のすべてのチャートに関連付けられたデータセットのデータ同期が完了すると、プッシュ条件が満たされ、メール通知が送信されます。

送信者: 電子メール アカウント。複数のアカウントはコンマで区切ります。


権限:

データ アクセス制御は階層的です。データセットとダッシュボードの 2 層認証カーネルに基づいて、ルールの粒度で行と列の権限の承認を要求することをサポートし、ユーザー権限を柔軟に制御します。
非常に効率的なコラボレーション: MPS (Unified Access Management System) と統合アクセス サービスを統合することで、アクセスの承認、有効期限と取り消し、退職時の凍結などの機能を実現し、シームレスなオフィス ワークフローを促進し、アクセス承認の高速フローを加速します。

オタクトーク

03

要約と計画

3.1 要約

継続的な反復を通じて、TDA は基本的にワンストップのセルフサービス分析機能を獲得し、次の指標を達成しました。

  • 規模の拡大: PV は 0 から 20,000 以上に増加し、UV は 0 から 1,000 以上に増加し、毎日の新規チャートは 0 から 300 以上に増加しました。

  • パフォーマンスの向上: ダッシュボードの最初の画面の 90 パーセンタイルにかかる時間が 10 秒以上から 5 秒に短縮されました。

  • 業務効率の向上:コア業務のセルフサービス化率を80%以上に向上し、変動分析の効率を20倍向上し、単一指標変動のエンドツーエンドのアトリビューション分析を2時間から5分以内に短縮しました。


3.2 計画

AIネイティブテクノロジーがさまざまな分野に浸透するにつれ、TDAもAIテクノロジーを統合し、次のようにプラットフォームのインテリジェント分析エクスペリエンスを強化していきます。

  • セルフサービス データ アクセス: これにより、オープン データ アクセスが可能になり、データ ソースの種類が拡張されます。

  • AI + BI : 帰属分析、埋め込み分析、分析レポートなどの BI 機能を大規模な AI モデルと組み合わせることで、インテリジェントな分析製品が向上します。

  • マネジメントコックピット(探索) :OKR 目標ダッシュボード。