ソリューション

テナントごとに分離したデータベース

顧客同士でテーブルを共有できない場合は、テナントごとに専用の Relyt One プロジェクトを用意しましょう。プロジェクトはそれぞれ独立した PostgreSQL データベースで、専用のストレージ、コンピュート、認証情報を持ち、バックエンドから API を 1 回呼び出すだけで作成できます。

しくみ

  1. 01

    テナントの登録時にプロジェクトを作成

    バックエンドが API キーで Open API を呼び出し、リージョンと、テナントのデータベースのオーナーロールに使うパスワードを渡します。プロジェクトにはメインブランチとプライマリコンピュートが付いています。

    curl -X POST "https://relyt.one/api/v1/projects" \
      -H "Authorization: Bearer $RELYT_API_KEY" \
      -H "Content-Type: application/json" \
      -d "{\"name\":\"tenant-$TENANT_ID\",\"orgId\":\"$ORG_ID\",\"region\":\"$REGION_ID\",\"password\":\"$TENANT_DB_PASSWORD\"}"
  2. 02

    テナントの接続情報を保存

    ステータスが READY になるまでプロジェクトのコンピュート一覧を確認し、host をテナントのレコードと一緒に保存します。スキーマのマイグレーションを実行し、標準の PostgreSQL ドライバーで接続してください。

    curl "https://relyt.one/api/v1/projects/$PROJECT_ID/computes" \
      -H "Authorization: Bearer $RELYT_API_KEY"
  3. 03

    テナントの退会時にプロジェクトを削除

    プロジェクトを削除すると、そのコンピュートが削除され、プロジェクトとブランチは削除済みになります。

    curl -X DELETE "https://relyt.one/api/v1/projects/$PROJECT_ID" \
      -H "Authorization: Bearer $RELYT_API_KEY"

今すぐ使える機能

  • テナント間で何も共有しない

    テナントごとにデータベース、ロール、パスワード、接続文字列が別々です。あるテナントのデータベースで起きた長いクエリ、ロック、失敗したマイグレーションは、そのデータベースの中にとどまります。

  • テナントごとのコンピュート

    プロジェクトはそれぞれ専用のコンピュートで動き、サイズは CU 単位です(1 CU = 1 vCPU + 4 GB RAM)。テナントがアイドル状態になると、そのコンピュートは一時停止でき、次の接続で再開します。

  • テナント単位でブランチ

    テナントのプロジェクトはどれもブランチに対応しているので、本番で実行する前に、あるテナントのデータをコピーオンライトで分岐させてマイグレーションを試せます。

  • 最初から最後まで自動化

    REST の Open API でプロジェクトの作成、確認、削除ができます。最初の作成リクエストの処理中に同じリクエストを送ると 202 を返し、プロジェクトが 2 つ作られることはありません。

注意事項

  • 無料プランで作成できるプロジェクトは 5 つまでです。そのため現時点では、テナントごとに 1 プロジェクトという構成は少数のテナント向けです。プランの上限を超えてプロジェクトを作成すると 403 を返します。
  • Relyt One はリクエストをテナントに振り分けません。各テナントと接続情報の対応はアプリ側で管理してください。

ほかのソリューション

無料プランで試しましょう。

GitHub または Google でサインインし、プロジェクトと API キーを作成して、上の呼び出しを実行してください。クレジットカードは不要です。