DynamoDB - DynamoDB API
DynamoDB 를 사용하기에서는, Application 에서 몇가지 간단한 API 를 사용해야한다. 아래는 Category 로 구분된 API 의 요약들이다.
Topics
- Control Plane
- Data Plane
- DynamoDB Streams
- Transactions
Control Plane
Control Plane 명령은 DynamoDB 테이블을 생성하고 관리한다. 또한, Control Plane 은 Index, Stream 과 같이 테이블에 의존적인 것들을 다룰 수 있게 해준다.
- CreateTable - 새로운 테이블을 생성한다. 필요하다면, 한개 이상의 Secondary Index 를 생성할 수 있고 DynamoDB Stream 을 활성화 할 수 있다.
- DescribeTable - Primay Key, Schema, 처리량 설정, Index 정보와 같은 테이블 정보를 반환한다.
- ListTable - 모든 테이블 이름을 반환한다.
- UpdateTable - 테이블 설정을 수정하거나, 테이블의 Index 를 생성/수정 혹은 DynamoDB Stream 설정을 수정한다.
- DeleteTable - 테이블과 그와 관련된 모든 것들을 DynamoDB 에서 삭제한다.
Data Plane
Data Plane 명령은 Table 의 데이터을 생성/수정/삭제/읽기 (CRUD) 를 수행할 수 있으며 Secondary Index 에서 데이터를 읽어올 수 있다.
PartiQL ( DynamoDB 를 위한 MySQL 과 호환되는 쿼리 언어 ) 를 이용하여 Data Plane 을 수행할 수 있다. 혹은, DynamoDB classic CRUD API 를 사용할 수도 있다.
PartiQL
- ExecuteStatement - 복수개의 아이템을 테이블로부터 읽어온다. 단일 아이템에 대해서 쓰거나 수정할 수 있다. 쓰거나 수정할때는 Primary Key 로 아이템을 특정해야한다.
- BatchExecuteStatement - 복수개의 아이템을 쓰거나 수정할때 사용한다. 복수개의 아이템을 쓰거나 읽을때 한번에 네트워크 통신으로 수행하기 때문에 ExecuteStatement 보다 효율적이다.
Classic APIs
Creation Data
- PutItem - 단일 아이템을 테이블에 쓴다. Primary key 를 지정해야하지만 다른 Attribute 는 필수가 아니다.
- BatchWriteItem - 25까지의 아이템을 테이블에 쓴다. 여러개의 아이템을 테이블에 쓸때 단일 네티워크 통신으로 처리되기 때문에 PutItem 보다 효율적이다. 한개 이상의 아이템을 제거할때도 BatchWriteItem 을 사용할 수 있다.
Reading Data
- GetItem - 테이블에서 하나의 아이템을 불러온다. 불러오고자하는 아이템의 Primary key 를 지정해야한다. 전체 아이템을 불러올 수도 있고 필요한 Attribute 만 불러올 수도 있다.
- BatchGetItem - 100개 까지의 아이템을 테이블로부터 불러온다. 단일 네트워크 통신을 사용하기 때문에 GetItem 보다 효율적이다.
- Query - 특정 Partiton Key 를 가지고 있는 모든 아이템을 불러온다. Partition Key 를 지정해야한다. 전체 아이템을 불러올 수 있고 Attribute 의 일부만 불러올 수도 있다. 필요하다면, Sort Key 를 적용하여 같은 Partition Key 를 가진 것중에 일부만 불러올 수 있다. 테이블에 Parition Key 와 Sort key 둘 다 있는 경우에 이 명령을 수행할 수 있다. 또한, Index 에 Partion Key 와 Sort Key 가 있다면 마찬가지로 이 명령을 사용할 수 있다.
- Scan - 테이블 또는 인덱스에 있는 모든 아이템을 불러온다. 아이템 전부를 불러올 수 있고 일부 Attribute 를 불러올 수 있다. 특정 조건으로 필터링하여 필요한 Item 만 불러올 수 있고 나머지는 제거할 수 있다.
Updating Data
- UpdateItem - 아이템에서 한개 이상의 Attribute 를 수정한다. 수정하고 싶은 Item 은 Primary key 로 특정해야한다. 새로운 Attribute 를 추가/수정 할 수 있으며 존재하는 Attribute 를 제거할 수 있다. 조건적으로 업데이트가 가능하여 유저가 정의한 조건이 충족되었을때만 업데이트가 수행되도록 할 수 있다. 필요하다면, Atomic Counter 를 구현하여 다른 쓰기 요청과 겹치지 않고 숫자를 늘리거나 줄일 수 있다.
Deleting Data
- DeleteItem - 테이블에서 단일 Item 을 제거한다. 제거하고자 하는 Item 을 Primary Key 로 지정해야한다.
- BatchWriteItem - 25개 까지의 아이템들을 삭제할 수 있다. 여러개의 아이템을 테이블에 제거할때 단일 네티워크 통신으로 처리되기 때문에 DeleteItem 보다 효율적이다. 한개 이상의 아이템을 제거할때도 BatchWriteItem 을 사용할 수 있다.
DynamoDB Streams
DynamoDB Stream 명령은 테이블에 Stream 을 활성화하거나 비활성화 할 수 있고 Stream 에 포함된 데이터 수정 기록에 접근할 수 있도록 한다.
- ListStreams - 모든 Stream 을 반환하거나, 특정 테이블의 Stream 을 반환한다.
- DescribeStreams - ARN 과 같은 Stream 정보를 반환하고 Application 이 처음으로 읽기 시작한 Stream record 위치를 반환한다.
- GetShardIterator - Application 이 Stream 에서 데이터를 읽어오는데 사용하는 자료구조인 Shard Iterator 를 반환한다.
- GetRecords - 주어진 Shard Iterator 에서 한개 이상의 Stream Record 를 불러온다.
Transactions
Transaction 은 원자적,일관성,격리,내구성 (ACID) 를 제공하여 Application 이 데이터 정합성을 쉽게 유지할 수 있도록 한다.
PartiQL ( DynamoDB 를 위한 MySQL 과 호환되는 쿼리 언어 ) 를 이용하여 transaction 명령을 실행할 수 있고 DynamoDB Classic CRUD API 를 사용할 수도 있다.
PartiQL
- ExecuteTransaction - 여러 테이블에 걸쳐 실행되는 CRUD 명령들을 모두 성공하거나 모두 실패하도록 하는 명령
Classic APIs
- TransactWriteItems - Put, Update, Delete 를 지원하며 여러 테이블에 걸쳐 실행되는 CRUD 명령들을 모두 성공하거나 모두 실패하도록 하는 명령
- TransactGetItems - 한개 이상의 테이블에서 여러 Item 을 불러올 수 있도록 하는 명령
출처 : https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.API.html