ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS] DynamoDB - Index
    AWS 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
Designed by Tistory.