Skip to content
LakeBench
ProblemsCommunityPricing
Sign inStart practicing
Back
  1. Home
  2. Interview prep
  3. Modeling for multi-tenant SaaS data

Data modeling · Modern Modeling Approaches

Modeling for multi-tenant SaaS data

Mediumdata-modeling-54
multi-tenantsaasrow-level-securitypartitioning

Question

How would you model data for a SaaS product with thousands of customer accounts?

Solution

When modeling analytics for a multi-tenant SaaS platform, include tenant_id as a non-nullable partitioning and clustering key across every warehouse table. Depending on tenant volume and compliance requirements, choose between a shared table model with row-level security or dedicated per-tenant schemas.

Multi-tenant warehouse schema patterns

In SaaS platforms, two primary architecture patterns exist:

  • Shared tables (pool model): All tenant data resides in the same tables, distinguished by tenant_id. This pattern simplifies schema migrations, reduces warehouse metadata overhead, and supports cross-tenant benchmarking queries.
  • Separate schemas (silo model): Dedicated schemas or databases per tenant. This provides physical isolation for strict enterprise compliance but introduces operational complexity when running migrations across thousands of schemas.

Row-level security and tenant isolation

For shared tables, implement database-native row-level security (RLS) policies. When customer analysts run embedded analytics, their database session passes a tenant token that restricts visibility automatically:

CREATE ROW ACCESS POLICY tenant_isolation_policy
ON fact_events
FOR (tenant_id STRING)
TO (current_user())
USING (tenant_id = CURRENT_SESSION_TENANT());

Enforcing isolation at the storage layer guarantees that an accidental developer omission in a WHERE clause cannot leak customer data across organizations.

Data skew and noisy neighbors

Large enterprise tenants generate orders of magnitude more events than smaller accounts, causing severe data skew. Cluster tables by tenant_id alongside event_date so query engines isolate storage partitions. For extreme enterprise outliers, isolate their heavy workloads onto dedicated warehouse compute clusters to keep shared queries responsive for standard tenants.

PreviousNext