# TiDB アーキテクチャー

+ 水平的なスケールアウトとスケールイン
+ 金融グレードの高い可用性
+ HTAP をリアルタイムで
+ クラウドネイティブ分散データベース
+ MySQL プロトコルと互換性があります

![`smart`](TiDBClusterArchitectureNormal_aa_001_20220506.png)

-------------------------------------------------------------------------------------
TiDBは、分散リレーショナルデータベースである分散型データベース製品で、オンライントランザクション処理（OLTP）とオンライン分析処理（OLAP）の両方をサポートする混合型トランザクションと分析処理（HTAP）です。水平スケールアウトまたはスケールイン、金融グレードの高可用性、リアルタイムHTAP、ネイティブ分散データベース、MySQL 5.7プロトコルの互換性、MySQLエコシステムなどのクラウド重要な機能を持っています。

TiDB には、PD クラスタ、TiDB クラスタ、TiKV クラスタの3つの主要なコンポーネントがあります。

その中で、PDクラスタは、全TiDBの制御センターです。それは、グローバルTSOタイムスタンプを生成し、TiKVノード内のリージョンの分散をスケジューリングし、TiKVノードの健康とロードバランスの状態を収集し、分散トランザクションにトランザクションIDを割り当てるのを担当します。PD自体も少なくとも3つのノードから構成されており、高可用性能を持っているため、PDノードを奇数個にデプロイすることをお勧めします。

TiDBサーバークラスタはビジネスデータを保存しませんが、クライアントからのSQL文を受け取り、SQL文を解析してコンパイルし、最終的に実行計画を生成する責任を持っています。最後に、TiDBサーバーはこれらの実行計画を実行し、TiKVまたはTiFlashストレージエンジンからデータにアクセスし、結果セットを整理してクライアントに返す責任を持ちます。最後に、DDL操作と古いバージョンのデータの回復（GC）もTiDBサーバーによって行われます。 TiDBレイヤー自体はステートレスです。実際には、複数のTiDBインスタンスを起動して、外部世界への一括アクセスアドレスを提供するために、ロードバランシングコンポーネント（LVS、HAProxyまたはF5など）を使用し、クライアント接続を複数のTiDBインスタンスに均等に分散してロードバランシング効果を達成できます。

データは主にキー・バリューの形式でTiKVクラスタに格納されています。TiKVクラスタは主にデータの永続性、MVCC（マルチバージョン同時制御）、コプロセッサー（オペレータを下位ストレージノードにプッシュ）、トランザクションの高い可用性と強い一貫性、および自身のレプリケーション実装（マルチRaftメカニズムを使用）を担当します。これらはTiKVの章で詳しく説明します。

ここでは、カラムストレージエンジンであるTiFlashもあります。TiFlashは主にRaft分散合意アルゴリズムを介してTiKVとデータを同期し、ロードバランシングと強い一貫性の読み取りを実現します。また、TiFlashはリアルタイムレプリケーションをサポートします。このように、OLTPシナリオにおいて分析クエリサービスの分離が実現され、OLAPシナリオにおいてクエリ効率が大幅に向上します。
