DynamoDB의 관계형 데이터를 모델링하는 첫 번째 단계 - Amazon DynamoDB

DynamoDB의 관계형 데이터를 모델링하는 첫 번째 단계

중요

NoSQL 설계에는 RDBMS 설계와 다른 사고 방식이 요구됩니다. RDBMS의 경우, 액세스 패턴을 생각하지 않고 정규화된 데이터 모델을 생성할 수 있습니다. 그런 후 나중에 새로운 질문과 쿼리에 대한 요구 사항이 생길 때 이를 확장할 수 있습니다. 대조적으로 Amazon DynamoDB의 경우 대답해야 할 질문을 모르기 전까지는 스키마 설계를 시작할 수 없습니다. 사전에 비즈니스 문제와 애플리케이션 사용 사례를 이해해야 합니다.

효율적으로 확장되는 DynamoDB 테이블 설계를 시작하려면, 몇 단계를 거쳐야 하는 데 먼저 지원해야 하는 OSS/BSS(운영 지원 시스템 및 비즈니스 지원 시스템)에서 요구되는 액세스 패턴을 파악해야 합니다.

  • 새 애플리케이션의 경우, 활동과 목표에 대한 사용자 사례를 검토합니다. 파악한 다양한 사용 사례를 문서화하고, 여기에 필요한 액세스 패턴을 분석합니다.

  • 기존 애플리케이션의 경우, 쿼리 로그를 분석해 현재 시스템을 사용하고 있는 사람의 수와 핵심 액세스 패턴을 파악해야 합니다.

이런 프로세스를 끝내면 다음과 같은 형태를 가진 목록이 준비되어야 합니다.

ID를 기준으로 직원들을 상세히 검색하는 항목, 직원 이름을 이용한 쿼리 작업, 고객 전화 번호 검색 등 핵심 액세스 패턴 목록이 여기에 해당됩니다.

실제 사용하는 애플리케이션의 경우, 목록이 훨씬 더 길 것입니다. 그러나 이는 프로덕션 환경에서 찾을 수 있는 다양하고 복잡한 쿼리 패턴을 보여줍니다.

DynamoDB 스키마 설계에 대한 일반적인 접근 방식은 애플리케이션 계층의 엔터티를 파악하고, 비정규화와 복합 키 집계로 쿼리의 복잡성을 줄이는 것입니다.

DynamoDB에서는 복합 정렬 키, 오버로드된 글로벌 보조 인덱스, 분할된 테이블/인덱스 및 기타 설계 패턴을 사용하는 것을 의미합니다. 이런 요소들을 사용해 데이터를 구조화, 애플리케이션이 테이블이나 인덱스에 대한 한 번의 쿼리로 특정 액세스 패턴에 필요한 것을 검색하도록 만들 수 있습니다. 관계형 모델링에서 소개하고 있는 정규화된 스키마 모델링에 사용할 수 있는 기본 패턴은 인접 목록 패턴입니다. 기타 글로벌 보조 인덱스 쓰기 샤딩, 글로벌 보조 인덱스 오버로딩, 복합 키, 구체화된 집계 등의 패턴을 이런 설계에 사용합니다.

중요

대체로 DynamoDB 애플리케이션에서는 가능한 적은 수의 테이블을 유지해야 합니다. 단 볼륨이 많은 시계열 데이터가 관여된 경우나 액세스 패턴이 아주 다른 데이터세트는 해당되지 않습니다. 통상 반전된 인덱스의 단일 테이블로 간단한 쿼리를 활성화시켜 사용자의 애플리케이션에 필요한 복잡한 계층적 데이터 구조를 생성 및 검색할 수 있습니다.

DynamoDB용 NoSQL Workbench를 사용하여 파티션 키 설계를 시각화하려면 NoSQL Workbench로 데이터 모델 빌드 섹션을 참조하세요.