Index
1 DynamoDB Indexes
- Amazon DynamoDB는 강력한 NoSQL 데이터베이스 서비스입니다.
- 데이터 액세스 패턴을 최적화하기 위해 DynamoDB는 두 가지 유형의 인덱스를 제공합니다:
- Local Secondary Index (LSI)
- Global Secondary Index (GSI)
- 이러한 인덱스들은 쿼리 성능을 향상시키고 데이터 액세스의 유연성을 제공합니다.
2 Local Secondary Index (LSI)
- LSI(Local Secondary Index)는 DynamoDB 테이블의 쿼리 기능을 확장하는 강력한 도구입니다.
- 기본 개념을 이해하기 위해, 먼저 DynamoDB 테이블의 기본 구조를 살펴보겠습니다.
2.1 DynamoDB 테이블의 기본 구조
- DynamoDB 테이블은 기본적으로 두 가지 키를 가집니다
- 파티션 키(Partition Key): 데이터를 여러 파티션에 분산시키는 역할
- 정렬 키(Sort Key): 각 파티션 내에서 데이 터를 정렬하는 역할
2.2 LSI의 역할
- LSI는 기존 테이블 구조를 유지하면서 추가적인 정렬 옵션을 제공합니다.
- 주요 특징
- 파티션 키는 기본 테이블과 동일하게 유지
- 정렬 키를 다른 속성으로 대체
2.3 LSI 사용 예시
- 다음 예시를 통해 LSI의 사용법을 이해해 봅시다:
온라인 쇼핑몰 주문 테이블
- 기본 테이블 구조
- 파티션 키: CustomerId
- 정렬 키: OrderId
- 기본 테이블 쿼리
- "고객 ID가 12345인 모든 주문을 OrderId 순으로 조회"
- LSI 추가 (정렬 키: OrderDate)
- 파티션 키: CustomerId (기본 테이블과 동일)
- 정렬 키: OrderDate
- LSI 사용 쿼리:
- "고객 ID가 12345인 모든 주문을 주문 날짜 순으로 조회"
2.4 LSI의 이점
- 다양한 쿼리 패턴 지원:
- 동일한 데이터에 대해 여러 가지 방식으로 정렬된 뷰를 제공
- 쿼리 성능 향상:
- 특정 속성에 대한 빠른 검색이 가능
- 데이터 일관성:
- 기본 테이블과 강력한 일관성을 유지
2.5 LSI 사용 시 주의사항
- 테이블 생성 시에만 정의 가능: 나중에 추가하거나 삭제할 수 없음
- 인덱스 수 제한: 테이블당 최대 5개의 LSI만 생성 가능
- 추가 스토리지 사용: 인덱스도 데이터를 저장하므로 스토리지 비용 증가
3 Global Secondary Index (GSI)
- GSI는 DynamoDB에서 제공하는 강력한 기능으로, 테이블 데이터에 대한 다양한 접근 방식을 제공합니다.
- 기본 테이블과는 완전히 독립적인 새로운 뷰를 생성할 수 있습니다.
3.1 GSI의 기본 개념
- GSI는 기본 테이블의 데이터를 다른 키 구조로 재구성한 별도의 인덱스입니다.
- 주요 특징:
- 새로운 파티션 키와 정렬 키(선택사항) 정의 가능
- 기본 테이블의 어떤 속성이라도 키로 사용 가능
- 기본 테이블과 다른 키 구조 사용 가능