Amazon DynamoDB는 NoSQL 기반의 완전관리형 데이터베이스 서비스이다.
NoSQL (Not Only SQL, Non-relational Database)
- RDBS와 달리 스키마와 관계라는 개념 없이 자유롭게 데이터를 관리할 수 있다.
- RDBS의 테이블과 같은 개념으로 콜렉션이라는 형태로 데이터를 관리한다.
- SQL 구문을 사용하지 않는다.
- 일반적으로 필요한 데이터가 하나의 콜렉션에 있고, 자주 변경되지 않는 데이터에 큰 장점이 있다.
- 수평적으로 확장하기 용이하며 분산처리를 주로 처리한다.
- 단점을 콜렉션에 중복된 데이터 저장이 가능하다. 따라서, 데이터 업데이트 시 저장되어 있는 업데이트를 동일하게 해주어야 한다.
DynamoDB는 테이블(Table), 항목(Item), 속성(Attribute)으로 구성된다.
테이블(Table)
항목(Item)
속성(Attribute)
DynamoDB에서 기본 키는 필수로, 테이블을 생성할 때 지정되면 NULL
은 불가능하다.
보조 인덱스는 기본 키의 도움 여부과 관계없이 데이터를 쿼리할 수 있는 특성으로 이해할 수 있다.
DynamoDB에는 이러한 추가 액세스를 진행하는 데 도움이 되는 보조 인덱스가 존재한다.
보조 인덱스에 관한 자세한 내용은 자세한 내용은 아래 공식 문서에서 확인하자.
Amazon DynamoDB Secondary Index
DynamoDB는 추가 옵션으로 데이터 수정 이벤트를 추적할 수 있다.
각 이벤트는 스트림 레코드(stream record)로 표시되며 이 추가 옵션 서비스가 활성화 되면 신규/업데이트/삭제 시 새 이벤트가 표기된다.
Amazon DynamoDB는 다양한 API를 제공한다.
자세한 내용 및 사용법은 아래 공식 문서에서 확인하자.
Amazon DynamoDB API Document
Amazon DynamoDB API Using
제어 영역(Control Plane): 데이블 생성 및 관리 데이블을 담당하는 작업
CreateTable
: 새 테이블 생성DescribeTable
: 테이블에 대한 정보 담기ListTable
: 목록의 모든 테이블 이름 반환데이터 제어(Data Plane): CRUD 작업 수행
PutItem
: 기본 키를 사용해 테이블의 단일 데이터 항목 생성BatchWriteItem
: PutItem
의 확장된 기능으로 최대 25개의 항목 생성GetItem
: 기본 키로 테이블에서 단일 항목 검색BatchGetItem
: GetItem
의 확장된 기능으로 여러 테이블에서 최대 100개의 항목 검색Query
: 파티션 키를 이용해 항목을 검색Scan
: Query
와 유사한 방식으로 작동하지만 파티션 키가 필요하지 않음UpdateItem
: 기본 키를 이용해 테이블의 단일 데이터 혹은 여러 데이터 항목 수정DeleteItem
: 기본 키를 이용해 테이블의 단일 항목 삭제BatchWriteItem
: DeleteItem
의 확장된 기능으로 최대 25개의 항목 삭제DynamoDB Streams: 테이블에서 스트림을 활성화/비활성화, 스트림에 포함되어 있는 데이터 수정 레코드에 액세스
ListStreams
: 모든 스트림 목록 또는 특정 테이블의 스트림 반환DescribeStream
: 스트림에 대한 정보 반환GetShardIterator
: 샤드 반복자를 반환한다. 샤드 반복자는 애플리케이션이 스트림에서 레코드를 가져오는 데 사용하는 데이터 구조이다.GetRecords
: 지정된 샤드 반복자를 사용하여 하나 이상의 스트림 레코드 반환트랜잭션: 원자성, 일관성, 격리 및 내구성(ACID)을 제공하여 애플리케이션에서 데이터의 정확성 유지
TransactWriteItems
: 양자택일 결과가 보장되는 테이블 내와 테이블 간 모두에서 여러 항목에 대한 Put, Update 및 Delete 작업을 허용하는 배치 작업TransactGetItems
: 하나 이상의 테이블에서 여러 항목을 가져오는 Get 작업을 허용하는 배치 작업https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/Introduction.html
https://interconnection.tistory.com/60
https://velog.io/@songa29/AWS-DynamoDB%EB%9E%80
https://yoo11052.tistory.com/174
https://blog.kico.co.kr/2022/03/17/aws-dynamodb/