Next.jsアプリに最適なデータベースはどれ?主要6サービスを徹底比較
Next.jsは、サーバーサイドレンダリング(SSR)機能により、開発者がフルスタックアプリケーションを構築できる強力なフレームワークです。さらにVercelやNetlifyといったプラットフォームを使えば、サーバーレス関数でバックエンドAPIも手軽に実装できます。では次に考えるべきは「Next.jsアプリに最適なデータベースは何か」という問題です。
この記事では、Next.jsコミュニティで人気の高いデータベースサービスを取り上げ、それぞれがサーバーレスモデルにどれだけ適合しているかを解説します。評価ポイントは主に以下の2つです。
- サーバーレス対応の料金体系:従量課金制か?データベースを使用していない時間にも課金されるか?
- サーバーレス対応の接続方式:HTTPベースの接続をサポートしているか?サーバーレス関数でよく問題になる接続エラーが発生しないか?
TL;DR(結論を先に)
今回はPlanetScale、Supabase、Upstash、Fauna、DynamoDB、MongoDB Atlasの6サービスを比較しました。各製品の特徴は下の表をご覧ください。
| 項目 | PlanetScale | Supabase | Upstash | Fauna | DynamoDB | MongoDB Atlas |
|---|---|---|---|---|---|---|
| API | MySQL | PostgreSQL | Redis | Fauna | DynamoDB | MongoDB |
| 種類 | リレーショナル | リレーショナル | KVストア | ドキュメント | ドキュメント | ドキュメント |
| 無料枠 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 |
| サーバーレス料金 | 🟡(最低$29) | 🟡(最低$25) | 🟢 | 🟡(最低$22.5) | 🟢 | 🟢 |
| REST API | 🔴 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 |
| GraphQL API | 🔴 | 🔴 | 🔴 | 🟢 | 🔴 | 🔴 |
| グローバルレプリケーション | 🔴 | 🔴 | 🟢 | 🟢 | 🟢 | 🟡(Dedicatedのみ) |
| データベースブランチング | 🟢 | 🔴 | 🔴 | 🔴 | 🔴 | 🔴 |
| リアルタイム更新 | 🔴 | 🟢 | 🔴 | 🔴 | 🟢 | 🟡(Realm経由) |
| 読み取り料金 | $1.5 / 1,000万回 | $0.09 / GB | $0.2 / 10万回 | $0.45 / 100万ユニット(4KB) | $0.25 / 100万ユニット(2KB) | $0.3 / 100万ユニット(4KB) |
| 書き込み料金 | $1.5 / 100万回 | $0.09 / GB | $0.2 / 10万回 | $2.25 / 100万ユニット(1KB) | $1.25 / 100万ユニット(1KB) | $1.25 / 100万ユニット(1KB) |
| ストレージ料金 | $1.25 / GB | $0.125 / GB | $0.25 / GB | $0.23 / GB | $0.25 / GB | $0.25 / GB |
PlanetScale
- MySQL互換のDatabase as a Serviceです。
- バックエンドにはVitessを採用。VitessはYouTubeなどの巨大企業でも実際に使われている実績ある技術です。
- 独自の「データベースブランチング」概念を導入しています。Gitのようにブランチを作成し、スキーマ変更を本番データベースへマージできます。これは現時点でPlanetScaleならではの機能です。
- 月間1億読み取りまで利用できる無料プランがあります。
- 有料プランは$29から。主な課金要素は以下のとおりです。
- ストレージ/月:最初の25GB超過分は$1.25/GB
- 読み取り/月:最初の5億回超過分は$1.50/1,000万回
- 書き込み/月:最初の5,000万回超過分は$1.50/100万回
- HTTP/RESTベースのAPIは提供されていません。
筆者のコメント
- 公式サイトでは「GitHub、Square、Slackなどに信頼されています」と謳っています。しかし、これらの会社が使っているのはPlanetScaleそのものなのか、それとも基盤技術のVitessなのか?もしPlanetScaleを使っているなら素晴らしいですが、そうでなければ少し誇大なマーケティングに感じます。「Vitessへの信頼」と「PlanetScaleへの信頼」は別物だからです。
- PlanetScaleはTCP接続(MySQL接続)が必要です。ステートレスなサーバーレス関数にとって、これは潜在的な問題になり得ます。Vitessのおかげで接続数自体は問題にならないと説明されていますが、プランごとの最大接続数制限は存在します。
- HTTP/REST APIがないため、TCP接続を許可していないCloudflare WorkersやVercel Edge環境からは利用できません。
- 有料プランは$29からのため、コストがゼロまでスケールしません。DBを使っていなくても最低$29/月が発生します。これは「サーバーレス」の定義と矛盾すると感じました。
参考リンク
- 詳細な料金ページ
- PlanetScale + Next.js + Prismaのチュートリアル
- PlanetScaleとNext.jsを使ってVercelへデプロイする動画チュートリアル
- Hacker NewsでのPlanetScaleローンチに関するコメント
Supabase
- Supabaseはデータベース、認証サービス、ストレージなどをまとめた開発者ツール群です。自称「オープンソース版Firebase代替」。
- PostgreSQLデータベースを提供しています。
- Firebaseと同様に、データベースの変更をリアルタイムでリッスンできます。
- PostgRESTによるRESTful APIを提供。特にサーバーレス関数内でSupabaseを使う場合に便利です。
- REST APIのおかげでCloudflare Workersでも利用可能です。
- 無料枠はストレージ500MB、月間データ転送2GBまで。
- PlanetScaleと同様に有料プランには最低料金$25/月があります。従量課金の概要:
- ストレージ:$0.125/GB・月
- データ転送:$0.09/GB
筆者のコメント
- Supabaseはデータベース、認証、オブジェクトストレージに加え、サーバーレス関数も提供予定です。多くのサービスを高品質で提供し、GoogleがバックアップするFirebaseと競争するのはスタートアップとして簡単ではないでしょう。成功を願っています。
- PlanetScaleと同じく、料金体系は真の意味でのサーバーレスとは言えません。有料プランに固定月額があるため、コストはゼロまで下がりません。
参考リンク
- 詳細な料金ページ
- Next.js入門ガイド
- 動画:Supabaseクラッシュコース
- 動画チュートリアル:Supabase × Next.js
Upstash Redis
- Upstashはリクエスト単位の課金でRedisを提供するサービスです。
- RedisプロトコルとREST APIの両方をサポート。サーバーレス関数とエッジ(Cloudflare Workers)環境の両方で利用できます。
- リージョナルとグローバルの2種類があり、グローバルデータベースは複数リージョンへデータをレプリケートします。
- 1日最大10,000コマンドまでの無料枠があります。従量課金は以下のとおり:
- コマンド:$0.2/10万コマンド
- ストレージ:$0.25/GB
筆者のコメント
- 私たちUpstash自身もRedisLabsも、キャッシュやKVストアといった古典的な用途に加えて、多くのユースケースでRedisは十分に強力だと考えています。それでも多くの開発者はSQLデータベースをメインのデータストアとして選ぶ傾向があります。複雑なクエリが必要な場合、Redisは第一候補にはならないかもしれません。
参考リンク
- 詳細な料金ページ
- Next.jsとRedis入門
- Next.js Edge Functions入門
- 動画:Serverless RedisをNext.jsで使う
Fauna
- Faunaは、グローバルにレプリケートされた強い整合性を持つデータベースをクラウドサービスとして提供します。
- Fauna APIに加えてGraphQL APIも提供しています。
- 接続はHTTPベースのため、接続関連の問題なくサーバーレス関数で利用できます。
- 最も基本となるIndividualプランは$22.5/月から。
- 料金体系:
- 読み取り:$0.45/100万ユニット(4KB)
- 書き込み:$2.25/100万ユニット(1KB)
- ストレージ:$0.23/GB
筆者のコメント
- グローバルな強い整合性にはパフォーマンス上の代償が伴います。他の代替データベースと比べ、書き込みのレイテンシが高めです。
- GraphQLを使うなら非常に優れていますが、そうでない場合、FQLは私にとって学習・使用ともにハードルが高いと感じました。
- Faunaの料金は独自の単位(TRO、TWO、TCO)を持ち、多くの要素が絡むため、料金を理解するには記事を読み込む必要があります。
参考リンク
- 料金ページ
- Next.jsでFaunaを使う方法
- 動画:Next.js × Fauna
MongoDB Atlas
- AtlasはMongoDBのマネージドサービスで、サーバーレス、共有、専用の各プランを用意しています。
- Data API(REST)が最近発表されました。これによりHTTP経由でデータベースにアクセス可能になります。
- MongoDB Atlasにはいくつか制限付きのServerlessプランがあります。このプランはオペレーション単位の課金なので、サーバーレス製品らしくゼロまでスケールします。
- マルチリージョンレプリケーションはDedicatedプラン限定です。
- サーバーレスプランの料金:
- 読み取り:$0.30/100万ユニット(4KB)
- 書き込み:$1.25/100万ユニット(1KB)
- ストレージ:$0.25/GB・月
筆者のコメント
- ServerlessプランとData APIの登場は、MongoDB Atlasがサーバーレス領域を無視していないことを示しています。ただし、どちらもプレビュー段階であり、サーバーレスアプリケーションに理想的なソリューションになるには改善の余地があります。
参考リンク
- 料金ページ
- MongoDBをNext.jsアプリに統合する方法
- 動画:NextJSアプリへのMongoDB統合
DynamoDB
- キーバリューおよびドキュメントデータモデルを備えたフルマネージドNoSQLデータベースです。
- 接続はHTTPベースなので、サーバーレスアプリケーションと相性が良いです。
- データ転送料金に加えてオペレーション単位の課金のため、ゼロまでスケールします。
- デフォルトの読み取りは結果整合性(eventually consistent)です。強い整合性のある読み取りも要求できますが、いくつか制限があります。
- 追加費用でマルチリージョンレプリケーションを有効化できます。
- 料金体系:
- 読み取り:$0.25/100万読み取りリクエストユニット(2KB)
- 書き込み:$1.25/100万書き込みリクエストユニット(1KB)
- データ転送(送信):$0.09/GB
- ストレージ:$0.25/GB・月
筆者のコメント
- 個人的には、DynamoDBのAPIはRedisやMongoDBほど直感的ではありません。
- ベンダーロックインの問題もあります。DynamoDBはAWSにしか存在せず、コードを変更せずに他プロバイダーへ移行することはできません。
参考リンク
- 料金ページ
- サンプルアプリ:Next.js × DynamoDB
- 動画講座:Next.js × DynamoDB
まとめ:条件別おすすめデータベース
さて、Next.jsに最適なデータベースは何でしょうか?当然ながら、唯一の正解は存在しません。しかし、条件ごとにおすすめを挙げることはできます。
- リレーショナルDBが必要なら 👉🏻 Supabase または PlanetScale
- データベースブランチングが必要なら 👉🏻 PlanetScale
- リアルタイム更新が必要なら 👉🏻 Supabase または MongoDB Atlas
- グローバルな低レイテンシが必要なら 👉🏻 Upstash または DynamoDB
- グローバルな強い整合性が必要なら 👉🏻 Fauna
- 低レイテンシのKVストアが必要なら 👉🏻 Upstash
- PostgreSQLが好きなら 👉🏻 Supabase
- MySQLが好きなら 👉🏻 PlanetScale
- Redisが好きなら 👉🏻 Upstash
- Mongoが好きなら 👉🏻 MongoDB Atlas
- GraphQLが必要なら 👉🏻 Fauna
公平かつ正確であるよう努めました。修正すべき点にお気づきの方は、ぜひTwitterでお知らせください。
-
2022年版!Oculusで絶対に遊びたいVRゲームおすすめ10選
Oculusは、デジタルエンターテインメントの世界へとつなげ、現実の常識を再定義する可能性を秘めたVRヘッドセットです。Oculus向けの人気VRゲームは、そのエンターテインメントの世界へ飛び込むための入り口となります。さらに、無料で楽しめるOculus Go向けゲームも豊富にあり、仮想世界の果てへと跳び込み、現実とはひと味違うスリリングな体験を味わうことができます。そこで今回は、Oculusで遊びたいおすすめVRゲームを厳選してご紹介します。ぜひ最後までチェックしてみてください。Oculusで遊べるおすすめVRゲームTOP101. Moss(モス)対応機種:Oculus Rift価格:29.
-
PCで使えるニンテンドーDSエミュレーターおすすめ9選【無料】
2004年に登場したニンテンドーDSは、デュアルスクリーンという当時としては革新的なデザインを採用した携帯型ゲーム機です。『New スーパーマリオブラザーズ』『ゼルダの伝説』『ポケットモンスター』など数々の名作タイトルを生み出し、実験的な位置づけで投入されたにもかかわらず、全世界で約1億5400万台という驚異的なセールスを記録しました。史上最も成功した携帯ゲーム機の一つと言えるでしょう。しかし、生産終了から久しく経った現在、本体を持っていないとあの名作たちをもう一度プレイするのは簡単ではありません。そこで注目したいのが「エミュレーター」です。PCさえあれば、追加の出費をほとんどかけずにDSのゲ