差分

ナビゲーションに移動 検索に移動

TiDB

3,747 バイト追加, 2020年11月19日 (木) 01:48
ページの作成:「'''TiDB'''(TiはTitaniumの略称)とは、Hybrid Transactional and Analytical Processing(HTAP)ワークロードをサポートする[[オープンソース]…」
'''TiDB'''(TiはTitaniumの略称)とは、[[Hybrid Transactional and Analytical Processing]](HTAP)ワークロードをサポートする[[オープンソース]]のNewSQLデータベースである。
==概要==
TiDBは[[Go言語]]で記述されているまったく新しい[[データベース]]である。 [[SQL]]と[[NoSQL]]のハイブリッドなので「[[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クラスタを自己修復します。障害と自己修復の操作は、アプリケーションからは透過的に行われる。

案内メニュー