TiDB Serverless はじめました
この記事では最近はやりのサーバレス型MySQL互換インターフェースを有するTiDB Serverlessを始める手順をまとめたいと思います。
TiDB とは
TiDBは、MySQL互換のスケーラブルなデータベースです。
MySQL関連ツールをそのまま使えますが、MySQLデータベースと比べてスケールイン、スケールアウトをネイティブでサポートし、データのリバランスやシャーディング、分散トランザクションなどを自動で行ってくれるため、非常に高い運用性とコスト効率を実現できることが大きな特徴です。
MySQLと高い互換性を持っていますが、以下にある通り一部対応していない機能があることは利用上の注意点になります。
OSS版も提供されており、AWS/GCP上で提供されるマネージドクラウドサービスのほかにk8sやLinux上で動作させることも可能です。
とはいえ、TiDBが有するスケーラビリティの機能をフルに生かすためには、マネージド版をまずは検討するのがよさそうです。
TiDB Serverless とは
TiDBのアーキテクチャ図がこちらです。クラウド上のマネージド版ではClusterという概念を持っています。
Clusterを支えるストレージはKey-ValueストアであるKV、Flashメモリで構成されるTiFlash等高速性を維持するユニークさを持っていることが特徴ですがそれについては機会があればまた別の記事で触れたいと思います。
このフルマネージドなサーバレスバージョンがTiDB Serverlessです。こちらを使うことで以下のメリットが得られます。
プロビジョニング、管理、メンテナンスなどのルーチン・タスクが不要です。
高可用性構成やスケーリングなどの複雑なタスクもシームレスに自動化されます。
ダウンタイムのない自動アップグレードとポイント・イン・タイム・リカバリ (PiTR) 可能な日時の>バックアップをお楽しみください。
OpenAIを搭載したTiDB Botがベストプラクティスをサポートします。
リソースのプロビジョニングやスケーリングは自動で行われ完全従量課金で利用可能です。費用はこちらにまとまっていますが、Serverless インスタンスを保持することに対する固定料金が発生しないことがわかります。(勿論データ保存=占有しているストレージ領域ですから、それに対する料金は発生します)しかしSQLなどを実行しなければ料金が発生することはありません。
また無料クォータが毎月付与されるのもうれしいところです。毎月フリークォータが発行されます。無料枠を利用することで、お客様は1ヶ月間、
行ベースのデータ5GiBと列ベースのデータ5GiBを同時に保存し、
5,000万RUを消費することができます。
ちなみに行ベースのデータ
と列ベースのデータ
が別々に定義されているのは少し最初は戸惑いそうです。TiDB はオンライントランザクション用のOLTPとデータ分析用のOLAPを両方一つのインスタンスで処理できるのが大きな特徴のもう一つです。それぞれデータは別の領域に保存されることで相反する技術特性を持つデータの処理を同居させているようです。OLTP用が行ベースデータ
、OLAP用が列ベースデータ
として別々の課金科目が用意されており、それぞれに無料利用枠がつている、ということです。
TiDBではこれをHTAP (Hybrid Transactional & Analytical Processing)と呼んでいます。機会があればこちらについても触れていく予定です。
さっそくやってみる
ではこの記事のメインの目的であるTiDB Serverlessの起動と接続をやってみます。
無料トライアル
をクリックします。
ログインか新規アカウントの構築をします。なにかでSSOしてしまうのが一番楽だと思います。
以下のようにログインが完了すると最初のServerless Cluster構築中の待ち画面が出ますが、数秒から数十秒程度で構築が完了します。
もうできている・・・早すぎる
既にClusterを過去作ったことがある人は以下の画面が出るかもしれません。
現在はAWS
固定のようなので任意のリージョンを選びましょう。
Clusterが起動出来たら、画面右上のConnect
ボタンを押しましょう。
Generate Password
をクリックします。
パスワードはコピーして手元にメモっておきます。次にConnection String
をcopyします。
MySQLツールを使って接続をしてみます。インストールされていない人はここからインストールできます。
使用するツールはなんでも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