JD.com ミニプログラムのカスタム データ分析における ClickHouse の応用と実践

JD.com ミニプログラムのカスタム データ分析における ClickHouse の応用と実践

1. 事業背景

モバイルインターネットの急速な発展に伴い、ミニプログラムは、豊富な入口、多様なシナリオ、強力な通信機能、容易なアクセス、そして使用してすぐに離れられる機能により、現在の小売環境における新しいキャリアとして広く認知され、普及しています。ミニプログラムの日常的な運用や開発には、さまざまなデータ情報が存在します。このような豊富なデータ生産材料に直面して、これらの生データをどのように効率的かつ柔軟に分析・マイニングし、ミニプログラムデータの変動を迅速に把握し、ミニプログラムユーザーの行動の変化に対する洞察を得るかは、国内のさまざまなミニプログラムプラットフォームが絶えず突破口を模索している課題です。データ分析の効率を継続的に向上させることによってのみ、データ分析機能をより強化し、データの深い潜在的価値を活用してミニプログラムのビジネス開発を強化できるからです。

JD ミニプログラム データ センターは、ユーザー行動分析、リテンション分析、ユーザー ポートレート、ソース分析など、60 を超えるデータ指標を含む 4 つの基本的なデータ分析モジュールをカバーしています。

初期の頃は、データは主に JD Mini Program クライアント エンジン SDK によって収集され、Meridian ネイティブ チャネルを通じて均一にレポートされ、その後、サーバーによって均一にクリーンアップおよび処理されていました。このモデルはほとんどの基本的なデータ分析シナリオをカバーできますが、次のような問題点が残っています。

1. 不完全なデータ型:基本データインジケーターは、ミニプログラムフレームワークによって取得できるデータのみです。ミニプログラム フレームワークでは、ミニプログラム内の開発者独自のコードのページ露出やクリックなどのビジネス データを自動的に取得できないため、ミニプログラム データ プラットフォームによって提供されるデータの整合性を保証することができません。たとえば、ISV マーチャントが開発したマーケティング ミニ プログラムの場合、ミニ プログラムがマーケティング キャンペーンを実施しているときに、クーポン引き換えボタンのユーザー クリック データを収集して分析することはできません。

2. 業界データが蓄積できない:ミニプログラムがカバーするビジネスシナリオは豊富で多様であり、複雑さも異なります。初期のデータ センターでは、事後のデータ分析と表示のみが提供されていました。ビジネスデータが不足していたため、業界別の予測分析モデルを提供することができず、より効果的なビジネスガイダンスや戦略サポートを加盟店に提供することが困難でした。

3. データ統計の変化するニーズに対応できない:既存のデータ分析は固定化され、プリセットされており、変更できません。カスタマイズされたデータ分析は、データの柔軟な統計ニーズを真にサポートし、変化するビジネス データ分析シナリオに対応できます。

上記の問題の解決の鍵は、将来的に膨大なビジネスデータの保存、柔軟な処理、詳細な分析をどのように解決するかにあります。これを基に、当社は業界内の多くの成熟したデータソリューションを調査し、JDのビジネス特性に焦点を当て、最終的にJDミニプログラムのカスタマイズされたデータ分析サービスの完全なセットを構築しました。

次に、本稿では、動的ルール構成解析、データストレージ設計、リアルタイムデータクエリと分析などの機能の設計と実装に焦点を当て、JD Mini Programのカスタムデータ分析サービスの全体的な技術ソリューションと主要なプロセスを詳細に紹介します。

2. 技術の選択

JD ミニ プログラムのカスタム データ分析には、大量のデータ ストレージ、効率的なクエリ、低い運用および保守コストをサポートするデータ ストレージ方法が必要です。調査と比較を行った結果、ClickHouse の次の 3 つの機能が当社の技術選択要件を十分に満たすことがわかりました。

1. 列の保存とデータ圧縮をサポート

