PlanetScaleからSupabaseに移行した

以前ブログに書いた通り、PlanetScale無料枠が4/8/2024を以て終了するので、運営しているサイトのデータベースをPlanetScaleからSupabaseに移行した。

調査した記録はZennにまとめてある。

Cloudflare D1、Vercel Postgresなど一通り見ていって、最終的にNeonSupabaseどちらを使うかということになった。

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側でインポートする方法をとったが、今でもデータの崩れがないかしらと不安でしょうがない。