기술블로그/Database

Dynamodb

민트소프트 홈페이지 2022. 6. 15. 10:52

Dynamodb란?

aws에서는 아래와 같이 설명하고 있습니다. 

Amazon DynamoDB는 어떤 규모에서도 10밀리초 미만의 성능을 제공하는 키-값 및 문서 데이터베이스입니다. 완전관리형의 내구성이 뛰어난 다중 리전, 다중 활성 데이터베이스로서, 인터넷 규모 애플리케이션을 위한 보안, 백업 및 복원, 인 메모리 캐싱 기능을 기본적으로 제공합니다. DynamoDB는 하루에 10조 개 이상의 요청을 처리할 수 있고, 초당 2,000만 개 이상의 피크 요청을 지원할 수 있습니다.

Lyft, Airbnb, Redfin 등과 같이 세계에서 가장 빠르게 성장하는 다수의 비즈니스뿐만 아니라 삼성, Toyota, Capital One과 같은 엔터프라이즈에서도 자사의 미션 크리티컬 워크로드를 지원하기 위해 DynamoDB의 규모와 성능을 활용하고 있습니다.

수십만이 넘는 AWS 고객들은 모바일, 웹, 게임, 광고 기술, IoT 및 규모와 상관없이 지연 시간이 짧은 데이터 액세스가 필요한 기타 애플리케이션을 위한 키-값 및 문서 데이터베이스로 DynamoDB를 선택했습니다. 애플리케이션을 위한 새로운 테이블을 생성하면 DynamoDB가 나머지를 처리해 드립니다.


이점

큰 규모를 지원하는 성능

DynamoDB는 어떤 규모에서도 일관되게 10밀리초 미만의 응답 시간을 제공하여 세계에서 가장 큰 규모의 몇몇 애플리케이션을 지원합니다. 고객은 사실상 무제한의 처리량과 스토리지로 애플리케이션을 구축할 수 있습니다. DynamoDB 글로벌 테이블은 여러 AWS 리전에 데이터를 복제하므로 전 세계에 배포된 애플리케이션의 데이터에 빠르게 로컬로 액세스할 수 있습니다. 밀리초 단위의 지연 시간으로 더 빠른 액세스가 필요한 사용 사례를 위해 DynamoDB Accelerator(DAX)는 완전관리형 인 메모리 캐시를 제공합니다.

 

관리할 서버 없음

DynamoDB는 서버리스이므로, 서버를 프로비저닝하거나 패치를 적용하거나 관리할 필요가 없으며, 소프트웨어를 설치하거나 관리하거나 운영할 필요도 없습니다. DynamoDB는 용량에 맞게 테이블을 자동으로 확장하고 축소하며 성능을 유지합니다. 가용성과 내결함성이 내장되어 있어서 이러한 기능을 위해 애플리케이션을 설계할 필요가 없습니다. DynamoDB는 온디맨드 용량 모드와 및 프로비저닝 용량 모드를 모두 제공하므로 워크로드당 용량을 지정하거나, 사용하는 리소스에 대해서만 비용을 지불함으로써 비용을 최적화할 수 있습니다.

 

엔터프라이즈에 사용 가능

DynamoDB는 ACID 트랜잭션을 지원하므로 규모에 맞게 비즈니스 크리티컬 애플리케이션을 구축할 수 있습니다. DynamoDB는 기본적으로 모든 데이터를 암호화하고 모든 테이블에 대해 세분화된 자격 증명 및 액세스 제어를 제공합니다. 테이블에 대한 성능 저하 없이 수백 테라바이트의 데이터를 즉시 전체 백업하고, 가동 중지 없이 이전 35일 이내의 원하는 시점으로 복구할 수 있습니다. DynamoDB 테이블 데이터를 Amazon S3의 데이터 레이크로 내보내 대규모로 분석을 수행할 수도 있습니다. DynamoDB는 또한 가용성 보장을 위한 서비스 수준 계약을 통해 지원됩니다.

 

 

 


실제 사용예

1.aws 콘솔에 들어가서 dynamodb를 들어갑니다.

 

2.테이블생성을 눌어서 세부 정보를 입력합니다.

아래는 제가 dynamodb를 쓰면서 익힌  방법입니다. 

id는 무조건 파티션 키로 걸어둔다.(정렬키는 빼고)

 

위의 이유가 id만 가지고 데이타를 쿼리를 해오기 쉽게 하기 위함 입니다. 

 

3.고급 설정을 누르게 되면 용량을 정할수가 있습니다. 

쓰기용량,읽기 용량이 다 돈입니다. 

입력되는 데이타에 따라서 적절히 조절하시면 됩니다. 

그리고 프로비젼닝됨을 선택하시게 되면 온디맨드보다는 조금 높은 가격이 청구됩니다. 

(aws에서 알아서 용량을 늘여주는 기능이 비용이 들어가는듯 합니다.)

 

 

4.그리고 테이블을 생성을 합니다.

위와같이 테이블이 생성됩니다. 

 

 

5.그리고 dynamodb에 자동 삭제 기능을 넣으시려면 ttl 값을 초기화해주시면 됩니다. 

ttl은 데이타가 몇일 지난후 자동으로 삭제할수 있는 기능입니다. 

ttl 필드는 unix-timestamp 형식으로 입력해주시면 됩니다. 

 

데이타가 많이 쌓이고 난후에 ttl을 설정할려면 상당이 오랜시간이 소요됩니다.

따라서 미리 해주시는게 좋습니다. 

6.보조인덱스 생성

작업의 인덱스 생성을 눌러서 필요한 값을 편집합니다. 

여기에서는 파티션키(주로 검색되는 키)와 정렬키를 해주시는게 좋습니다.

저희 민트앱 프로젝트에서는 파티션키가 고객의 프로젝트 아이디이므로 project_key와 정렬키는 주로 시간별 검색을 합니다.

 

그리고 추가로 필요한 보조 키들을 미리 추가해두는게 좋습니다. 나중에 인덱스 추가하려면 상당한 시간이 소요됩니다. 

간단히 dynamodb에 인덱스를 생성해보았습니다.

다음에는 실제 코드에서 사용하는 방법을 기술해보겠습니다. 

 

 


저희 민트앱에서는 고객사의 데이타들을 dynamodb에서 관리하고 있습니다. 

따라서 빠르고 안정적으로 고객사의 데이타들을 유지 관리하고 있습니다. 

하이브리드 앱 패키징을 민트앱으로 쉽고 빠르고 다양한 기능을 사용해보세요.

 

https://www.mint-app.com

'기술블로그 > Database' 카테고리의 다른 글

Dynamodb  (0) 2022.06.15
1