시스템 설계 · 중급
데이터베이스 트랜잭션의 격리 수준(Isolation Level)이 무엇이며, 'READ COMMITTED'와 'REPEATABLE READ' 수준의 차이점과 각각 어떤 상황에서 사용해야 하는지 설명해 주세요.
힌트 · 격리 수준은 여러 트랜잭션이 동시에 실행될 때 데이터 일관성을 유지하기 위한 규칙입니다. READ COMMITTED는 커밋된 데이터만 읽지만, REPEATABLE READ는 트랜잭션 내에서 동일한 데이터를 반복해서 읽을 수 있도록 보장합니다.
ACIDREAD COMMITTEDREPEATABLE READ팬텀 리드Non-Repeatable Read
모범답안
데이터베이스 트랜잭션의 격리 수준은 여러 트랜잭션이 동시에 실행될 때 데이터의 일관성을 유지하기 위한 규칙입니다.
'READ COMMITTED'는 트랜잭션이 다른 트랜잭션에 의해 커밋된 데이터만 읽도록 보장합니다. 즉, 아직 커밋되지 않은 데이터는 볼 수 없습니다. 이는 'Non-Repeatable Read' 현상, 즉 한 트랜잭션 내에서 같은 데이터를 두 번 읽었을 때 값이 달라지는 문제를 방지하지는 못합니다. 주로 데이터의 최신성을 중요하게 여기지만, 완벽한 일관성이 필수는 아닌 일반적인 웹 애플리케이션 등에서 사용됩니다.
반면 'REPEATABLE READ'는 한 트랜잭션 내에서 동일한 데이터를 반복해서 읽을 때 항상 같은 값을 읽도록 보장합니다. 이는 'Non-Repeatable Read'를 방지하지만, '팬텀 리드' 현상(트랜잭션 실행 중에 새로운 데이터가 삽입되어 읽는 결과가 달라지는 현상)은 발생할 수 있습니다. 금융 거래나 재고 관리처럼 데이터의 일관성이 매우 중요한 시스템에서 주로 사용됩니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 데이터베이스 설계 면접 질문
- 외래 키(Foreign Key) 제약조건을 설정할 때, 'ON DELETE CASCADE', 'ON DELETE SET NULL', 'ON DELETE RESTRICT' 등의 옵션 중 어떤 경우에 각 옵션을 선택해야 하는지 구체적인 시나리오를 들어 설명해 주세요.
- 뷰(View)와 물질화된 뷰(Materialized View)의 차이점은 무엇이며, 각각 어떤 상황에서 사용하는 것이 적절한가요? 특히 물질화된 뷰가 대용량 데이터 환경에서 쿼리 성능 최적화에 어떻게 기여할 수 있는지 설명해 주세요.
- 대용량 테이블의 관리 및 성능 향상을 위해 파티셔닝(Partitioning)을 고려할 때, 어떤 종류의 파티셔닝(예: Range, List, Hash)을 선택할 수 있으며, 각각의 장단점과 적합한 사용 시나리오는 무엇인가요?
- 다중 테넌트(Multi-tenant) SaaS 애플리케이션을 위한 데이터베이스를 설계한다고 가정해 봅시다. 테넌트 데이터 격리 수준(개별 DB, 스키마, 테이블)에 따른 장단점을 설명하고, 각 방식이 데이터 보안, 성능, 확장성, 운영 복잡성에 미치는 영향에 대해 구체적인 설계 전략과 함께 논하시오.
- 대규모 분산 데이터베이스 시스템에서 일관성(Consistency), 가용성(Availability), 파티션 허용(Partition Tolerance) 중 두 가지를 선택해야 하는 CAP 이론의 제약사항을 극복하기 위한 데이터베이스 설계 전략을 설명하고, 특정 비즈니스 요구사항(예: 금융 거래 vs. 소셜 미디어 피드)에 따라 어떤 일관성 모델(강력, 최종, 세션 등)과 분산 트랜잭션 처리 방식을 선택할지 구체적인 시나리오와 함께 논하시오.
- 기업의 데이터 분석 및 의사결정을 위한 데이터 웨어하우스를 설계해야 합니다. OLTP 시스템과 OLAP 시스템의 데이터 모델링 접근 방식의 근본적인 차이점을 설명하고, 스타 스키마(Star Schema)와 스노우플레이크 스키마(Snowflake Schema)의 장단점을 비교하여 특정 분석 요구사항(예: 복잡한 차원 분석 vs. 저장 공간 최적화)에 따라 어떤 스키마를 선택할지 설계 관점에서 설명하시오.