-
[AWS] DynamoDB - IndexAWS 2024. 2. 14. 18:09
Index
★ 특정 컬럼만을 사용하여 쿼리
★ 테이블 전체가 아닌 기준점(pivot)을 사용해 쿼리가 이루어짐
★ 매우 큰 쿼리 성능 효과
★ 두가지의 Index 유형 존재
- Local Secondary Index
- Global Secondary Index
Local Secondary Index (LSI)
★ 테이블 생성시에만 정의해줄 수 있음
★ 따라서 테이블 생성 후 변경, 삭제가 불가능
★ 똑같은 파티션키 사용, 그러나 다른 정렬키 사용
메인 테이블이 있고. 이테이블을 기반으로 두가지의 뷰를 생성했다
X라는 뷰는 2019년도 데이터 하지만 파티션 키는 x와 y 둘다 똑같은 것
LSI는 파티션 키와 정렬키 둘다 사용되어지기 때문에 정렬키를 기반으로 쿼리를 수행할 시 그렇지 않은 것보다 훨씬 빠르다.
만약, 정렬 키가 없다면 + 2020년도 데이터만 가져오고 싶다면 테이블 전체를 찾아야한다.
하지만 위 사진처럼 정령키로 정의되어 있다면 2020년도 이전 것들은 전혀 쿼리할 때 고려되어지지 않는다.
그래서 쿼리 속도가 빨라지는 것
Global Secondary Index (GSI)
★ 테이블 생성 후에도 추가, 변경, 삭제 가능
★ 다른 파티션 키, 정렬 키 사용
만약 테이블에서 데이커가 변경이 된다면 뷰는 알아서 그 변화를 인식하고 그대로 받아들이는 것
일반적으로 뷰에서 데이터를 직접 업데이트하지 않기 때문.,
즉, GSI를 생성하면 새로운 뷰를 만드는 것이다.
테이블 안에서 무언가 조작하는 것❌
DynamoDB 테이블에는 의류 백화점 물품 거래 내역을 담고 있는 데이터가 들어있다고 가정해보자.
고객 아이디, 구매 물품 카테고리, 브랜드명, 그리고 구매 일자 등이 들어있다고 가정
테이블을 만들 때 파티션 키를 고객 아이디로 정하였다.
그렇다면 구매 물품 카테고리별로 무엇이 언제 많이 팔렸는지 궁금할 수 있다.
카테고리의 예로는 가디건, 스웨터, 티셔츠 등과 같은것이 될 수 있겠다.
또한 브랜드별로 언제 무엇이 많이 팔렸는지 궁금할 수도 있다.
현재 테이블 말고 다른 파티션키를 이처럼 사용하여 GSI의 도움을 받아 전혀 새로운 뷰를 만들 수 있다.
그리고 이 뷰를 상대로 쿼리를 한다면 훨씬 빠르고 정활한 쿼리 결과를 가져올 수 있다.
'AWS' 카테고리의 다른 글
[AWS] DynamoDB 실습 (0) 2024.02.14 [AWS] DynamoDB - Query vs Scan (0) 2024.02.14 [AWS] DynamoDB (0) 2024.02.14 [AWS] CloudFront 실습 (1) 2024.02.13 [AWS] CloudFront (0) 2024.02.13