TiDB

提供: MonoBook
ナビゲーションに移動 検索に移動

TiDB(TiはTitaniumの略称)とは、Hybrid Transactional and Analytical Processing(HTAP)ワークロードをサポートするオープンソースのNewSQLデータベースである。

概要[編集 | ソースを編集]

TiDBはGo言語で記述されているまったく新しいデータベースである。 SQLNoSQLのハイブリッドなので「NewSQL」を名乗っている。

主にPingCAP, Inc.によって開発・サポートされている。 TiDBは、GoogleのSpannerとF1の論文から初期設計のインスピレーションを得たとしている。

ライセンスApache 2.0

主な機能[編集 | ソースを編集]

MySQLとの互換性[編集 | ソースを編集]

TiDBはMySQLとの互換性があり、MySQLクライアントで接続するとMySQL 5.7であるかのように振る舞う。 このため既存のMySQL利用者はあまり深く意識する必要はない。

なお、TiDBはMySQLからフォークしたものでなく、Go言語を使ってフルスクラッチから作られた互換品であるため100%完全互換ではない点に注意する必要がある。

水平方向のスケーラビリティ[編集 | ソースを編集]

MySQLではハードウェア更新によるいわゆる「垂直方向のスケール」しかできない。

一方、TiDBではいわゆる「水平方向のスケール」と呼ばれる新しいノードを追加することで同時接続数とストレージの両方を拡張することができる。

ノードは「SQL処理部分」と「ストレージ部分」に別れており、それぞれ個別に強化することができる。 「同時接続数は増えていないが時間経過とともにストレージ容量が逼迫している」などと言ったことに対応できる。

なお、水平方向スケールの定番欠点である「どんなに高性能なノードを追加しても一番性能の悪いノードに引っ張られる」という特性はTiDBも変わらない。このためある程度の「水平方向のスケール」した後に「垂直方向のスケール」するのは一大作業となる。

強い一貫性を持った分散トランザクション[編集 | ソースを編集]

TiDB は内部的にテーブルを「リージョン」と呼ばれる小さな範囲ベースのチャンクに分割している。 各リージョンのデフォルトのサイズは約100MB で、TiDBは内部的に2段階のコミットを使用して、リージョンがトランザクション的に一貫した方法で維持されるようにしている。

リアルタイムHTAP[編集 | ソースを編集]

TiDBは、オンライントランザクション処理OLTP)とオンライン分析処理OLAP)の両方のワークロードをサポートしている。

TiDBには、「TiKV(行ストア)」と「TiFlash(カラムストア)」の2つのストレージエンジンがあり、通常のデータはTiKVに保存される。

そこで「OLAPも使いたい」という設定を有効にすると、別途確保されたTiFlashストレージにリアルタイムでレプリケートされOLAPも使えるようになる、という仕組みになっている。

高可用性[編集 | ソースを編集]

TiDBはRaftコンセンサスアルゴリズムを使用して高可用性を確保しており、Raftグループ内のストレージ全体で安全に複製されるようになっている。障害が発生した場合、Raftグループは障害が発生したメンバーの新しいリーダーを自動的に選出し、必要な手動操作を行わずにTiDBクラスタを自己修復します。障害と自己修復の操作は、アプリケーションからは透過的に行われる。

クラウド前提[編集 | ソースを編集]

TiDBはMySQLと違って素人が簡単に環境を構築できる代物ではない。 このため多くの場合はクラウド上に用意されたものを使うことにあるだろう。