#Schema Design
7개의 글
-
RDB 설계 시리즈 8편: 무중단 마이그레이션과 멀티테넌트 설계 — ALTER TABLE 함정부터 Expand-Contract, 테넌트 격리 전략까지
운영 중인 서비스에서 스키마를 바꾸는 건 '설계'만큼이나 어렵다. ALTER TABLE의 락 함정, Expand-Contract 패턴으로 무중단 컬럼 변경, Flyway와 Liquibase 비교, 롤백 전략, 그리고 멀티테넌트 스키마 설계의 세 가지 전략까지. 시리즈의 마지막 편이다.
-
RDB 설계 시리즈 7편: 안티패턴과 시간 데이터 설계 — EAV, God Table, Temporal Table, 이벤트 소싱까지
스키마 설계에서 반복적으로 실패하는 패턴을 정리한다. EAV, God Table, Polymorphic Association, Soft Delete의 함정을 다루고, 시간 데이터 설계(Temporal Table, SCD)와 이벤트 소싱 스키마의 기초까지. '하지 말아야 할 것'을 아는 것이 설계 실력이다.
-
RDB 설계 시리즈 5편: 주문/결제 도메인 스키마 설계 — 실무 수준까지
이커머스 주문 도메인을 실무 수준으로 설계한다. 주문-배송-아이템 3단 계층, 상태 머신, 결제 멱등성, 복합 결제, 아이템 단위 환불, 취소 이력까지. 한 도메인을 끝까지 파고든다.
-
RDB 설계 시리즈 4편: 관계 설계 패턴 — 1:1, 1:N, N:M 그리고 그 너머
테이블 관계를 설계할 때 '감으로' 하지 말자. 1:1 분리 기준, 1:N과 N:M의 판단법, 자기참조 트리, 다형성 관계까지 — 실무에서 마주치는 관계 설계의 모든 패턴을 다룬다.
-
RDB 설계 시리즈 3편: 제약조건과 데이터 무결성 — 스키마로 버그를 막는 법
CHECK, UNIQUE, FK, DEFAULT, Generated Column까지 — 제약조건은 '귀찮은 것'이 아니라 '스키마 레벨의 방어 코드'다. DB vs 앱 어디서 검증할지, FK를 걸어야 할지 말아야 할지, 실무 판단 기준을 제시한다.
-
RDB 설계 시리즈 2편: 정규화와 반정규화 — 이론이 아니라 판단 기준
정규화는 '무조건 해야 하는 것'이 아니고, 반정규화는 '성능을 위한 타협'이 아니다. 쇼핑몰 시나리오 하나로 1NF부터 3NF까지 직관적으로 설명하고, 언제 정규화를 깨는 게 맞는지 MySQL/PostgreSQL 기준으로 판단 기준을 제시한다.
-
RDB 설계 시리즈 1편: 스키마 기초 — 네이밍, 데이터 타입, PK 전략, NULL
RDB 테이블을 설계할 때 가장 먼저 결정해야 하는 것들을 다룬다. 네이밍 컨벤션, 데이터 타입 선택, PK 전략(AUTO_INCREMENT vs UUID vs ULID), NULL 시맨틱까지 — 대충 넘어가면 나중에 마이그레이션으로 고생한다.