Skip to content

실무 적용 문제: 데이터베이스 기초 (RDBMS vs NoSQL) #53

Description

@kmw10693

실무 적용 문제: 데이터베이스 기초 (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 컬럼, 별도 테이블 분리)
  • 스키마가 없으면 유연하지만, 데이터 정합성을 애플리케이션 레벨에서 직접 관리해야 한다.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions