[前回] MySQL vs. TiDB-分散トランザクションの比較検証(4):MySQL内部XA
はじめに
MySQLの検証が長編となってしまったので、TiDBも取り上げてみます。
TiDB(タイディービー)とは
WikipediaのTiDB定義から、
- オープンソースのNewSQLデータベース
- MySQLと互換性あり
- 水平方向のスケーラビリティ、強力な一貫性、高可用性を提供
- ハイブリッドのトランザクションと分析処理のワークロードをサポート
TiDBのアーキテクチャー
※ 引用元: PingCAP社のTiDB Architecture
コンポーネント
TiDBクラスタを構成するTiDBサーバー
- 外部からのSQLリクエスト(MySQLプロトコル)を受け付ける
- スケールアウト可能
- SQL解析、最適化、分散実行計画の生成
PD(Placement Driver)クラスタを構成するPDサーバー
- ここが司令塔のようで、クラスタ全般(TiDBクラスタ、Storageクラスタなど)を司っている
- メタデータを管理
- PDサーバーは可用性を持ち、少なくとも3ノード必要(ノード数は奇数)
Storageクラスタを構成するStorageサーバー
2種類サーバーがあるようです。
TiKVサーバー
- データ保存用で、分散キーバリューストアエンジン
- データ保存単位はRegion
- 一つのTiKVノードに複数存在
- 分離レベルは、スナップショット分離をサポート
- TiDBがSQLレベルで分散トランザクションをサポート可能な要因がこれだそうです
- TiKVに格納されたデータは、複数レプリカにより自動メンテされる
- デフォルトはレプリカ三つ
- ネイティブの高可用性を持ち、自動フェールオーバー可能
TiFlashサーバー
- データを列指向(カラムナー)で保存
- 特殊ストレージで、主に分析処理を加速するため使用
おわりに
一旦、TiDBのアーキテクチャと用語を抑えておきました。
次回は、いろいろ検証してみたいと思います、お楽しみに。