PlanetScaleからSupabaseに移行した
以前ブログに書いた通り、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側でインポートする方法をとりましたが、今でもデータの崩れがないかしらと不安でしょうがないです。