今回取り組んだ内容
- TiDBについて調べた
- Supabaseとの比較を行った
- ゆるテックアプリのDBとしてTiDBを採用する理由を整理した
なぜやろうと思ったか
ゆるテックアプリをCloudflare Workersでデプロイすることにし、せっかくだからDBも使ったことないやつ使おうと思ったから。
最近Supabaseばっかり使ってて違うのを使いたかったから。
学んだこと
1. TiDBとは?
MySQL互換でありながら、水平スケールアウトが可能なオープンソースの分散データベース(NewSQL)。
フルマネージドの無料枠「TiDB Cloud Serverless」は、月25GB・5000万RUまで無料で使える。TiDBは、PingCAP社によって開発されたオープンソースの分散型データベースであり、NewSQLの1つです。従来のRDB(リレーショナルデータベース)では、整合性・一貫性を保てるものの、大量データの読み書きが行われる大規模で複雑な環境には、対応が困難という課題がありました。NewSQLは、RDBのように整合性、一貫性を保ちつつ、分散環境の仕組みによりスケーラビリティとパフォーマンスの課題を解決しています。
「RDBの使いやすさ」と「NoSQLのスケーラビリティ」を両立!
引用元:https://products.sint.co.jp/blog/tidb
クレカ登録いらないのがありがてぇ
ちなみに↓
- TiDB = オンプレミスやAWS・GCP・AzureのVMに自分で構築する。
- TiDB Cloud = TiDBをクラウドで利用するサービス。接続情報を設定するだけで利用可能。
今回はTiDB Cloudを使ってみました。
Supabaseとの比較
| 項目 | TiDB Cloud | Supabase |
|---|---|---|
| ベース | MySQL互換 | PostgreSQLベース |
| 提供機能 | データベースに特化 | データベース、認証、ストレージ、リアルタイム機能などを提供 |
| スケーリング | 自動で水平スケール可能 | PostgreSQLをベースにスケール(プランに応じた制限あり) |
| エッジ環境との相性 |
@tidbcloud/serverless によりHTTP経由で接続でき、Cloudflare Workersとの相性が良い |
PostgreSQL接続またはSupabaseクライアント経由が基本で、エッジ環境では接続方法に工夫が必要 |
2. やってみた結果
- ゆるテックアプリの環境(Cloudflare Workers)において、TCP接続の制限を回避し、HTTP経由でスムーズにDB接続できた。
-
drizzle-orm/mysql-coreなどのMySQL用ORM資産をそのまま流用できた。 - 認証やストレージは別途用意する必要があった。
- 分散型処理であったりスケールアップが簡単っていう特徴から、大規模案件に向いているDBだと言える。
- 個人開発だと恩恵を感じる部分が少ないかもと思った。
使用過程のストレス度
アカウント登録してconnectボタンからデータベースURLコピーしてくるだけなのでめちゃ簡単でした!ストレス無し![]()
沼ったポイント(あれば)
原因
- Cloudflare Workersでは標準でTCP接続が使えないため、通常のDB接続(MySQLやPostgreSQLの標準ドライバ)がエラーになる。
解決方法
- TiDBが提供しているサーバーレス用HTTPドライバ(
@tidbcloud/serverless)を使用することで、エッジ環境からでも問題なくDBへアクセスできるようになった。
感想
- 認証・DB周りをパッと実装したい場合→Supabase
- 将来のスケーラビリティも考えたい場合→TiDB
といったように使い分けするといいかもですね
- Supabase以外の無料で使えるDBを知れてよかった。
- Supabaseみたいになんでもできるわけじゃないため、認証などは自前で組む手間はあるけども、機能がDBだけなので割とお手軽に使える感じがした。
来週やりたいこと
・いいかげんSQL
