메뉴

문서정보

목차

DynamoDB 소개

DynamoDB는 원할한 확장성과 (10밀리세컨드 단위로) 예측가능한 성능을 제공하는 완전 관리형(fully managed) NoSQL 데이터베이스 서비스다. 완전관리형이이라는 것은 사용자가 네트워크 구성, 인스턴스 실행, 데이터베이스 설치/패치, 복제, 운영, 확장 등과 관련된 어떠한 걱정도 할 필요가 없다는 것을 의미한다.

DynamoDB는 테이블과 데이터 그리고 요청을 자동으로 충분한 수의 서버로 자동으로 분산하기 때문에 요청수와 상관없이 일관적인 성능을 제공한다. AWS에서 관리하는 인프라로 자동으로 데이터들이 분산되기 때문에 용량을 신경 쓸 필요도 없다. 또한 데이터를 리전의 여러 가용영역에 자동 복제하기 때문에 고가용성과 높은 데이터 내구성을 함께 제공한다. 글로벌하게 데이터를 서비스해야 할 경우 글로벌 테이블(global table)을 이용해서 리전간에 데이터를 복제 할 수 있다.

DynamoDB는 레코드 단위로 TTL(Time To Live)를 설정 할 수 있다. 일정시간이 지나면 자동으로 지워지도록 하는 기능인데, 쓰기 처리량에 영향을 주지 않고 테이블에서 레코드를 삭제 할 수 있다. 이러한 기능은 최신 항목만 유지해야 하는 워크로드에서 최신 항목은 유지하면서 비용을 줄이거나 보안 요구사항을 충족시키기 위한 수단으로 사용 할 수 있다.

RDBMS와의 차이점

요즘 NoSQL이 뜨고 있는데, 마법의 은탄환 같은 것은 없다. RDBMS와 NoSQL은 각각의 장단점을 가지고 있으므로 적당한 곳에 적당한 솔류션을 사용해야 한다. 이러한 차이로 데이터베이스 설계가 달라지게 된다.

특성 RDBMS Amazon DynamoDB
최적 워크로드 임시쿼리, 데이터웨어 하우징, OLAP 소셜네트워크, 게이밍, 미디어 공유, IoT 등 웹 스케일 애플리케이션
데이터 모델 잘 정의된 테이블, 행,열 스키마와 관계정의 스키마가 없다. 테이블 항목을 고유하게 식별하기 위한 키외의 속성에는 제약이 없다. JSON, 정형, 반정형 가능
데이터 액세스 데이터 저장과 검색의 표준. 풍부한 표준 도구 제용 Management 콘솔, AWS CLI를 이용한 작업. SDK를 이용한 객체, 문서 중심 기반의 작업
성능 스토리지 최적화되었으며, 디스크 성능에 좌우된다. 개발자는 성능 극대화를 위해 쿼리, 인덱스, 테이블 구조를 최적화 해야 한다. 컴퓨팅 최적화되어 있으며, 기본 하드웨어와 네트워크 지연 시간의 함수다.
확장 더 빠른 하드웨어의 도입. 분산 시스템을 구성하는 것도 가능하지만 추가 투자가 필요하다. 파일 숫자와 크기에 있어서 제약이 있다. 분산된 하드웨어 시스템으로 구성되기 때문에, 테이블당 항목수, 테이블의 총 크기에 제약이 없다.

데이터베이스 특징

애플리케이션에서 데이터베이스에 접근하려면 애플리케이션이 인증되어야 한다. 또한 권한을 가진 작업만 할 수 있도록 권한을 부여 할 수 있어야 한다. 아래 그림은 관계형 데이터베이스와 DynamoDB 클라이언트의 상호작용 특성을 보여준다.

 DynamoDB 와 RDBMS의 상호작용 차이

RDBMS는 보통 애플리케이션 포트(mysql:3306, PostgreSQL:5432)로 독자적인 프로토콜을 이용해서 서버와 클라이언트를 연결한다. 이 연결은 Persistent 하게 구성되는게 일반적이다. 반면 DynamoDB는 HTTP(S)를 이용해서 통신을 하며, HTTP 통신인 만큼 요청단위로 연결을 하고 끊는다. 즉 상태 비저장이다.

RDBMS는 인증이 안되면 연결을 할 수 없다. DynamoDB는 각 요청 단위로 인증을 위한 서명을 필요로 한다. 인증 서명은 Access Key, Secret Key로 이루어진 AWS credentials을 바탕으로 한다. SDK에서 처리해 주기 때문에 방식에 있어서 차이가 있을 뿐 개발난이도가 올라가거나 하지는 않는다.

RDBMS에서 권한은 SQL GRANT 혹은 REVOKE 문을 사용해서 특정 사용자에게 테이블,레코드등에 대한 액세스(읽기/쓰기/삭제 등)권한을 설정하는 식으로 이루어진다. DynamoDB는 IAM(AWS Identity and Access Management)로 처리한다. DynamoDB 리소스(테이블 등)에 권한을 가진 IAM 정책을 만들어서 사용자(User)와 역할(Role)에 연결하는 식으로 처리한다.

RDBMS는 모든 데이터베이스 작업에 SQL문을 사용하고, 이에 대한 응답을 받는다. DynamoDB는 HTTP 요청을 DynamoDB에 전송하고 DynamoDB는 처리 결과를 담은 HTTP 응답을 클라이언트에 전송한다.

테이블의 생성

... 계속