실무 적용 문제: 데이터베이스 기초 (RDBMS vs NoSQL)
Week 1 | 주제: 데이터베이스 기초
공부한 개념이 실제 서비스에서 어떻게 쓰이는지 생각해보는 문제입니다.
문제 1 — 배달의 민족 결제 시스템 (RDBMS vs NoSQL)
배달의 민족에서 사용자가 결제를 완료하면 다음 정보가 저장된다.
- 주문 번호, 사용자 ID, 가게 ID, 메뉴 목록, 결제 금액, 결제 시각
Q1. 이 결제 데이터를 저장할 때 RDBMS와 NoSQL 중 어떤 것이 더 적합한가?
다음 관점에서 근거를 들어 설명하라.
- 데이터 정합성
- 다른 테이블(사용자, 가게, 메뉴)과의 관계
Q2. 반면 배달의 민족의 리뷰 데이터는 가게마다 항목이 다르다.
(어떤 가게는 맛/양/배달속도, 어떤 가게는 사진만 있음)
이 경우 NoSQL의 어떤 종류가 적합하며, 그 이유는?
힌트
- 결제 데이터는 정합성이 무너지면 실제 금전 손실이 발생한다.
- 구조가 유동적인 데이터는 스키마가 없는 Document DB가 유연하게 대응 가능하다.
문제 2 — 네이버 실시간 검색어 (CAP 이론)
네이버 실시간 검색어 서비스는 전국 사용자의 검색 데이터를 집계해 보여준다.
이 시스템은 여러 서버(노드)에 분산되어 있다.
Q3. CAP 이론에 따르면 분산 시스템에서 세 가지 속성(일관성, 가용성, 분할 내성)을 동시에 만족할 수 없다.
실시간 검색어 서비스에서 가장 포기하기 쉬운 속성은 무엇이고, 그 이유는?
Q4. 다음 중 CAP 이론의 설명으로 올바른 것은?
- (A) 분산 시스템이 아니면 CAP 이론이 적용되지 않는다
- (B) 일관성(C)과 가용성(A)을 동시에 만족하면서 분할 내성(P)도 얻을 수 있다
- (C) 네트워크 파티션이 발생하면 일관성과 가용성 중 하나를 포기해야 한다
- (D) NoSQL은 항상 가용성(A)을 포기한다
힌트
- 실시간 검색어가 전국 동시에 1위가 다를 수도 있다. 이것이 어떤 속성의 희생인지 생각해보자.
- 네트워크 분리(파티션)는 현실에서 피할 수 없으므로 P는 항상 보장해야 한다.
문제 3 — 쿠팡 로그인 세션 관리 (Key-Value DB)
쿠팡은 수백만 명의 사용자가 동시에 로그인 상태를 유지한다.
각 사용자의 세션 정보(로그인 토큰 → 사용자 ID)를 매우 빠르게 조회해야 한다.
Q5. 이 세션 데이터를 RDBMS에 저장하지 않고 Redis(Key-Value NoSQL)를 사용하는 이유를 설명하라.
Q6. Redis를 세션 저장소로 사용할 때 발생할 수 있는 단점은 무엇이며,
이를 보완하기 위해 어떤 전략을 사용할 수 있는가?
힌트
- Redis는 인메모리 기반으로 매우 빠르지만, 서버가 재시작되면 데이터가 사라질 수 있다.
- 세션은 단순한 key→value 구조라 복잡한 관계형 쿼리가 필요 없다.
문제 4 — 인스타그램 팔로우 관계 (Graph DB)
인스타그램에서는 "나→A를 팔로우", "A→B를 팔로우"일 때,
"내가 알 수도 있는 사람"으로 B를 추천한다.
Q7. 이 팔로우 관계 데이터를 RDBMS로 구현하면 어떤 문제가 생기는가?
특히 추천 탐색이 깊어질수록 성능이 어떻게 달라지는지 설명하라.
Q8. 이 문제를 해결하기 위해 NoSQL의 Graph DB를 사용한다.
Graph DB가 관계 탐색에서 RDBMS보다 유리한 이유를 구조 관점에서 설명하라.
힌트
- RDBMS에서 팔로우 관계는 JOIN 연산으로 탐색한다. 깊이가 깊어질수록 JOIN 횟수는 어떻게 되는가?
- Graph DB는 노드와 엣지 구조로 관계 자체를 저장한다.
문제 5 — 당근마켓 상품 목록 (스키마 유무)
당근마켓에는 전자기기, 의류, 식물, 자동차 등 다양한 카테고리의 상품이 등록된다.
전자기기는 "브랜드, 모델명, 용량"이 있고, 식물은 "종류, 화분 크기, 햇빛 조건"이 있다.
Q9. 이 상품 데이터를 스키마가 고정된 RDBMS로 설계한다면 어떤 문제가 생기는가?
Q10. 스키마가 없는(Schema-less) NoSQL을 사용할 때의 장점과 단점을 각각 실제 서비스 운영 관점에서 서술하라.
💡 힌트
- RDBMS에서 카테고리마다 다른 컬럼을 처리하려면 어떤 설계 방식이 필요한지 생각해보자. (예: 수많은 NULL 컬럼, 별도 테이블 분리)
- 스키마가 없으면 유연하지만, 데이터 정합성을 애플리케이션 레벨에서 직접 관리해야 한다.
실무 적용 문제: 데이터베이스 기초 (RDBMS vs NoSQL)
문제 1 — 배달의 민족 결제 시스템 (RDBMS vs NoSQL)
배달의 민족에서 사용자가 결제를 완료하면 다음 정보가 저장된다.
Q1. 이 결제 데이터를 저장할 때 RDBMS와 NoSQL 중 어떤 것이 더 적합한가?
다음 관점에서 근거를 들어 설명하라.
Q2. 반면 배달의 민족의 리뷰 데이터는 가게마다 항목이 다르다.
(어떤 가게는 맛/양/배달속도, 어떤 가게는 사진만 있음)
이 경우 NoSQL의 어떤 종류가 적합하며, 그 이유는?
힌트
문제 2 — 네이버 실시간 검색어 (CAP 이론)
네이버 실시간 검색어 서비스는 전국 사용자의 검색 데이터를 집계해 보여준다.
이 시스템은 여러 서버(노드)에 분산되어 있다.
Q3. CAP 이론에 따르면 분산 시스템에서 세 가지 속성(일관성, 가용성, 분할 내성)을 동시에 만족할 수 없다.
실시간 검색어 서비스에서 가장 포기하기 쉬운 속성은 무엇이고, 그 이유는?
Q4. 다음 중 CAP 이론의 설명으로 올바른 것은?
힌트
문제 3 — 쿠팡 로그인 세션 관리 (Key-Value DB)
쿠팡은 수백만 명의 사용자가 동시에 로그인 상태를 유지한다.
각 사용자의 세션 정보(로그인 토큰 → 사용자 ID)를 매우 빠르게 조회해야 한다.
Q5. 이 세션 데이터를 RDBMS에 저장하지 않고 Redis(Key-Value NoSQL)를 사용하는 이유를 설명하라.
Q6. Redis를 세션 저장소로 사용할 때 발생할 수 있는 단점은 무엇이며,
이를 보완하기 위해 어떤 전략을 사용할 수 있는가?
힌트
문제 4 — 인스타그램 팔로우 관계 (Graph DB)
인스타그램에서는 "나→A를 팔로우", "A→B를 팔로우"일 때,
"내가 알 수도 있는 사람"으로 B를 추천한다.
Q7. 이 팔로우 관계 데이터를 RDBMS로 구현하면 어떤 문제가 생기는가?
특히 추천 탐색이 깊어질수록 성능이 어떻게 달라지는지 설명하라.
Q8. 이 문제를 해결하기 위해 NoSQL의 Graph DB를 사용한다.
Graph DB가 관계 탐색에서 RDBMS보다 유리한 이유를 구조 관점에서 설명하라.
힌트
문제 5 — 당근마켓 상품 목록 (스키마 유무)
당근마켓에는 전자기기, 의류, 식물, 자동차 등 다양한 카테고리의 상품이 등록된다.
전자기기는 "브랜드, 모델명, 용량"이 있고, 식물은 "종류, 화분 크기, 햇빛 조건"이 있다.
Q9. 이 상품 데이터를 스키마가 고정된 RDBMS로 설계한다면 어떤 문제가 생기는가?
Q10. 스키마가 없는(Schema-less) NoSQL을 사용할 때의 장점과 단점을 각각 실제 서비스 운영 관점에서 서술하라.
💡 힌트