13강 DynamoDB 테이블설계과정(Study) AWS Cloud

2025. 4. 10. 10:56·AWS_Cloud

📌 DynamoDB 테이블 설계 과정

1️⃣ 설계 목표 정의

먼저, 어떤 데이터를 저장하고 조회할 것인지 목표를 정의해야 합니다. 예를 들어, 학생 성적 관리 시스템을 만들려고 한다면, 데이터를 어떻게 저장하고, 어떤 방식으로 조회할 것인지를 결정합니다.

  • 예시: 학생 성적 관리 시스템
    • 파티션 키: StudentID (학생 고유 식별자)
    • 정렬 키: Subject (과목 이름)

이렇게 하면 같은 학생의 여러 과목 성적을 하나의 파티션에 저장하고, 과목별로 정렬할 수 있습니다.


2️⃣ 기본 키 정의

DynamoDB에서 기본 키는 두 가지로 나뉩니다:

  • 단순 기본 키: Partition Key만 사용
  • 복합 기본 키: Partition Key와 Sort Key를 함께 사용

예시: 복합 기본 키 설계

1. 파티션 키와 정렬 키 설정

  • 파티션 키: StudentID (학생 고유 식별자)
  • 정렬 키: Subject (과목 이름)

이렇게 설정하면, 학생별로 여러 과목의 성적을 하나의 파티션에 저장하고, 과목별로 정렬하여 조회할 수 있습니다.

2. DynamoDB 테이블 만들기

DynamoDB 콘솔에서 테이블을 생성하는 방법은 간단합니다.

  1. AWS 관리 콘솔에 로그인하고, DynamoDB 서비스를 엽니다.
  2. Create Table을 클릭합니다.
  3. Table name을 입력합니다. (예: StudentGrades)
  4. Partition key를 StudentID로 설정하고, Attribute type은 String으로 선택합니다.
  5. 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를 설정하려면:

  1. 테이블을 생성한 후 Indexes 탭에서 Create index를 클릭합니다.
  2. Index name을 설정하고, Subject를 Partition key로, StudentID를 Sort key로 설정합니다.
  3. Projection type을 설정합니다. (프로젝션은 인덱스를 통해 반환할 데이터 속성을 설정합니다.)

테이블에 GSI 추가 후 조회 예시:

Partition Key (Subject)Sort Key (StudentID)Grade
Math 1001 A
Math 1002 C
English 1001 B

4️⃣ 데이터 입력 및 조회

  1. 데이터 입력:
    • PutItem API를 사용하여 데이터를 입력할 수 있습니다.
    • 예시: PutItem을 사용하여 StudentID와 Subject, Grade를 테이블에 추가합니다.
  2. 데이터 조회:
    • 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
'AWS_Cloud' 카테고리의 다른 글
  • 📌 AWS SDK에서 Credential 및 Config 설정방법 (Windows 기준)
  • 13강 DynamoDB 및 Lamda 실습 노트 (AWS Cloud)
  • 13강 DynamoDB 강의 노트 AWS Cloud
  • AWS 기본 서브넷 생성
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (612)
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (10)
      • 특강 (31)
      • 기술블로그 (32)
      • 기술블로그-Fastapi편 (0)
      • 기술블로그-Django편 (143)
      • 기술블로그-Flask편 (35)
      • AI 분석 (4)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (66)
      • Fastapi (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
13강 DynamoDB 테이블설계과정(Study) AWS Cloud
상단으로

티스토리툴바