Open14

Supabaseについてまとめ

ヌギー 📺ヌギー 📺

https://no-code.media/2023/01/08/post-5133/

機能

(2023年1月時点)

  • Database・・データベース
  • Storage・・画像、GIF、およびビデオなどの大容量ファイルの格納
  • API・・外部とサービスをつなぐAPIを生成
  • Auth・・認証、User権限を付与することができる。SNS認証(Google,Facebookなど)
  • Edge Function・・AWS LambdaやAzure Functionsのようなサーバーレスアーキテクチャ
  • Observabillty・・監視ログのトレースとデバッグ

利用方法

  • Supabaseクラウド
  • Docker
  • Kubernetes

https://qiita.com/kabochapo/items/6a2a391832825d17af7d

プラン

Free

下表のとおり制限がありますが、試したり少人数で利用したりする分には充分です。

データベース 500 MB までダウンロード 2 GB まで(アップロードは無制限)自動バックアップなし
Auth 50,000 ユーザ/月(MAU)監査証跡 1 時間
ストレージ 1 GB までダウンロード 2 GB まで(アップロードは無制限)
Edge Functions 呼び出し 50 万回まで10 個まで
API・データベースのログ保持 1 日間
無効化 一週間の不使用で無効化
サポート コミュニティによるサポートのみ

このプランではプロジェクトの数は二つとなっていますが、停止した状態では無制限です!
停止/起動して同時稼働を二つまでに抑えれば三つ以上のプロジェクトを使うことができます。

Pro

プロジェクトあたり月額 $25 です。

データベース 8 GB まで込みダウンロード 50 GB まで込み(アップロードは無制限)自動バックアップ 7 日間
Auth 100,000 MAU まで込み監査証跡 7 日間
ストレージ 100 GB まで込みダウンロード 200 GB まで込み(アップロードは無制限)
Edge Functions 呼び出し 200 万回まで100 個まで
API・データベースのログ保持 7 日間
サポート メールサポート

Read/Write 数が料金に影響しないのが嬉しいところです。
予想外の高額になる心配が無用で、非正規化やカウントのために Functions を組み合わせたり Read 削減に苦労したりしなくて済みます。

Free プランと違い、「~まで込み」と書いている部分では追加料金で制限を超えて利用できます。

Edge Functions は従量制のようには書かれていないので $25 に含まれていると思われます。

Enterprise

データベース $0.125 / GB容量等は無制限自動バックアップ 30 日間(ポイントインタイム)最適化 $50~
Auth 1,000,000 MAU まで込みメールの上限は応相談他は無制限
ストレージ $0.021 / GB転送 $0.07 / GB無制限
Edge Functions 無制限
API・データベースのログ保持 3 ヶ月間
サポート 年中無休のプレミアムエンタープライズサポート

https://zenn.dev/buenotheebiten/articles/31b33ef0687339

ヌギー 📺ヌギー 📺

https://zenn.dev/youcangg/articles/66b75ccba6b58a#typescript

  1. supabase
  2. Javascript Client Library
  3. supabase cli
  4. Database
    1. Table View
    2. Database Functions
    3. Database Webhooks
      • テーブルイベントが発生するたびに、データベースから他のシステムにリアルタイムでデータを送信することができる
    4. 全文検索
    5. データベースのテスト
      • Supabase CLI を使用してデータベースをテストできる
    6. サーバーレスAPI
      • データベーススキーマから直接3種類のAPIを自動生成
        - REST: レストフルインターフェースを介してデータベースと対話
        - Realtime: データベースの変更をリスニング
        - GraphQL: ベータ版
    7. 拡張機能
      • ダッシュボードからぽちぽちするだけで追加できる
  5. Auth
    1. 認証
      • Email & password.
      • Magic links (one-click logins).
      • Social providers.
      • Phone logins.
    2. 認可
      • Row Level Security
      • ユーザー管理
  6. Edge Functions
  7. RealTime
    1. Broadcast
    2. Presence
    3. Postgres Changes
  8. Storage
  9. 開発フロー
    1. ローカル
    2. スキーマの差分作成
    3. 移行のデプロイ
  10. TypeScript
    • CLIでschemaから型生成できる
ヌギー 📺ヌギー 📺

https://note.com/libproc/n/n0c07e54bf72b

Supabase Auth

ユーザ登録に使うコード:

const { data, error } = await supabase.auth.signUp({
  email: 'example@email.com',
  password: 'example-password',
})

OAuthの場合:

const { data, error } = await supabase.auth.signInWithOAuth({
  provider: 'github'
})

Supabase Storage

画像のアップロード:

const { data, error } = await supabase.storage.from('bucket_name').upload('file_path', file)

画像の提供:

supabase.storage.from('bucket').getPublicUrl('image.jpg')

画像のリサイズ:

supabase.storage.from('bucket').getPublicUrl('image.jpg', {
  transform: {
    width: 500,
    height: 600,
  },
})