JD ミニ プログラムのカスタム データ分析では、システムのクエリと分析中にユーザーのクエリ実行効率を満たす必要があります。数百億のデータ セットで実行されたカスタム データ分析の集計結果を数秒で返すことを期待しています。比較すると、ClickHouse の列ベースのストレージ機能により、データクエリの効率が大幅に向上します。行ベースのストレージと比較して、列ベースのストレージでは、クエリ中にスキャンする必要があるデータの量を効果的に削減できます。データが行に格納されている場合、データベースは最初に行ごとにスキャンして各データ行のすべてのフィールドを取得し、次に各データ行からクエリに必要なフィールドを返して、すべてのフィールドをスキャンします。データが列ごとに整理されている場合、データベースはクエリする列のデータを直接取得できるため、不要なデータ行のスキャンを回避できます。

分析クエリの場合、通常はテーブル内の少数の列のみを読み取る必要があります。列指向データベースでは、必要なデータのみを読み取ることができます。たとえば、100 列のうち 5 列のみを読み取る必要がある場合、これにより I/O 消費を少なくとも 20 倍削減できます。

ClickHouse で使用される圧縮アルゴリズムは、列内のデータを圧縮できます。データ内の重複項目が多いほど、圧縮率は高くなります。圧縮率が高いほど、データ量は少なくなります。データ量が小さくなるほど、ネットワーク内でのデータの転送速度が速くなり、ネットワーク帯域幅とディスク I/O への負荷がさらに軽減されます。

2. 分散型水平拡張をサポートするMPPアーキテクチャ

JD ミニプログラムのカスタマイズされたデータ分析サービスには、サポート レベルの拡張が必要です。ビジネスが発展するにつれ、ミニプログラム内のデータ量はますます大きくなっていきます。調査の結果、ClickHouse は分散ストレージの特性を自然に備えていることがわかりました。大規模並列処理をサポートするMPP(Massively Parallel Processing)アーキテクチャと、各ノードに大量データを分散保存するマルチマスターフラットアーキテクチャを採用したカラムストレージデータベースです。

これにより、将来のビジネス データの拡張と保存に必要な保証が提供されます。ノードを追加するだけで水平拡張が可能になり、運用・保守コストを大幅に削減できます。

ClickHouse では、データを異なるシャードに保存できます。各シャードは、フォールト トレランスのためのレプリカのセットで構成されます。クエリはすべてのシャードで並列に処理できます。次の図に示すように、Node1 と Node2 はどちらもプライマリ シャードであり、互いのレプリカです。ただし、これはユーザーにとって完全に透過的です。

3. 多様化されたテーブルストレージエンジン

JD ミニ プログラムには、クリック、閲覧、露出、注文という 4 つの主要な分析シナリオを含む、データ分析をカスタマイズするためのシナリオが多数あります。各シナリオには、重複排除されたユーザーの数、金額の合計、平均または最大金額などの共通計算など、独自の共通の統計ニーズがあります。ClickHouse では、テーブルに対応するテーブル エンジンを設定できます。テーブル エンジンは、テーブルが格納される場所、格納方法、およびサポートされるクエリ メソッドを決定します。同時に、テーブル エンジンを ClickHouse のマテリアライズド ビューと組み合わせて使用​​することで、非常に優れたクエリ結果を実現できます。

ClickHouse には、マージ ツリー、メモリ、ファイル、インターフェイスなどの 6 つのカテゴリに 20 を超えるテーブル エンジンがあります。各テーブル エンジンには独自の特性と適用可能なシナリオがあります。シンプルなシナリオでは、シンプルなエンジンを直接使用して運用・保守コストを削減できます。また、複雑なシナリオに適したオプションもあります。

たとえば、MergeTree ファミリーの ReplacingMergeTree エンジンは、同じソート キー値を持つ重複を削除します。データ重複排除はデータマージ時にのみ実行され、バックグラウンドで不特定の時間に実行されるため、事前に計画することはできません。したがって、ReplacingMergeTree は、スペースを節約するためにバックグラウンドで重複データを削除するのに適していますが、重複データが表示されないことを保証するものではありません。

