TiDB HTAPを見てみる

このガイドでは、TiDB HTAP(Hybrid Transactional and Analytical Processing)機能を調査し、使用する方法について説明する。

ユースケース

TiDB HTAPは、急速に増加する大容量データを処理し、DevOpsコストを削減し、オンプレミスまたはクラウド環境に簡単にデプロイできるため、データ資産の価値をリアルタイムに提供する。

以下はHTAPの一般的な使用例である。

  • ハイブリッドワークロード

    ハイブリッドロードシナリオでリアルタイムOLAP(オンライン分析処理)にTiDBを使用する場合、データにTiDBエントリポイントだけを提供すればよい。TiDBは特定のビジネスに基づき、さまざまな処理エンジンを自動的に選択する。

  • リアルタイムストリーム処理

    リアルタイムストリーム処理シナリオでTiDBを使用する場合、TiDBは継続的に流入するすべてのデータをリアルタイムでクエリできるようにする。同時に、TiDBは高並行性のデータワークロードとビジネスインテリジェンス(BI)クエリを処理できる。

  • データハブ

    TiDBをデータハブとして使用する場合、TiDBはアプリケーションデータとデータウェアハウスをシームレスに接続し、特定のビジネス要件を満たせる。

TiDB HTAPの使用例の詳細は、PingCAP WebサイトのHTAP関連ブログを参照してほしい。

アーキテクチャ

TiDBでは、OLTP(オンライン・トランザクション処理)用の行ベースストレージエンジンTiKVと、OLAP(オンライン分析処理)用のカラムストレージエンジンTiFlashを組み合わせて使用し、データを自動的に複製して強い整合性を維持する。

アーキテクチャの詳細は、TiDB HTAPアーキテクチャを参照してほしい。

環境準備

TiDB HTAPの機能を確認する前に、データ量に応じてTiDBと該当するストレージエンジンをデプロイする必要がある。データが多い場合、たとえば100TBの場合は、基本ソリューションとしてTiFlash Massively Parallel Processing(MPP)を使用し、補助ソリューションとしてTiSparkを使用することが推奨される。

  • TiFlash

    • TiFlashノードなしでTiDBクラスタをデプロイした場合は、現在のTiDBクラスタにTiFlashノードを追加する。詳細はTiFlashクラスタのスケールアウトを参照してほしい。

    • TiDBクラスタをデプロイしていない場合は、TiUPを使用してTiDBクラスタをデプロイを参照してほしい。最小TiDBトポロジに基づき、TiFlashトポロジをデプロイする必要がある。

    • TiFlashノード数を決めるときは、次のシナリオを考慮してほしい。

      • ユースケースで小規模分析とアドホッククエリを伴うOLTPが必要な場合、一つ以上のTiFlashノードをデプロイする。分析クエリの速度を大幅に向上できる。
      • OLTPスループットがTiFlashノードのI/O使用率に大きな圧力をかけない場合、各TiFlashノードはより多くのリソースを計算に使用できるため、TiFlashクラスタはほぼ線形の拡張性を持てる。TiFlashノード数は、期待される性能と応答時間に応じて調整する必要がある。
      • OLTPスループットが比較的高い場合、たとえば書き込みまたは更新スループットが1,000万行/時間を超える場合、ネットワークおよび物理ディスクの書き込み容量が制限され、TiKVとTiFlash間のI/Oボトルネックになり、読み書きホットスポットも発生しやすい。この場合、TiFlashノード数は分析処理の計算量と複雑な非線形関係を持つため、システムの実際の状況に基づいてTiFlashノード数を調整する必要がある。
  • TiSpark

    • Sparkでデータを分析する必要がある場合は、TiSparkをデプロイする。具体的なプロセスはTiSparkユーザーガイドを参照してほしい。

データ準備

TiFlashがデプロイされた後、TiKVはデータをTiFlashへ自動的に複製しない。TiFlashに複製する必要があるテーブルを手動で指定する必要がある。その後、TiDBは該当するTiFlashレプリカを作成する。

  • TiDBクラスタにデータがない場合は、まずデータをTiDBへ移行する。詳細はデータマイグレーションを参照してほしい。
  • TiDBクラスタにすでにアップストリームから複製されたデータがある場合、TiFlashをデプロイした後もデータ複製は自動的に開始されない。TiFlashに複製するテーブルを手動で指定する必要がある。詳細はTiFlashの使用を参照してほしい。

データ処理

TiDBを使用すると、クエリまたは書き込み要求に対するSQL文を簡単に入力できる。TiFlashレプリカを含むテーブルの場合、TiDBはフロントエンドオプティマイザーを使用して最適な実行計画を自動的に選択する。

性能監視

TiDBを使用するときは、次の方法のいずれかを使用してTiDBクラスタの状態および性能メトリクスを監視できる。

  • TiDBダッシュボード: TiDBクラスタ全体の実行状態を確認し、読み書きトラフィックの分布と傾向を分析し、遅いクエリに関する詳細な実行情報を確認できる。
  • 監視システム(Prometheus & Grafana): PD、TiDB、TiKV、TiFlash、TiCDC、Node_exporterなどを含むTiDBクラスタ関連コンポーネントの監視パラメータを表示できる。

TiDBクラスタおよびTiFlashクラスタの警告ルールを見るには、TiDBクラスタの警告ルールTiFlash警告ルールを参照してほしい。

トラブルシューティング

TiDB使用中に問題が発生した場合は、次の文書を参照してほしい。

また、GitHub issueを作成するか、AskTUGに質問を投稿できる。

次は何か