特徴2:クラウドネイティブ
TiDBはオープンソースのソフトウェアなので、コミュニティ版が存在する。サーバー上のLinuxにインストールしたり、Kubernetesをコンテナとしてデプロイしたりすることも可能だ。また、TiDB Cloudというフルマネージドのサービスもあり、AWSやGCP上で開発することもできる。2021年11月にリリースしたTiDB Cloud Developer Tierは、TiDB Cloudを無料で使うこともできる。
「PingCAPのサーバー上でインストールし、ロードバランサーをつけて利用していただきます。障害が起きたときの対応やメンテナンス、ファームウェアのアップグレードなども、PingCAP側で全て行います」
![TiDBはOSSのほかエンタープライズ版、マネージドサービスも提供](http://cz-cdn.shoeisha.jp/static/images/article/15728/15728_005.png)
さらにアーキテクチャについても語られた。TiKVのKVはKey-Valueストアを意味しており、実際どのようにデータがレイアウトしているのか、4台構成をイメージして示したものが、以下のスライドである。
![TiKVにおけるデータレイアウト](http://cz-cdn.shoeisha.jp/static/images/article/15728/15728_006.png)
TiKVではリージョンという単位でデータが保存されており、プライマリーキーをキーとしてレンジでパーティショニングされ、同容量になるように自動で配置される。この状態でノードを増やしていくと、5台目を追加したときも、直ちに移動が始まって自動的に同容量でスケールアウトする。
この実装はデータベースによって異なる。例えばTiDBとSpannerを比較してみると、データ単位はTiDBが32MBでSpannerは数GBである。データ配置設計においては、TiDBはAUTO_INCREMENTでも構わないが、SpannerはUUID推奨、スケールアウトではTiDBはノードを追加することによって直ちにスケールアウトが開始するが、Spannerはさらにそのスケールアウトするだけにふさわしい負荷をかけていく必要がある。
また、データ整合性を担保するRaftといった新しいアーキテクチャも使われている、例えば、ノードに障害が起きたときに、AとBという2つのノードがあったとしたら、過半数を取ったものが正しいとする耐障害性のアルゴリズムである。
特徴3:リアルタイム分析
3つ目の特徴として紹介されたのは、OLTPのレイヤーをデータハブに進化させて、リアルタイム分析に活用するというもの。例えば、アプリケーションのログを全てTiDBに投入し、それを分析対象にする使い方や、列指向のMPPエンジンやSparkSQLとのコネクタで分析するといった使い方もある。
また、データを列ごとに保存して分析処理を高速化するコンポーネント、TiFlashについても紹介された。HTAPによるリアルタイム分析を実現し、3倍以上の効率化を実現できたという。
![TiDBのリアルタイム分析への活用](http://cz-cdn.shoeisha.jp/static/images/article/15728/15728_007.png)
最後に林氏は、改めてクラウドネイティブアプリ開発にはスケーラビリティが必要であり、MySQL互換のTiDBを活用してほしいとメッセージを送り、セッションをまとめた。
「TiDBは、オンラインイントランザクションとリアルタイム分析を一つのシステムで実装でき、マルチプラットフォームでの対応が可能。フルマネージドも揃っています。TiDBのコミュニティもあり、Slackでいろいろ質問や相談を受けることもできますので、ぜひ活用ください」