SummingMergeTree は、同じ主キーを持つ行を 1 つの行に結合し、合計値を計算します。行には、結合された行の数値データ型の列の集計値が含まれます。

AggregatingMergeTree は、パーティションをマージするときに定義された条件に従ってデータを集計し、集計するデータを事前に計算し、集計クエリで結果データを直接使用します。

3. JDミニプログラムのカスタムデータ分析の全体的なアーキテクチャ

ClickHouse の関連機能を理解した後、JD Mini Program のカスタム データ分析のための完全な技術ソリューションを紹介しましょう。

全体的なカスタム データ分析機能には、主にカスタム データ レポート、データ処理と計算、データ ストレージの 3 つの階層構造が含まれます。中心的な問題は、カスタム構成ルールに基づいて報告されたデータをどのように照合および照会するかです。解決策は、レポートされたデータ レコード内の event_id (イベント ID) を使用して特定のレポート要求データを識別し、次のデータ構造に示すように、ビジネス フィールドをマップ構造に配置することです。これにより、ビジネス データ フィールドの水平拡張が実現され、報告されたデータ レコードを簡単に見つけることができます。

データをレポートするためのチャネルには、主にゲートウェイ http リアルタイム データ チャネルと Meridian クライアント トラッキング チャネルが含まれ、これらのデータはリアルタイム データ ウェアハウスまたは HDFS オフライン データ ウェアハウスに均一に送信されます。

中間層のデータフローを通じて、Flink リアルタイム計算または MapReduce オフライン計算が実行され、元の報告データをフィルタリング、処理、計算し、最終的に ClickHouse にバッチで書き込んで、データの最終的な永続的なストレージを実現します。

この時点で、フロントエンド インターフェイスで構成されたカスタム イベントとクエリ インジケーター、フィルタリング条件、グループ化条件、その他のカスタム クエリ ルールに基づいて、オンライン クエリとデータの分析を実装できます。効果は以下の図に示されています。

4. JDミニプログラムにおけるカスタマイズされたデータ分析のプロセス設計

では、ルール エンジン サービスは、カスタム ルールに基づいてユーザーから報告されたデータをどのように動的に解析するのでしょうか?ルール エンジンの実行プロセスは、主に、カスタム データ レポート属性の構成の書き込みと、カスタム データ分析の 2 つのコア プロセスの 2 つの部分で構成されます。

まず、報告された属性構成を永続的なストレージのためにデータベースに保存する必要があります。リアルタイムデータクエリを実行すると、上記のイベントルールとインジケーターが最初に取得されます。その後、ルール エンジンはクエリ SQL スクリプトを構築し、それを実行エンジンにプッシュします。実行エンジンは SQL スクリプトを ClickHouse クラスターに送信してデータ クエリを実行し、結果をフロント エンドに返します。最後に、実行結果が非同期にキャッシュに書き込まれ、データの有効期間が設定され、次のクエリの効率が向上します。全体的な解析実行プロセスを下の図に示します。

5. JD.comミニプログラムでのカスタムデータ分析のためのテーブル設計

ClickHouse テーブルは、ローカル テーブルと分散テーブルに分かれています。分散テーブルは、データベース内のビューとして理解できる論理テーブルです。一般的に、クエリは分散テーブルを照会します。分散テーブル エンジンは、クエリ要求をローカル テーブルにルーティングしてクエリを実行し、要約して、最終的にユーザーに返します。ローカル テーブルは、実際にデータを格納するテーブルです。ローカルテーブルと分散テーブルの関係を次の図に示します。データの書き込みと読み取りの際には、書き込みと読み取りの不均衡を防ぐために、nginx を使用してリクエストの負荷分散を実装します。

JD.com のカスタム クリック イベントのデータ統計シナリオを例にとると、次の図に示すように、対応するローカル テーブル vapp_analysis_local と分散テーブル vapp_analysis_dist を作成します。

ローカルテーブル:

分散テーブル:

