📌 DynamoDB 테이블 설계 과정
1️⃣ 설계 목표 정의
먼저, 어떤 데이터를 저장하고 조회할 것인지 목표를 정의해야 합니다. 예를 들어, 학생 성적 관리 시스템을 만들려고 한다면, 데이터를 어떻게 저장하고, 어떤 방식으로 조회할 것인지를 결정합니다.
- 예시: 학생 성적 관리 시스템
- 파티션 키: StudentID (학생 고유 식별자)
- 정렬 키: Subject (과목 이름)
이렇게 하면 같은 학생의 여러 과목 성적을 하나의 파티션에 저장하고, 과목별로 정렬할 수 있습니다.
2️⃣ 기본 키 정의
DynamoDB에서 기본 키는 두 가지로 나뉩니다:
- 단순 기본 키: Partition Key만 사용
- 복합 기본 키: Partition Key와 Sort Key를 함께 사용
예시: 복합 기본 키 설계
1. 파티션 키와 정렬 키 설정
- 파티션 키: StudentID (학생 고유 식별자)
- 정렬 키: Subject (과목 이름)
이렇게 설정하면, 학생별로 여러 과목의 성적을 하나의 파티션에 저장하고, 과목별로 정렬하여 조회할 수 있습니다.
2. DynamoDB 테이블 만들기
DynamoDB 콘솔에서 테이블을 생성하는 방법은 간단합니다.
- AWS 관리 콘솔에 로그인하고, DynamoDB 서비스를 엽니다.
- Create Table을 클릭합니다.
- Table name을 입력합니다. (예: StudentGrades)
- Partition key를 StudentID로 설정하고, Attribute type은 String으로 선택합니다.
- Sort key를 Subject로 설정하고, Attribute type은 String으로 선택합니다.
테이블 구조 예시:
Partition Key (StudentID)Sort Key (Subject)Grade
1001 | Math | A |
1001 | English | B |
1002 | Math | C |
1002 | History | A |
3️⃣ 보조 인덱스 설계
보조 인덱스를 사용하면, 다양한 조회 방식으로 데이터를 검색할 수 있습니다. DynamoDB에서 두 가지 주요 보조 인덱스가 있습니다:
- 로컬 보조 인덱스 (LSI): 파티션 키는 같고 정렬 키만 다르게 설정
- 글로벌 보조 인덱스 (GSI): 파티션 키와 정렬 키를 자유롭게 설정 가능
예시: 글로벌 보조 인덱스 (GSI) 활용
- 목표: Subject에 대한 성적을 조회하고 싶을 때 사용.
- GSI 설정:
- Partition key: Subject
- Sort key: StudentID
이렇게 설정하면, 각 과목별로 성적을 빠르게 조회할 수 있습니다.
GSI를 설정하려면:
- 테이블을 생성한 후 Indexes 탭에서 Create index를 클릭합니다.
- Index name을 설정하고, Subject를 Partition key로, StudentID를 Sort key로 설정합니다.
- Projection type을 설정합니다. (프로젝션은 인덱스를 통해 반환할 데이터 속성을 설정합니다.)
테이블에 GSI 추가 후 조회 예시:
Partition Key (Subject)Sort Key (StudentID)Grade
Math | 1001 | A |
Math | 1002 | C |
English | 1001 | B |
4️⃣ 데이터 입력 및 조회
- 데이터 입력:
- PutItem API를 사용하여 데이터를 입력할 수 있습니다.
- 예시: PutItem을 사용하여 StudentID와 Subject, Grade를 테이블에 추가합니다.
- 데이터 조회:
- Query를 사용하여 파티션 키와 정렬 키를 기준으로 데이터를 조회합니다.
- 예시: StudentID로 특정 학생을 찾고, Subject로 과목별 성적을 조회합니다.
const params = {
TableName: "StudentGrades",
KeyConditionExpression: "StudentID = :id and Subject = :sub",
ExpressionAttributeValues: {
":id": "1001",
":sub": "Math"
}
};
🧠 결론
DynamoDB의 **기본 키(Partition Key + Sort Key)**를 잘 설계하면 데이터를 효율적으로 저장하고 조회할 수 있습니다. **보조 인덱스(LSI, GSI)**를 활용하면 다양한 쿼리 방식을 적용할 수 있어, 원하는 데이터를 더욱 빠르고 유연하게 검색할 수 있습니다.
- 파티션 키와 정렬 키를 잘 선택하고, 보조 인덱스를 활용하여 쿼리 성능을 최적화하세요!
- 실습을 통해 각 개념을 실제로 적용하고, 데이터 모델링을 이해하는 데 도움이 되실 거예요!
DynamoDB는 확장성이 뛰어나고 고속 데이터 처리가 가능하여, 많은 데이터를 처리하는 애플리케이션에서 최적화된 선택입니다. 🚀
'AWS_Cloud' 카테고리의 다른 글
📌 AWS SDK에서 Credential 및 Config 설정방법 (Windows 기준) (1) | 2025.04.10 |
---|---|
13강 DynamoDB 및 Lamda 실습 노트 (AWS Cloud) (0) | 2025.04.10 |
13강 DynamoDB 강의 노트 AWS Cloud (0) | 2025.04.09 |
AWS 기본 서브넷 생성 (0) | 2025.04.09 |
11강 Iam 강의 및 실습노트 AWS Cloud (0) | 2025.04.09 |