데이터 모델링

이 지점이 DynamoDB가 SQL과 가장 크게 갈라지는 곳입니다. 엔터티마다 테이블 하나로 정규화하지 않습니다. 대신 액세스 패턴에서 출발해 그 패턴을 처리하는 키를 설계하며, 종종 모든 엔터티를 하나의 테이블에 담습니다. 제대로 하면 부모와 그 자식들을 한 번의 Query로 가져올 수 있고, 조인은 필요 없습니다.

잘못하면 쿼리할 수 없는 테이블과 실행할 수 없는 마이그레이션이 남습니다. 그래서 트레이드오프가 중요하며, 이 섹션은 싱글 테이블 디자인이 잘못된 선택이 되는 경우에 대해 솔직하게 다룹니다.

7개 중 0개 읽음퀴즈
DynamoDB의 싱글 테이블 디자인
DynamoDB의 싱글 테이블 디자인 — 오버로딩된 키를 가진 하나의 테이블이 엔터티별 테이블을 이기는 이유, 구체적인 주문/고객 예제와 GSI 오버로딩 패턴.
중급4분 분량
DynamoDB에서 데이터를 모델링하는 법
액세스 패턴 우선 방식으로 DynamoDB에서 데이터를 모델링하는 법 — 멀티플레이어 리더보드의 쿼리를 파티션 키와 정렬 키로 바꾸는 단계별 안내.
중급8분 분량
DynamoDB에서 단일 테이블 설계를 쓰지 말아야 할 때
DynamoDB에서 단일 테이블 설계를 쓰지 말아야 할 때 — 다중 테이블이 이기는 워크로드(무거운 분석, 단순 CRUD, 독립적 확장)를 구체적인 예제와 함께 설명합니다.
중급6분 분량
DynamoDB의 Type 속성
DynamoDB의 Type 속성 — 모든 아이템에 엔터티 타입을 찍어 행을 식별하고, GSI를 한 엔터티로 필터링하며, 향후 마이그레이션에서 살아남는 이유.
중급7분 분량
DynamoDB의 비정규화
DynamoDB 비정규화 — 조인 대신 데이터를 중복 저장하는 이유를, 블로그 작성자 이름 예제와 데이터 부패 지뢰, 임베드 대 중복의 선택 기준으로 설명합니다.
중급6분 분량
DynamoDB의 싱글톤 아이템
DynamoDB 싱글톤 아이템 — 피처 플래그나 설정 같은 전역 상태를 담는 고정 키 행 하나, GetItem으로 가져오는 이유, 경합 없이 업데이트하는 방법.
중급7분 분량
이해도 점검퀴즈 풀기
이 섹션에서 배운 내용을 점검해 보세요.

싱글 테이블 디자인부터 시작하세요. 그 뒤의 모든 내용이 이 사고 모델을 전제로 합니다.

DynoTable 사용해 보기로 이런 레이아웃을 실제 테이블에 모델링하고 둘러보세요.