13. 게임 데이터 모델링: RDBMS vs NoSQL, 정규화/비정규화, 핫·콜드 분리
문제 13 — 게임 데이터 모델링: RDBMS vs NoSQL, 정규화/비정규화, 핫·콜드 분리
MMORPG 백엔드의 데이터 저장을 설계한다. 계정/캐릭터/인벤토리/우편/길드/랭킹/ 세션/행동 로그(텔레메트리) 등 성격이 제각각인 데이터를 어디에, 어떤 모델로 저장할지 정해야 한다. 다음에 답하라.
-
RDBMS(관계형) 와 NoSQL(키-값/문서/와이드컬럼) 의 데이터 모델·일관성· 확장 방식 차이를 설명하라. "스키마-온-라이트 vs 스키마-온-리드", 조인/트랜잭션 지원, 수평 확장(샤딩) 관점에서 비교하라.
-
정규화(normalization) vs 비정규화(denormalization) 의 트레이드오프를 설명하라. 정규화가 무결성·중복제거에 좋은 이유와, 그럼에도 게임에서 자주 비정규화하는 이유(읽기 성능·조인 회피·집계 미리계산)를 예로 들어라.
-
접근 패턴이 스키마를 결정한다는 NoSQL 설계 원칙을 설명하라. 예를 들어 "캐릭터 로그인 시 인벤토리 전체를 한 번에 읽는다"는 패턴이라면 문서/KV 모델을 어떻게 잡겠는가? 관계형으로 정규화했을 때와 비교하라.
-
위 데이터들을 분류해 어디에 무엇을 저장할지 제안하라: 계정/결제, 캐릭터 세이브·인벤토리, 우편, 길드, 실시간 랭킹, 세션 상태, 행동 로그/텔레메트리. 각 선택의 근거(트랜잭션 필요성, 읽기/쓰기 비율, 규모, 수명)를 달아라.
-
핫 데이터 vs 콜드 데이터 분리 전략을 설명하라. 자주 접근하는 활성 캐릭터 데이터와, 거의 안 보는 과거 로그/휴면 계정을 같은 저장소·같은 등급에 두면 생기는 문제와 해결(캐시 계층, 티어드 스토리지, 아카이빙)을 논하라.
직접 답을 작성한 뒤, 위 해설 보기에서 모범답안과 대조하세요.