以前ブログに書いた通り、PlanetScale無料枠が4/8/2024を以て終了するので、運営しているサイトのデータベースをPlanetScaleからSupabaseに移行した。
調査した記録はZennにまとめてある。
Cloudflare D1、Vercel Postgresなど一通り見ていって、最終的にNeonとSupabaseどちらを使うかということになった。
Neonは純粋なPostgreSQL機能だけを提供するDaaSで、SupabaseはPostgreSQLのほかにAuthやStorageなどの機能が含まれたFirebase likeなサービスである。
単純な料金比較だとNeonのほうが安いので、データベースのみだけ使い、かつそれなりのデータ量がある人はNeonのほうが良いと思う。
ただ、私はどちらも無料枠の範囲でしか使う気がなかったため、Supabaseを選んだ。決め手はリージョンとUIだった。
まずリージョンについて。
Neonは最短リージョンがシンガポールであるのに対し、Supabaseは東京リージョンが提供されている。シンガポールだと通信に約100msかかるので、東京リージョンを使えることに越したことはない。
2つ目のUIについて。
これは個人的な好みだが、SupabaseのUIは非常に使いやすく洗練されている。非エンジニアも運用可能と謳っているだけあって、直感的なデータ操作が可能だ。
さらに、SupabaseはOSSであるため、このダッシュボード含めたGUI環境がDockerイメージとして提供されており、ローカル開発環境でも同じ操作が可能だ。これが一番嬉しいポイントだった。
逆にNeonのほうがいいと思った部分は、データベースをブランチとして管理できることと、ブランチごとに(無料枠でも24時間ごとに)自動バックアップしてくれることだ。
Supabaseは無料枠だとバックアップ機能が付いていないので、pg_dumpで手動でバックアップすることで一旦は良しとした。本格稼働するとしたら月$25払ってアップグレードするべきだろう。
インフラ選定は楽しかったが、移行作業そのものは辛かった。
今回、MySQLからPostgreSQLにDBMSを変更したわけだが、意外とハマりポイントがあった。試行錯誤の結果、PlanetScaleのデータをCSVに吐き出してSupabase側でインポートする方法をとったが、今でもデータの崩れがないかしらと不安でしょうがない。