데이터 모델링

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

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

7개 중 0개 읽음퀴즈
DynamoDB의 단일 테이블 설계
DynamoDB의 단일 테이블 설계는 오버로딩된 키 접두사 뒤에 모든 엔터티를 한 테이블에 저장해, 부모와 그 자식들이 Query 한 번에 돌아오게 합니다.
중급4분 분량
DynamoDB에서 데이터를 모델링하는 법
액세스 패턴 우선으로 DynamoDB 데이터를 모델링하는 법. 네 가지 질문을 파티션 키, 정렬 키, GSI로 바꾸는 게임 리더보드 실습입니다.
중급8분 분량
DynamoDB에서 단일 테이블 설계를 쓰지 말아야 할 때
DynamoDB에서 단일 테이블 설계를 쓰지 말아야 할 때 — 무거운 분석, 서로 무관한 엔터티에 대한 단순 CRUD, 그리고 독립적으로 확장하거나 실패하는 엔터티.
중급6분 분량
DynamoDB의 Type 속성
DynamoDB의 Type 속성 — 행을 식별하고, GSI를 하나의 엔터티로 필터링하고, 향후 마이그레이션에서 살아남기 위해 모든 항목에 엔터티 유형을 찍어 두는 이유.
중급7분 분량
DynamoDB의 역정규화
DynamoDB의 역정규화 — 조인 대신 데이터를 복제하는 이유를, 블로그 작성자 이름 예제와 묵은 값 지뢰, 그리고 임베드 대 복제를 언제 쓸지로 설명합니다.
중급6분 분량
DynamoDB의 싱글턴 항목
DynamoDB 싱글턴 항목 — 기능 플래그나 구성 같은 전역 상태를 담는 고정 키 행 하나. GetItem으로 읽고 조건 표현식으로 업데이트합니다.
중급8분 분량
이해도 점검퀴즈 풀기
이 섹션에서 배운 내용을 점검해 보세요.

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

스키마를 만들기 전에 무료 싱글 테이블 디자인 도구로 스케치해 보세요 — 액세스 패턴 목록을 PK/SK/GSI 계획으로 바꿔 줍니다. 그런 다음 DynoTable 사용해 보기로 이런 레이아웃을 실제 테이블에 모델링하고 둘러보세요 — 그리고 키가 처리하지 못하는 애드혹 질문에는, SQL 워크벤치가 클라이언트 측에서 JOIN, GROUP BY, 집계를 실행해 줍니다.