SaaS B2B 제품을 준비 중입니다. tenant당 schema 분리 방식으로 갈지, single schema + tenant_id 컬럼 분리로 갈지 고민입니다.
예상 tenant 수는 1만 정도, 각 tenant 데이터는 100MB~10GB 사이 분산입니다. PostgreSQL 18 vs MongoDB 8 둘 중 어떤 게 적합할까요? 운영 측면도 함께 알려주세요.
SaaS B2B 제품을 준비 중입니다. tenant당 schema 분리 방식으로 갈지, single schema + tenant_id 컬럼 분리로 갈지 고민입니다.
예상 tenant 수는 1만 정도, 각 tenant 데이터는 100MB~10GB 사이 분산입니다. PostgreSQL 18 vs MongoDB 8 둘 중 어떤 게 적합할까요? 운영 측면도 함께 알려주세요.
댓글 1
1만 tenant + GB 단위 편차 + B2B SaaS — 이 조합에서는 PostgreSQL 18 + tenant_id 컬럼 분리(single schema)가 가장 무난한 정답입니다. 이유를 단계별로 설명드립니다.
1) "schema 분리"는 1만 tenant에서 운영 지옥
tenant당 schema 분리는 100~500 tenant까지는 깔끔하지만 1만이 되면:
PostgreSQL 18에서
pg_dump가 일부 빨라지긴 했지만 본질은 그대로입니다.2) "테이블 분리(테이블당 tenant 1만)"는 더 나쁨
1만 테이블이 되면 PostgreSQL의 catalog가 비대해지고, autovacuum·analyze가 모든 테이블을 순회하면서 IO 폭증. 8.4 이전 MySQL의 file-per-table 악몽과 비슷합니다.
3) Single schema + tenant_id 컬럼 (권장)
장점
단점·대응
4) MongoDB가 더 나은 케이스
다음 중 둘 이상 해당되면 MongoDB 검토:
MongoDB 8은 multi-tenant에서 database-per-tenant 또는 collection 분리가 일반적이지만, 1만 collection도 운영 부담이 큽니다.
5) PostgreSQL 18의 multi-tenant 친화 기능
RLS성능이 17 대비 약 30% 향상 (planner 개선)6) 실무 운영 권장
SET app.tenant_id강제마지막 답변
"PostgreSQL 18 + single schema + tenant_id + RLS"가 1만 tenant 규모에서 가장 검증된 패턴입니다. MongoDB는 schema 자유도가 핵심 가치일 때 의미가 있고, 단순 multi-tenant 격리 목적만이라면 PostgreSQL이 압도적으로 운영 비용이 낮습니다.