일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- study
- leetcode
- PostgreSQL
- terraform
- 구조 패턴
- 논문 정리
- AWS
- AWS 비용 절감
- 오블완
- 경로 계획 알고리즘
- Playwright
- 신혼 여행
- 실용주의 프로그래머
- 생성 패턴
- MAPF
- 도커 주의사항
- docker
- Monthly Checklist
- amazon ecs
- 청첩장 모임
- Rust
- DevOps
- Go-lang
- github
- 지표
- ssh
- Til
- 디자인 패턴
- 티스토리챌린지
- 14일 공부
- Today
- Total
밤 늦게까지 여는 카페
Amazon Dynamodb global secondary index - 기간별 검색 최적화 본문
안녕하세요. 오늘은 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로 사용하는 값들도 고유해야 한다는 제약조건이 존재합니다.
2.2. global secondary index 설정 방법
Dynamodb 콘솔 페이지를 이용해서 GSI를 설정하는 방법을 소개드리겠습니다.
1. Dynamodb 콘솔 페이지에 접속합니다.
2. GSI를 추가하고 싶은 테이블을 선택합니다.
3. index 탭을 선택합니다.
4. 인덱스 생성 버튼을 클릭합니다.
5. 데이터에서 GSI의 partition key와 sort key로 사용할 필드를 입력합니다.
6. 인덱스 생성 버튼을 클릭합니다.
7. 잠시 기다리면 인덱스가 생성됩니다.
이제 GSI로 사용하는 필드를 이용해서 쿼리할 시, 훨씬 향상된 속도로 데이터를 조회할 수 있습니다!
3. (번외) 다른 데이터베이스 사용
다른 데이터베이스를 사용하는 것도 아주 좋은 방법입니다.
Dynamodb는 검색용으로는 적절하지 않은 데이터베이스입니다.
만약 검색이 아주 중요한 기능이라면 Elasticsearch 같은 검색에 최적화 된 데이터베이스를 사용하는 것도 좋은 방법입니다.
Dynamodb의 global secondary index에 대해서 간단히 공부해봤는데 도움이 되셨을까요 ㅎㅎ
'aws' 카테고리의 다른 글
[Amazon ECS] Graceful Shutdown - ECS를 안정적으로 사용하려면 SIGNAL은 처리해줘야죠! (0) | 2023.06.23 |
---|---|
AWS 고정 IP 할당 방법 - ingress 네트워크 트래픽편(EIP, NLB, ALB[Global Accelerator]) (2) | 2023.05.28 |
AWS RDS 기본적인 보안 설정 - 혹시 퍼블릭 액세스를 허용하신 건 아니겠죠...? (0) | 2022.10.09 |
AWS S3의 정적 웹사이트 호스팅을 활용한 간단한 웹앱 배포 방법 (0) | 2022.09.26 |
AWS ELB(ALB)에 고정 IP 할당하기 - global accelerator (2) | 2022.09.24 |