관리 메뉴

밤 늦게까지 여는 카페

Amazon Dynamodb global secondary index - 기간별 검색 최적화 본문

aws

Amazon Dynamodb global secondary index - 기간별 검색 최적화

Jㅐ둥이 2022. 10. 22. 09:40

안녕하세요. 오늘은 AWS Dynamodb의 기간 별 검색 최적화 방법에 대해서 공부해보려고 합니다.
PostgresQL 기간 별 검색 최적화 포스팅과 연결되는 부분이 많아 같이 보면 도움이 많이 될 것 같습니다 :)

1. Dynamodb란

Dynamodb란 AWS에서 제공해주는 완전 관리형 서버리스 key-value NoSQL 데이터베이스입니다.

  • 요즘은 많은 NoSQL 데이터베이스들이 SQL을 이용하여 데이터를 조회할 수 있도록 기능을 제공하고 있습니다.
  • Dynamodb의 경우에는 PartialQL이라는 기능을 제공하고 있습니다.


완전 관리형과 서버리스라는 점에서 1) 비용도 최적화 하기 편하고, 2) 운영 및 관리가 용이합니다.
그리고 기본적으로 제공되는 보안 기능, 백업, 데이터 import/export 기능들도 아주 괜찮더라구요!

이런 key-value NoSQL 데이터베이스에서 날짜라는 새로운 인덱스를 어떻게 추가할 수 있을까요?

  • 만약 날짜라는 새로운 인덱스를 추가하지 못하면 기간 별 검색 기능이 실행될 때마다 모든 key, value 쌍을 살펴봐야 하는 불상사가 발생합니다...
  • 이런 아마추어적인 실수를 누가 하냐구요? 죄송합니다...

Dynamodb에서는 global secondary index 기능을 제공하고 있습니다.

2. global secondary index 활용

2.1 global secondary index란

Dynamodb에서는 partition key와 sort key가 존재하는데 이외에도 global secondary index(GSI)라는 보조 인덱스를 추가할 수 있습니다.

GSI는 사실상 partition key로 테이블에 GSI를 추가하면 데이터가 생성될 때마다,
해당 인덱스에 해당하는 필드를 partition key로 가지는 행이 추가적으로 생성된다고 보면 이해하기 편합니다.
(정확히 따지면 이렇게 동작하지 않습니다!)

그림으로 보는 GSI 있고, 없고 차이점! 사실과 다르지만 이해하기 편한 그림

그래서 제대로 활용하기 위해서는 GSI로 사용하는 값들도 고유해야 한다는 제약조건이 존재합니다.

2.2. global secondary index 설정 방법

Dynamodb 콘솔 페이지를 이용해서 GSI를 설정하는 방법을 소개드리겠습니다.

1. Dynamodb 콘솔 페이지에 접속합니다.

Dynamodb 콘솔 페이지, 테이블 탭 선택!

2. GSI를 추가하고 싶은 테이블을 선택합니다.

테이블 선택!


3. index 탭을 선택합니다.

index 탭 클릭!

4. 인덱스 생성 버튼을 클릭합니다.

인덱스 생성 버튼 클릭!

5. 데이터에서 GSI의 partition key와 sort key로 사용할 필드를 입력합니다.

GSI로 사용할 필드 지정!

6. 인덱스 생성 버튼을 클릭합니다.

인덱스 생성 버튼 클릭!

7. 잠시 기다리면 인덱스가 생성됩니다.
이제 GSI로 사용하는 필드를 이용해서 쿼리할 시, 훨씬 향상된 속도로 데이터를 조회할 수 있습니다!

3. (번외) 다른 데이터베이스 사용

다른 데이터베이스를 사용하는 것도 아주 좋은 방법입니다.
Dynamodb는 검색용으로는 적절하지 않은 데이터베이스입니다.
만약 검색이 아주 중요한 기능이라면 Elasticsearch 같은 검색에 최적화 된 데이터베이스를 사용하는 것도 좋은 방법입니다.


Dynamodb의 global secondary index에 대해서 간단히 공부해봤는데 도움이 되셨을까요 ㅎㅎ

반응형