Database-level multitenancy gives every tenant a dedicated database object. A brewery and a coffee chain can share one PostgreSQL instance while keeping their business data isolated. section 2.1.1
PostgreSQL multitenancy can be organized at several levels:
- Table-level: share tables and distinguish records with a tenant_id column. section 2.1.1
- Schema-level: give each tenant a dedicated schema inside one logical database. section 2.1.1
- Database-level: give each tenant its own database, with access controlled through roles and permissions. section 2.1.1
Create isolated tenant databases
Connect to PostgreSQL with psql, create one database per merchant, and verify the databases: `docker exec -it postgres psql -U postgres`; `CREATE DATABASE coffee_chain; CREATE DATABASE brewery;`; `SELECT datname FROM pg_database;`. Connect to a tenant database with `\\c coffee_chain`. section 2.1.1
Figure 2.1 A Postgres instance with two databases for different tenants
Visualizes one PostgreSQL instance hosting separate databases for two tenants. section 2.1.1