たとえば、JD.com のミニプログラム クリック イベントのデータ保存特性に基づいて、次の表を設計しました。

  • マスターノードとレプリカの数を設定します。シャード属性はノードのプライマリ データ ノードの数を設定し、レプリカ属性はノードのコピーの数を設定することで、データ ストレージの複数のコピーの高可用性を確保します。
  • パーティション フィールドを選択します。 ClickHouse はパーティション分割をサポートしています。パーティション フィールドは、各テーブルのデータ ディレクトリ全体の最も外側の構造であり、クエリ速度を大幅に向上させることができます。具体的な DDL 操作キーワードは PARTITION BY です。これは、テーブルがデータの列 (日付など) に従ってパーティション分割されることを意味します。最終結果として、異なるパーティションのデータが異なるファイルに書き込まれます。私たちのビジネス シナリオでは、データはレポート時間の年、月、日、YYYYMMDD (report_time) に従ってパーティション分割されます。
  • 並べ替えルールを設定します。適切なデータ並べ替えルールを設定すると、データクエリの効率が向上します。設定されたソートフィールドの順番でデータが格納され、集計計算を行う際には集計条件に従って隣接するデータも計算されます。私たちのビジネス シナリオでは、ミニ プログラムの AppID が並べ替えルールとして使用されます。ミニプログラムの AppID は、各ミニプログラムの一意の識別子です。データをクエリする場合、ほとんどのシナリオでは AppID ディメンションに基づいてデータがクエリされます。したがって、AppID をソート フィールドとして使用すると、データ集約操作の効率が大幅に向上します。
  • テーブルエンジンを設定します。クリック イベント シナリオでは、複数のコピーをサポートする ReplicatedMergeTree エンジンを設定します。これにより、データ ストレージの複数のコピーをサポートし、データの高可用性を確保できます。

上記の表のデザインでは、コンテンツ フィールドが非常に重要です。報告されたカスタム データはテーブルのコンテンツ フィールドに保存され、レポート フィールドの水平拡張をサポートする JSON 構造で保存されます。ルール エンジンが動的に生成された SQL スクリプトを Clickhouse に送信してクエリを実行すると、Clickhouse JSON 解析関数 JSONExtractString を使用して値が変換され、分析する特定のビジネス フィールドを簡単に取得できるようになります。

たとえば、JD ミニプログラムのクリック イベント テーブルからイベント コード applets_buy を持つ金額フィールド amount を取得する場合、ルール解析エンジンに基づいて構築され、ClickHouse に送信される動的スクリプトは次の形式になり、報告されたフィールドの動的な抽出を実現できます。

VI. JDミニプログラムのモニタリング カスタマイズされたデータ分析

カスタム データ分析チェーン全体には多くのリンクが関係しており、システム機能の安定した動作を確保するには適切な監視メカニズムが必要です。

MQ メッセージ キュー、Flink リアルタイム コンピューティング タスク、ClickHouse ストレージなどのミドルウェアの監視には、Grafana が提供するビジュアル監視機能を使用します。下の図のように、CPU、メモリ、ディスク I/O、ディスク使用量などの状態を直感的に確認できます。

同時に、JD Mini Program の動作中の監視のために、完全な監視およびアラーム メカニズムを提供します。このメカニズムは、カスタム アラーム ルールの構成をサポートし、JD Mini Program 自体の異常なページ データ、パフォーマンス データ、ネットワーク要求データなどの異常なデータ情報を迅速に検出するのに役立ちます。現在、すべてのオンラインミニプログラムの異常データとパフォーマンス操作を監視できます。一つのミニプログラムを例にとると、監視状況は以下の図のようになります。

上記の 2 つの監視方法に基づいて、リンク全体の JD ミニ プログラムのパフォーマンス データの変動を追跡し、パフォーマンスのボトルネックをタイムリーに発見し、運用中に発生するさまざまな問題を迅速に特定して、JD ミニ プログラム全体のビジネス開発を保護することができます。

七。要約と展望

