💡

TiDB Serverless はじめました

2024/04/14に公開

この記事では最近はやりのサーバレス型MySQL互換インターフェースを有するTiDB Serverlessを始める手順をまとめたいと思います。

TiDB とは

https://pingcap.co.jp/tidb-overview/

TiDBは、MySQL互換のスケーラブルなデータベースです。

MySQL関連ツールをそのまま使えますが、MySQLデータベースと比べてスケールイン、スケールアウトをネイティブでサポートし、データのリバランスやシャーディング、分散トランザクションなどを自動で行ってくれるため、非常に高い運用性とコスト効率を実現できることが大きな特徴です。

MySQLと高い互換性を持っていますが、以下にある通り一部対応していない機能があることは利用上の注意点になります。
https://docs.pingcap.com/tidb/stable/mysql-compatibility

OSS版も提供されており、AWS/GCP上で提供されるマネージドクラウドサービスのほかにk8sやLinux上で動作させることも可能です。

とはいえ、TiDBが有するスケーラビリティの機能をフルに生かすためには、マネージド版をまずは検討するのがよさそうです。

TiDB Serverless とは

TiDBのアーキテクチャ図がこちらです。クラウド上のマネージド版ではClusterという概念を持っています。

https://docs.pingcap.com/tidb/stable/tidb-architecture

Clusterを支えるストレージはKey-ValueストアであるKV、Flashメモリで構成されるTiFlash等高速性を維持するユニークさを持っていることが特徴ですがそれについては機会があればまた別の記事で触れたいと思います。

このフルマネージドなサーバレスバージョンがTiDB Serverlessです。こちらを使うことで以下のメリットが得られます。

プロビジョニング、管理、メンテナンスなどのルーチン・タスクが不要です。
高可用性構成やスケーリングなどの複雑なタスクもシームレスに自動化されます。
ダウンタイムのない自動アップグレードとポイント・イン・タイム・リカバリ (PiTR) 可能な日時の>バックアップをお楽しみください。
OpenAIを搭載したTiDB Botがベストプラクティスをサポートします。

リソースのプロビジョニングやスケーリングは自動で行われ完全従量課金で利用可能です。費用はこちらにまとまっていますが、Serverless インスタンスを保持することに対する固定料金が発生しないことがわかります。(勿論データ保存=占有しているストレージ領域ですから、それに対する料金は発生します)しかしSQLなどを実行しなければ料金が発生することはありません。
https://pingcap.co.jp/tidb-cloud-serverless-pricing-details/
また無料クォータが毎月付与されるのもうれしいところです。

毎月フリークォータが発行されます。無料枠を利用することで、お客様は1ヶ月間、
行ベースのデータ5GiBと列ベースのデータ5GiBを同時に保存し、
5,000万RUを消費することができます。

ちなみに行ベースのデータ列ベースのデータが別々に定義されているのは少し最初は戸惑いそうです。TiDB はオンライントランザクション用のOLTPとデータ分析用のOLAPを両方一つのインスタンスで処理できるのが大きな特徴のもう一つです。それぞれデータは別の領域に保存されることで相反する技術特性を持つデータの処理を同居させているようです。OLTP用が行ベースデータ、OLAP用が列ベースデータとして別々の課金科目が用意されており、それぞれに無料利用枠がつている、ということです。
TiDBではこれをHTAP (Hybrid Transactional & Analytical Processing)と呼んでいます。機会があればこちらについても触れていく予定です。
https://docs.pingcap.com/ja/tidb/stable/quick-start-with-htap

さっそくやってみる

ではこの記事のメインの目的であるTiDB Serverlessの起動と接続をやってみます。

https://pingcap.co.jp/tidb-cloud-pricing/
にアクセスを行い無料トライアルをクリックします。

ログインか新規アカウントの構築をします。なにかでSSOしてしまうのが一番楽だと思います。

以下のようにログインが完了すると最初のServerless Cluster構築中の待ち画面が出ますが、数秒から数十秒程度で構築が完了します。

もうできている・・・早すぎる

既にClusterを過去作ったことがある人は以下の画面が出るかもしれません。
現在はAWS固定のようなので任意のリージョンを選びましょう。

Clusterが起動出来たら、画面右上のConnectボタンを押しましょう。

Generate Passwordをクリックします。
パスワードはコピーして手元にメモっておきます。次にConnection Stringをcopyします。

MySQLツールを使って接続をしてみます。インストールされていない人はここからインストールできます。
https://dev.mysql.com/downloads/installer/
VSCodeであればこのツールはなかなか便利です。

使用するツールはなんでもOKです。接続にはTLSが必須であることに注意してください。
接続できたら以下のSQLを実行してみます。

CREATE TABLE user (
    id INTEGER NOT NULL, name VARCHAR(20) NOT NULL, PRIMARY KEY (id)
);
INSERT INTO user(id,name) VALUES (1,'test_user');
select * from user;

無事実行できた後TiDB Cloudのマネージメントコンソールに戻ります。
何かSQLが実行されている様子がわかればOKです。

次回はマネージメントコンソールから直接SQLを発行可能なChat2Queryを触っていきたいと思います。

Discussion