티스토리 뷰

Cloud/Amazon Web Service

[AWS] Amazon DynamoDB

Arc Lab. 2020. 3. 2. 13:46

[업데이트 2020.03.02 17:50]

1. Amazon DynamoDB

- DynamoDB는 모든 규모에서 빠르고 유연한 비관계형 데이터베이스입니다. DynamoDB를 통해 고객은 분산 데이터베이스를 운영하고 AWS로 확장하는 데 따른 관리 부담에서 벗어날 수 있으며, 하드웨어 프로비저닝, 설정 및 구성, 처리 능력 계획, 복제, 소프트웨어 패치 또는 클러스터 확장에 대해서도 걱정할 필요가 없습니다.

 

- 일관성 모델

. 최종적 일관된 읽기(기본값) : 최종 일관성 옵션은 읽기 처리량을 최대화합니다. 그러나 최종적 일관된 읽기는 최근 완료한 쓰기 결과를 반영하지 못할 수 있습니다. 모든 데이터 사본은 일반적으로 1초 내에 일관성을 가지게 됩니다. 짧은 시간 이후 읽기를 반복하여 갱신한 데이터를 반환해야 합니다.

 

. 강력한 일관된 읽기 : DynamoDB는 최종 일관성 외에도 애플리케이션 또는 애플리케이션의 요소에서 요구하는 경우 강력한 일관된 읽기를 요청할 수 있는 유연성과 제어도 제공합니다. 강력한 일관된 읽기는 읽기 전에 성공적인 응답을 수신한 모든 쓰기를 반영한 결과를 반환합니다.

 

. ACID 트랜잭션 :DynamoDB 트랜잭션에서는 개발자에게 단일 AWS 계정 및 지역에서 ACID(원자성, 일관성, 격리성 및 지속성)를 제공합니다. 단일 논리 비즈니스 작업의 일부로 여러 항목에 대한 통합된 삽입, 삭제 또는 업데이트가 필요한 애플리케이션을 구축하는 경우 트랜잭션을 사용할 수 있습니다.

 

- Amazon DynamoDB의 핵심 구성 요소

. 테이블, 항목, 속성

. 기본기

1) 파티션 키 : 파티션 키로 알려진 하나의 속성으로 구성되는 단순 기본 키. (ex: 파티션키 PersonID)

2) 파티션 키 및 정렬 키 : 복합 기본 키로 지칭되는 이 형식의 키는 두 개의 속성으로 구성됩니다. 첫 번째 속성은 파티션 키이고, 두 번째 속성은 정렬 키입니다. (ex:  Music 테이블은 복합 기본 키(Artist 및 SongTitle))

. 보조 인덱스

1) Global secondary index : 파티션 키 및 정렬 키가 테이블의 파티션 키 및 정렬 키와 다를 수 있는 인덱스입니다.
2) 로컬 보조 인덱스 : 테이블과 파티션 키는 동일하지만 정렬 키는 다른 인덱스입니다.

 

 GenreAlbumTitle이라는 새 인덱스를 보여 줍니다. 인덱스에서 Genre는 파티션 키이고, AlbumTitle은 정렬 키입니다.

 

 

- DynamoDB 스트림

DynamoDB 스트림와 AWS Lambda를 함께 사용하여 트리거를 만들 수 있습니다. 예를 들어, 회사의 고객 정보가 들어 있는 Customers 테이블을 생각해 볼 수 있습니다. 새 고객마다 "환영" 이메일을 보내려고 한다고 가정해 보십시오. 해당 테이블에 스트림을 설정한 다음, 스트림을 Lambda 함수와 연결할 수 있습니다. Lambda 함수는 새로운 스트림 레코드가 표시될 때마다 실행되지만, Customers 테이블에 추가된 새로운 항목만 처리합니다. EmailAddress 속성이 있는 모든 항목에 대해 Lambda 함수는 Amazon Simple Email Service(Amazon SES)를 호출하여 해당 주소에 이메일을 보냅니다.

 

- 읽기/쓰기 용량 모드

1) 온디맨드

. 알 수 없는 워크로드를 포함하는 테이블을 새로 만들 경우
. 애플리케이션 트래픽이 예측 불가능한 경우
. 사용한 만큼에 대해서만 지불하는 요금제를 사용하려는 경우


2) 프로비저닝됨(기본값, 프리 티어 이용 가능)

. 애플리케이션 트래픽이 예측 가능한 경우
. 트래픽이 일관되거나 점진적으로 변화하는 애플리케이션을 실행할 경우
. 비용 관리를 위해 용량 요구 사항을 예측할 수 있는 경우

. DynamoDB Auto Scaling은 테이블 및 글로벌 보조 인덱스의 처리량을 적극적으로 관리합니다. Auto Scaling을 사용하면 읽기 및 쓰기 용량 단위에 범위(상한 및 하한)를 지정할 수 있습니다.

 

- DynamoDB Accelerator(DAX)를 통한 인 메모리 가속화

1) DAX는 인 메모리 캐시로서 최종적 일관된 읽기 워크로드의 응답 시간을 한 자릿수 밀리초에서 마이크로초까지 대폭 줄여줍니다.

2)DAX는 DynamoDB와 API 호환되는 관리형 서비스를 제공하여 운영 및 애플리케이션 복잡성을 줄여줍니다. 따라서 기존 애플리케이션에서 사용하기 위한 최소한의 기능 변경만 필요합니다.

3) 읽기 중심적이거나 일정 시간에 사용량이 급증하는 워크로드의 경우 DAX는 읽기 용량 단위를 오버프로비저닝해야 하는 필요성을 줄여 높은 처리량을 제공하고 잠재적 운영 비용을 절감합니다. 이러한 이점은 특히 개별 키를 반복적으로 읽어야 하는 애플리케이션에 유용합니다.

 

. DAX 사용 사례

- 실시간 입찰, 소셜 게임, 거래 애플리케이션 등

- 할인 행사 동안 다른 모든 상품에 비해 해당 상품에 대한 수요(및 DynamoDB의 해당 데이터)가 급격하게 늘어나는 경우

- 읽기 집약적이지만 비용에 민감한 애플리케이션.  DynamoDB를 사용하여 애플리케이션에 필요한 초당 읽기 수를 프로비저닝합니다.

- 대량 데이터 집합에 대해 반복적인 읽기가 필요한 애플리케이션. 예를 들어 지역 날씨 데이터를 장기적으로 분석하는데 DynamoDB 테이블에서 모든 읽기 용량이 일시적으로 소비될 수 있습니다. 

 

. DAX 적합하지 않은 사례

- 강력한 일관된 읽기가 필요한(또는 최종적 일관된 읽기를 허용할 수 없는) 애플리케이션.
- 읽기 작업에 마이크로초 단위의 응답 시간이 요구되지 않거나, 반복되는 읽기 활동을 기본 테이블에서 제거하지 않아도 되는 애플리케이션.
- 쓰기 집약적이거나 읽기 작업을 많이 수행하지 않는 애플리케이션.
- DynamoDB와 다른 캐싱 솔루션을 이미 사용하고 있고 해당 캐싱 솔루션을 사용하기 위해 자체 클라이언트 측 로직을 사용하는 애플리케이션.

 

* 참고

https://aws.amazon.com/ko/dynamodb/faqs/

https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/Introduction.html

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함