Edge Functions

  • ユーザにもっとも近い地域(エッジ)からバックエンドの関数を提供する機能

  • JavaScriptやTypeScriptのランタイムであるDenoが利用されているため、これらの言語でコードを作成するならば、高速でサービスを提供できる

  • Edge Functionsのユースケース:

    • Stripeの決済機能

Realtime

  • ユースケース
    • リアルタイム性の高いオンラインゲームの実装

AI & Vectors

  • もしAI関連のデータをDBで扱いたい場合は、通常のDBではなく『ベクターデータ』を効率的に扱えるDBでなければいけません。
  • SupabaseのDBはPostgreSQLベースのRDB(リレーショナル・データベース)ではありますが、pgvectorというライブラリを利用してベクターデータベース化することができます。
ヌギー 📺ヌギー 📺

https://ritaiz.com/articles/setup-supabase

この記事では Supabase にログインしてプロジェクトを作成するところまでの手順を解説します。
Supabase でプロジェクトを作成すると以下のようにProject URL(プロジェクトの URL)とAPI Keyを取得でき、実際に Next.js や Flutter などのアプリケーションから Supabase を利用することができます。

ヌギー 📺ヌギー 📺

https://qiita.com/kabochapo/items/6a2a391832825d17af7d

リージョン

北南米、ヨーロッパ、アジア、オセアニアに 12 のリージョンがあります。

東京リージョンは五月頃に追加されました。

  • West US (North California)
  • East US (North Virginia)
  • Canada (Central)
  • West EU (Ireland)
  • West EU (London)
  • Central EU (Frankfurt)
  • South Asia (Mumbai)
  • Southeast Asia (Singapore)
  • Northeast Asia (Tokyo)
  • Northeast Asia (Seoul)
  • Oceania (Sydney)
  • South America (São Paulo)
ヌギー 📺ヌギー 📺

https://qiita.com/kabochapo/items/26b1bb753116a6904664

記事公開より後に Dart 用パッケージが v1.0.0 に達し、そこからさらに改善されてきています。
エラーのハンドリング方法など大きく変わっている部分がありますので、ドキュメントをよくご確認ください。

テーブル結合

ちょっと癖があります。
使う前にここを読んでおくと入っていきやすいと思います。

ヌギー 📺ヌギー 📺

https://note.com/shift_tech/n/n5191b5f19c9b

作成するアプリケーションには、以下機能を持たせていきます。

  • ログインページにて、Eメールアドレスとパスワードによるユーザー登録及びログインを行う
  • ゲーム終了時の成績(順位と点数)を、ログイン後のメインページで登録/閲覧できる
  • ユーザーの成績は、他ユーザーからは閲覧できない

作成時の言語バージョンは以下です。

  • React 18.2
  • Node.js 16.14
  • supabase_js 1.35.4
ヌギー 📺ヌギー 📺

https://qiita.com/kaho_eng/items/8a7faf77222a599fb31c

  1. supabaseのプロジェクトを作成しよう!
  2. vercelプロジェクトの作成とGitHub連携をしよう!
  3. VercelとSupabaseを連携しよう!
  4. GitHubのリポジトリをクローンしよう!
  5. Vercelの環境変数を取得しよう!
  6. Supabaseのデータベースに接続しよう!
ヌギー 📺ヌギー 📺

https://qiita.com/Kenta_Kobayashi/items/ba445245ecd357dd19d7#比較表

比較表

サービス名 データベース互換性 主な特徴 データベース容量 リージョン Prisma対応 その他主要リソース
PlanetScale MySQL - 読込:10 億行 / 月- 書込:1,000 万行 / 月- ブランチ機能(1ブランチまで) 5GB 東京
Supabase Postgres - 無制限のAPIリクエスト- 月間アクティブユーザー:50,000- リアルタイムサブスクリプション- Row Level Security 500MB 東京 - CPU:2コア(共有)- RAM:1GB- 帯域幅:5GB- RAM:1GB- 帯域幅:5GB- ファイルストレージ:1GB
Neon Postgres - 計算 20 時間 / 月- ブランチ機能(10ブランチまで) 0.5GiB 日本に近いリージョン:シンガポール
Vercel Postgres Postgres - 計算 60 時間 / 月- 書き込み: 256MB / 月 256MB シンガポール - データ転送量:256MB / 月- JS用SDKあり
TiDB Serverless MySQL(NewSQL) - 分散スケールDB- 5000万リクエストユニット(RU)/月 行ベースのデータ25GB列ベースのデータ25GB 東京/大阪
CockroachDB Serverless Postgres(NewSQL) - 分散スケールDB- 5000万リクエストユニット(RU)/月 5GB シンガポール
Cloudflare D1 SQLite - エッジ分散 SQLite- 読み取り行数:500万/日- 書き込み行数:10万/日 5GB 東京/大阪