株式会社WR

株式会社WR

WEB TOTAL CONSULTING

PostgreSQLのスキーマ機能を活用したマルチテナント設計
ブログ一覧へ
技術ブログ

PostgreSQLのスキーマ機能を活用したマルチテナント設計

弊社では複数のプロジェクトを同一PostgreSQLサーバー上で運用するために、スキーマ分離によるマルチテナント設計を採用しています。Laravelでの実装方法と運用上のポイントをまとめます。

PostgreSQLスキーマとは

PostgreSQLには「スキーマ(Schema)」という概念があり、同一データベース内でテーブルを名前空間で分離することができます。

postgres (データベース)
  ├── anker (スキーマ) ... 株式会社アンカーリンク
  ├── wr    (スキーマ) ... 株式会社WR
  └── public (デフォルトスキーマ)

Laravelでの設定

config/database.phpsearch_path を環境変数で切り替えます。

'pgsql' => [
    'driver'      => 'pgsql',
    'host'        => env('DB_HOST'),
    'database'    => env('DB_DATABASE'),
    'username'    => env('DB_USERNAME'),
    'password'    => env('DB_PASSWORD'),
    'search_path' => env('DB_SCHEMA', 'public'),
],

.env でスキーマを指定するだけで、各プロジェクトのテーブルを完全に分離できます。


メリット

  1. データの完全分離 — 別プロジェクトのデータが混在しない
  2. マイグレーションの独立性 — 各プロジェクトのmigrationが干渉しない
  3. バックアップの柔軟性 — スキーマ単位でdumpが可能
  4. コスト削減 — サーバーを共用しつつ論理的に分離

注意点

  • search_path の設定が正しくないとテーブルが見つからないエラーが発生します
  • 新規スキーマ作成にはDB管理者権限が必要です
  • スキーマをまたいだJOINも可能ですが、運用は慎重に

まとめ

PostgreSQLのスキーマ機能はマルチプロジェクト運用に非常に有効な手段です。弊社ではこの仕組みを活用して複数クライアントのシステムを効率よく管理しています。

Category 技術ブログ

Related Posts

関連記事

開発・技術のご相談はお気軽に

お見積りは無料です。まずはお気軽にご相談ください。

お問い合わせ →