JD Mini Program のカスタム データ分析サービスが提供する効率的で柔軟な処理機能は、JD Mini Program のデータ プラットフォームの整合性を大幅に向上させるだけでなく、業界のビジネス データの継続的な蓄積を完全に保証します。最初のサポート バッチでは、50 を超えるコア ミニ プログラムのビジネス カスタム データのレポート、分析、視覚化をサポートし、ミニ プログラム内外のユーザーの行動パスを完全に接続して、マーチャントの洗練された操作のニーズをサポートすることが期待されています。

JD Mini Programのデータ機能は、0から1への飛躍的進歩を遂げました。今後、JD Mini ProgramはJD Mini Programのインテリジェントなデータ分析モデルの構築に注力し、1からNへの飛躍を実現します。最終的には、より多くのJD Mini Program加盟店が継続的に運営戦略を最適化し、データ分析コストを削減し、ビジネス能力と効率を向上させるのに役立ちます。

<<:  スマートトラベルは「次のステップ」を迎えており、ファーウェイクラウドは西村で業界リーダーと議論している

>>:  インダストリー4.0時代の技術革新を促進するために、弾力性のあるエッジコンピューティングを導入する

推薦する

スマートマーケティング: 欲しいものを考えて、必要なものを提供する

月収10万元の起業の夢を実現するミニプログラム起業支援プラン現代のマーケティングの第一人者、フィリッ...

AWS vs. Elastic: クラウド大手は本当にオープンソースを殺すのか?

考えてみましょう。オープンソースはクラウド コンピューティングが依存する重要なテクノロジ ソースであ...

WinSCP ファイル管理チュートリアル

WinSCP は一般的な Linux サーバー ソフトウェアです。ここでは、その簡単な使い方を説明す...

金融グレードのクラウドサービスであるPing An Cloudは、保険業界の革新と開発を支援します。

[51CTO.comより引用] 9月10日、「保険業界の開放、変革、相互統合の革新の道」をテーマにし...

スナップショットが更新されない?まずウェブページがどのように更新されるかを理解する

以前、A5で実践的な運用事例をいくつかシェアしたことがあり、多くの方から反響をいただきました。シェア...

アトランティック - $0.99/KVM/256m メモリ/10Gssd/1T トラフィック/G ポート/3 データセンター

Atlantic、この老舗 IDC が業界の超衝撃ニュースを明かしました。KVM と SSD ハード...

Weiboが再び成長軌道に戻るのは難しいのでしょうか?

国内最大の「ファンが集まる場所」であるWeiboのホットな検索リストには、有名人のゴシップ、人気の映...

あなたは有能な SEO 担当者ですか?

最近、私は仕事を探していて、私の求職の方向は、より人気のあるウェブサイト編集者であるWebエディター...

謝文:ビッグデータ時代の産業チェーン再構築に関する5つの講演

インターネットが商業化、市場化されてから20年以上が経ち、産業生態環境と産業チェーンは大きな変化を遂...

読書ノート: 蒋介石と近代中国

2012年、CITIC Pressは、ハーバード大学の学者で元米国外交官のジェイ・テイラー氏の著書『...

山大文学内部抗争:30人が突然集団辞職したが、制御可能

30人近くの集団辞職は突然だったが、すべてはコントロール下にある黄元侯小強氏はこう語った。シャンダ文...

SEOエディターが外部リンク構築や取引プラットフォームの基本的な操作方法を共有

SEO初心者でも、経験豊富なSEOウェブマスターでも、SEOオフサイト最適化を行うときは、外部リンク...

「ダブル11オンラインショッピングカーニバル」は実はあなたが思っているものとは違います

タオバオの世界では、祭りがなければ祭りを作るのが典型的な文化です。なぜなら、休日のプロモーションは、...

レスポンシブ デザインの実践: IE10 に最適化されたバージョン cnBeta の誕生

過去 2 年間で、多くのインターネット製品が、さまざまなデバイスやブラウザの制限を克服するためにレス...

reprisehosting-シアトル/XenVPS/Windows/無制限トラフィック/年間支払いは20ドルから

reprisehosting の VPS の価格は安くはありませんが、Windows をサポートして...