임베디드 vs 참조 설계를 쿼리 패턴 기반으로 판단한 결
인턴 프로젝트에서 사용자 활동 로그를 MongoDB에 넣을 때 처음에는 RDB처럼 컬렉션을 분리했다가, 조회마다 3단계 lookup이 생겨서 쿼리 패턴부터 다시 정의했습니다. 가장 자주 요청되는 최근 7일 행동 히스토리는 임베디드 배열로 통합하고, 여러 컬렉션에서 참조되는 프로필 정보는 별도 컬렉션으로 유지했습니다.
compound index를 user_id·timestamp 기준으로 잡아 조회 성능을 높였고, 두 컬렉션을 동시에 써야 하는 경우에만 세션 트랜잭션을 좁게 적용했습니다. MongoDB의 일관성 모델은 기본 단일 도큐먼트 수준이라 그 바깥을 잘못 의존하면 정합성이 흔들린다는 점도 이 과정에서 직접 확인했습니다.
도큐먼트 모양은 읽는 패턴이 결정한다는 기준을 몸에 익혔습니다.