베하
비티시 보이즈 입니다!
오늘은 저번 DynamoDB(1) 글에 이어서
DynamoDB의 보조인덱스와 DynamoDB Streams에 대해 알아보겠습니다.
이전글의 링크입니다!
보조 인덱스란?
- 보조 인덱스는 주된 테이블의 기본 키 이외의 다른 속성을 기반으로 데이터에 대한 검색 및 조회를 수행하는 데 사용됩니다.
DynamoDB는 다음과 같이 두 가지 종류의 인덱스를 지원합니다.
1. 로컬 보조 인덱스(Local Secondary Index): 파티션 키 및 정렬 키가 테이블과 다를 수 있는 인덱스입니다.
- 로컬 보조 인덱스는 주된 테이블과 동일한 파티션 키(Partition Key)를 공유하며, 다른 정렬 키(Sort Key)를 가집니다. 주된 테이블과 같은 파티션 내에서만 작동하며, 파티션 단위로 정렬된 데이터에 대한 조회가 가능합니다. 로컬 보조 인덱스는 원본 테이블 생성 시 함께 지정해야 합니다.
2.글로벌 보조 인덱스(Global Secondary Index): 기본 테이블과 파티션 키는 동일하지만 정렬 키가 다른 인덱스입니다.
- 글로벌 보조 인덱스는 주된 테이블과 별도의 파티션 및 정렬 키를 가지며, 독립적으로 작동합니다. 원본 테이블에 비해 다양한 쿼리 패턴을 지원하고, 여러 속성을 포함할 수 있습니다. 글로벌 보조 인덱스는 원본 테이블 생성 이후에도 추가할 수 있습니다.
다음은 보조 인덱스의 예제입니다.
Music Table
{
"Artist": "No One You Know",
"SongTitle": "My Dog Spot",
"AlbumTitle": "Hey Now",
"Price": 1.98,
"Genre": "Country",
"CriticRating": 8.4
},
{
"Artist": "No One You Know",
"SongTitle": "Somewhere Down The Road",
"AlbumTitle": "Somewhat Famous",
"Genre": "Country",
"CriticRating": 8.4,
"Year": 1984
},
{
"Artist": "The Acme Band",
"SongTitle": "Still in Love",
"AlbumTitle": "The Buck Starts Here",
"Price": 2.47,
"Genre": "Rock",
"PromotionInfo": {
"RadioStationsPlaying": {
"KHCR",
"KQBX",
"WTNR",
"WJJH"
},
"TourDates": {
"Seattle": "20150622",
"Cleveland": "20150630"
},
"Rotation": "Heavy"
}
},
{
"Artist": "The Acme Band",
"SongTitle": "Look Out, World",
"AlbumTitle": "The Buck Starts Here",
"Price": 0.99,
"Genre": "Rock"
}
GenreAlbumTitle 인덱스 - 기본 테이블 Music
{
"Genre": "Country",
"AlbumTitle": "Hey Now",
"Artist": "No One You Know",
"SongTitle": "My Dog Spot"
},
{
"Genre": "Country",
"AlbumTitle": "Somewhat Famous",
"Artist": "No One You Know",
"SongTitle": "Somewhere Down The Road"
},
{
"Genre": "Rock",
"AlbumTitle": "The Buck Starts Here",
"Artist": "The Acme Band",
"SongTitle": "Still In Love"
},
{
"Genre": "Rock",
"AlbumTitle": "The Buck Starts Here",
"Artist": "The Acme Band",
"SongTitle": "Look Out, World"
}
Music의 기본테이블로 만든 GenreAlbumTitle인덱스를
쿼리하여 특정 장르의 앨범을 모두 찾을 수 있습니다(예: 모든 Rock 앨범).
또한 인덱스를 쿼리하여 특정 앨범 제목이 있는 특정 장르에 속하는 모든 앨범을 찾을 수도 있습니다
(예: 제목이 알파벳 H로 시작하는 모든 Country 앨범).
다음은 DyanmoDB의 Streams에 대해 알아 보겠습니다!
DynamoDB Streams
- DynamoDB Streams는 DynamoDB 테이블의 데이터 수정 이벤트를 캡처하는 선택적 기능입니다. 이러한 이벤트에 대한 데이터가 이벤트가 발생한 순서대로 거의 실시간으로 스트림에 표시됩니다.
- 각 이벤트는 스트림 레코드에 의해 나타납니다. 테이블에서 스트림을 활성화하면 다음과 같은 이벤트 중 하나가 발생할 때마다 DynamoDB Streams가 스트림 레코드를 기록합니다.
- 테이블에 새로운 항목이 추가시 전체 항목의 이미지를 캡처
- 항목이 업데이트 될 때 수정된 속성의 Before, After 이미지를 캡처
- 항목이 삭제 될 때 삭제되기 전의 전체 항목의 이미지를 캡처
- 스트림 레코드의 수명은 24시간이며, 24시간이 지나면 스트림에서 자동으로 제거됩니다.
- DynamoDB Streams를 AWS Lambda와 함께 사용하면 트리거, 즉 관심 있는 이벤트가 스트림에 나타날 때마다 자동으로 실행되는 코드를 생성할 수 있습니다.
- 트리거뿐만 아니라 DynamoDB Streams는 AWS 리전 내나 리전 간의 데이터 복제, DynamoDB 테이블의 구체화된 데이터 보기, Kinesis 구체화된 보기를 사용한 데이터 분석 등의 강력한 솔루션을 지원합니다.
그럼 지금까지 DynamoDB(1) 글에 이어 DynamoDB에 대해 알아보았습니다!
댓글