시스템 설계 · 중급
대용량 테이블의 관리 및 성능 향상을 위해 파티셔닝(Partitioning)을 고려할 때, 어떤 종류의 파티셔닝(예: Range, List, Hash)을 선택할 수 있으며, 각각의 장단점과 적합한 사용 시나리오는 무엇인가요?
힌트 · 파티셔닝은 테이블을 물리적으로 분리하여 관리 효율성과 쿼리 성능을 높입니다. Range는 시간/숫자 범위, List는 특정 값 목록, Hash는 데이터 균등 분배에 적합하며, 각각 장단점을 가집니다.
Range 파티셔닝List 파티셔닝Hash 파티셔닝파티션 프루닝데이터 분산
모범답안
대용량 테이블 파티셔닝은 성능 향상에 중요한데, Range, List, Hash 파티셔닝을 고려할 수 있습니다.
Range 파티셔닝은 날짜나 숫자 범위 기준으로 데이터를 분할합니다. 예를 들어, 월별 판매 데이터에 적합하며, 특정 기간 데이터 조회 시 성능이 좋습니다. 단점은 데이터가 특정 범위에 몰릴 경우 파티션 간 불균형이 발생할 수 있습니다.
List 파티셔닝은 특정 값 목록을 기준으로 분할합니다. 예를 들어, 국가별 데이터를 분리할 때 유용합니다. 특정 국가 데이터 조회에 효과적이지만, 새로운 값 추가 시 파티션 정의를 변경해야 할 수 있습니다.
Hash 파티셔닝은 해시 함수를 사용하여 데이터를 균등하게 분배합니다. 데이터가 고르게 분포되어야 할 때 유용하지만, 특정 범위 데이터 조회에는 적합하지 않습니다.
각 파티셔닝 방식은 장단점이 뚜렷하므로, 데이터 특성과 쿼리 패턴을 고려하여 적절한 방식을 선택해야 합니다. 파티션 프루닝을 통해 쿼리 성능을 최적화할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 데이터베이스 설계 면접 질문
- 회원 관리 시스템을 설계할 때, '이메일 주소'와 '전화번호'를 저장하기 위한 데이터 타입을 선택해야 합니다. 적절한 데이터 타입과 길이를 선택하는 기준은 무엇이며, 잘못된 선택이 성능 및 저장 공간에 미치는 영향은 무엇인가요?
- 외래 키(Foreign Key) 제약조건을 설정할 때, 'ON DELETE CASCADE', 'ON DELETE SET NULL', 'ON DELETE RESTRICT' 등의 옵션 중 어떤 경우에 각 옵션을 선택해야 하는지 구체적인 시나리오를 들어 설명해 주세요.
- 뷰(View)와 물질화된 뷰(Materialized View)의 차이점은 무엇이며, 각각 어떤 상황에서 사용하는 것이 적절한가요? 특히 물질화된 뷰가 대용량 데이터 환경에서 쿼리 성능 최적화에 어떻게 기여할 수 있는지 설명해 주세요.
- 데이터베이스 트랜잭션의 격리 수준(Isolation Level)이 무엇이며, 'READ COMMITTED'와 'REPEATABLE READ' 수준의 차이점과 각각 어떤 상황에서 사용해야 하는지 설명해 주세요.
- 다중 테넌트(Multi-tenant) SaaS 애플리케이션을 위한 데이터베이스를 설계한다고 가정해 봅시다. 테넌트 데이터 격리 수준(개별 DB, 스키마, 테이블)에 따른 장단점을 설명하고, 각 방식이 데이터 보안, 성능, 확장성, 운영 복잡성에 미치는 영향에 대해 구체적인 설계 전략과 함께 논하시오.
- 대규모 분산 데이터베이스 시스템에서 일관성(Consistency), 가용성(Availability), 파티션 허용(Partition Tolerance) 중 두 가지를 선택해야 하는 CAP 이론의 제약사항을 극복하기 위한 데이터베이스 설계 전략을 설명하고, 특정 비즈니스 요구사항(예: 금융 거래 vs. 소셜 미디어 피드)에 따라 어떤 일관성 모델(강력, 최종, 세션 등)과 분산 트랜잭션 처리 방식을 선택할지 구체적인 시나리오와 함께 논하시오.