Amazon DynamoDB
SQL만을 사용하지않는 데이터베이스 관리 시스템(DBMS)을 지칭하는 단어
NoSQL
"Not only SQL"
1) 관계형 모델을 사용하지 않으며 테이블 간 연결해서 조회할 수 있는 조인 기능이 없음
2) 데이터 조회를 위해 직접 프로그래밍하는 등의 비 SQL 인터페이스를 통한 데이터 접근
3) 대부분 여러 데이터베이스 서버를 묶어서(클러스터링) 하나의 데이터베이스를 구성
4) 관계형 데이터베이스에서는 지원하는 데이터 처리 완결성(Transaction, ACID 지원)이 보장되지 않음
5) 데이터의 스키마와 속성들을 다양하게 수용하고 동적으로 정의(Schemaless)
6) 데이터베이스의 중단없는 서비스와 자동 복구 기능 지원
7) 대다수의 제품이 Open Source로 제공
8) 대다수의 제품이 고 확장성, 고 가용성, 고 성능 특징을 가짐
특징
성능에 특화된 목적을 위해 데이터 저장소에 비 구조적인 데이터를 저장하기 위한 분산저장 시스템
Amazon DynamoDB 개요
Amazon
DynamoDB
•NoSQL 데이터베이스
• 완전 관리형 서비스
(보안, 백업 및 복원, 인 메모리 캐싱 기능을 기본적으로 제공)
• 대용량, 뛰어난 확장성
(스토리지 공간 및 대역폭 성능에 대한 대용량의 확장성)
• 10ms(0.01s) 미만의 빠르고 일관된 성능
• 유연한 데이터 모델
(Document 타입 또는 Key-Value Store)
• 세분화된 접근 제어
6.
Amazon DynamoDB 사용사례
• KVS(key value store)
사용자 정보를 저장하는 데이터베이스
모바일 게임, RPG 게임에서의 메인 데이터베이스로
소셜 기반 어플리케이션에서 자료, 지도 정도 등의 데이터에 대한 S3 패쓰 저장 장소로
• 게임, 광고 등의 사용자 행동 이력 데이터베이스로
유저 아이디에 대해 여러 행동 이력을 관리하기 위한 데이터베이스
• 모바일 앱의 백앤드
모바일 어플리케이션에서 직접 참조할 수 있는 데이터베이스로
• 이외에
배치처리에서 잠금 관리로
플래쉬 마케팅
스토리지 인덱스
7.
Amazon DynamoDB 테이블구성 요소
• Partition key
• Partition key & Sort Key(Range key)
DynamoDB 테이블의 기본키 설정
8.
Amazon DynamoDB 테이블구성 요소
Attributes
• String
• Number
• Binary
• Boolean
• Null
• 복수값 데이터형
Set of String
Set of Number
Set of Binary
• 문서 데이터 형
List형은、정렬된 값의
컬랙션을 포함
Map형은, 순서없이
이름과 값 쌍의 컬랙션을
포함
{
Day: "Monday",
UnreadEmails: 42,
ItemsOnMyDesk: [
"Coffee Cup",
"Telephone",
{
Pens: { Quantity : 3},
Pencils: { Quantity : 2},
Erasers: { Quantity : 1}
}
]
}
9.
Amazon DynamoDB 테이블조작
• GetItem : Partition key를 조건으로 지정하고, 한개의 아이템을 가져옵니다.
• Scan : 조건 없이 모든 데이터를 가져옵니다.
• Query : Partition key에 특정 값을 지정하고, Sort Key에 조건을 지정하여 원하는 데이터를 가져옵니다.
Sort Key에 조건을 지정하는 것은 생략할 수 있습니다.
• PutItem : 1건의 아이템을 저장
• UpdateItem : 1건의 아이템을 수정
• DeleteItem : 1건의 아이템을 삭제
Create Read Update Delete
PutItem
BatchWriteItem
GetItem
BatchGetItem
Query
Scan
UpdateItem DeleteItem
BatchWriteItem
Table API
10.
Amazon DynamoDB 장점
•자동으로 데이터를 AWS의 Region 별로 3곳의 AZ에 복제 하여 분산 저장 됨
- 한 가용역역에서 데이터 손실이나 장애가 발생하더라도, 다른 리전에 퍼져있는 데이터를 통해 DB를 정상적으로 대응
• 용량이 무제한이며, 읽기, 쓰기 처리량을 서비스의 트래픽에 맞게 조절해서 설정 가능
• 데이터 용량이 늘어나면 알아서 스토리지를 늘리고 클러스터를 확장하며 데이터를 분산
• AWS의 다른 서비스와 연계하여 사용이 가능
• 처리 속도가 빠름
- 데이터가 저장된 용량에 상관없이 어떤 규모에서도 10밀리초 미만의 응답시간을 제공
• 비정형적인 데이터를 저장하는데 유용
종합관리 + 확장성 + 빠른성능 + 관리 부담 제로
11.
Amazon DynamoDB 단점
•조인을 지원하지 않음
• 진입장벽이 높음
- 테이블 설계, 쿼리, 인덱스, 파티셔닝, 쓰기용량, 읽기용량 등등 하나도 놓칠 수 없는 부분
• 비용이 많이듬
• Partition key 잘 정해야 함. 중간에 못 바꿈
• 문법 불편함
• DB workbench툴이 없음