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に質問を投稿できる。
次は何か
- TiFlashバージョン、重要なログ、システムテーブルを見るには、TiFlashクラスタのメンテナンスを参照してほしい。
- 特定のTiFlashノードを削除するには、TiFlashクラスタのスケールアウトを参照してほしい。
Explore HTAP 最終更新日 2022-07-08 11:48:44: tiflash refactor: split use-tiflash into multiple docs (#9452) (#9521)