피드로 돌아가기
Dev.toDatabase
원문 읽기
site_id에서 scope_id로의 전환을 통한 데이터 가시성 모델 단일화
Multi-site schemas: lessons from evolving one large system over time
AI 요약
Context
초기 site_id 기반의 단순 필터링 구조에서 사이트 간 데이터 공유 요구사항 증가에 따른 확장성 한계 직면. many-to-many 관계 테이블 도입 시 엔티티 성격에 따라 쿼리 패턴이 이원화되어 코드 복잡도 및 유지보수 비용 상승.
Technical Solution
- 가시성(Visibility) 개념을 도입한 scope_id 기반의 추상화 레이어 설계
- scope_members 테이블을 통해 특정 scope에 포함된 site_id 집합을 관리하는 구조 채택
- 모든 읽기 쿼리를
WHERE scope_id IN (...)패턴으로 단일화하여 쿼리 일관성 확보 - active site에 해당하는 허용 scope 리스트를 사전 조회 후 캐싱하여 DB 부하 최소화
- 전역 가시성(Global Visibility)을 scope_id = 0으로 정의하여 특수 케이스 처리 로직 제거
- 데이터 복제(Cloning) 방식 대신 단일 ID 기반의 가시성 제어로 데이터 정합성 및 저장 공간 효율화
실천 포인트
1. 데이터 소유권(Ownership)과 접근 권한(Visibility)을 분리하여 설계했는가?
2. 엔티티 종류에 따라 쿼리 패턴이 달라지는 파편화 지점이 존재하는가?
3. 다중 지역/사이트 대응 시 데이터 복제보다 가시성 제어 모델이 유리한 상황인가?
4. 확장된 모델이 초기 단순 모델 대비 성능 저하나 구현 복잡도 증가가 미미한가?