

# DynamoDB API
<a name="HowItWorks.API"></a>

Amazon DynamoDB를 사용하려면 애플리케이션에서 몇 가지 간단한 API 작업을 사용해야 합니다. 다음은 이러한 작업을 카테고리별로 정리한 요약본입니다.

**참고**  
전체 API 작업 목록은 [Amazon DynamoDB API 참조](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/Welcome.html)를 참조하세요.

**Topics**
+ [컨트롤 플레인](#HowItWorks.API.ControlPlane)
+ [데이터 영역](#HowItWorks.API.DataPlane)
+ [DynamoDB Streams](#HowItWorks.API.Streams)
+ [트랜잭션](#HowItWorks.API.Transactions)

## 컨트롤 플레인
<a name="HowItWorks.API.ControlPlane"></a>

*제어 영역* 작업을 사용하면 DynamoDB 테이블을 생성하고 관리할 수 있습니다. 또한 인덱스, 스트림 및 테이블에 따라 다른 다양한 객체를 사용하도록 해 줍니다.
+  `CreateTable` - 새 테이블을 생성합니다. 선택 사항으로, 하나 이상의 보조 인덱스를 생성하고 테이블에 DynamoDB Streams를 활성화할 수 있습니다.
+ `DescribeTable` - 기본 키 스키마, 처리량 설정, 인덱스 정보와 같은 테이블에 대한 정보를 반환합니다.
+ `ListTables` - 모든 테이블의 이름을 목록으로 반환합니다.
+ `UpdateTable` - 테이블 또는 해당 인덱스의 설정을 수정하거나, 테이블에서 새 인덱스를 생성 또는 제거하거나, 테이블의 DynamoDB Streams 설정을 수정합니다.
+ `DeleteTable` - DynamoDB에서 테이블 및 해당 종속적 객체 모두를 제거합니다.

## 데이터 영역
<a name="HowItWorks.API.DataPlane"></a>

*데이터 플레인* 작업은 테이블의 데이터에 대해 생성, 읽기, 업데이트 및 삭제(*CRUD*) 작업을 수행하도록 해 줍니다. 또한 일부 데이터 영역 작업을 사용하여 보조 인덱스에서 데이터를 읽을 수 있습니다.

[PartiQL - Amazon DynamoDB용 SQL 호환 쿼리 언어](ql-reference.md)을 사용하여 이러한 CRUD 작업을 수행할 수도 있고 각 작업을 고유한 API 호출로 구분하는 DynamoDB의 클래식 CRUD API를 사용할 수도 있습니다.

### PartiQL - SQL 호환 쿼리 언어
<a name="HowItWorks.API.DataPlane.partiql"></a>
+ `ExecuteStatement` - 테이블에서 여러 항목을 읽습니다. 테이블에서 단일 항목을 쓰거나 업데이트할 수도 있습니다. 단일 항목을 쓰거나 업데이트할 때는 기본 키 속성을 지정해야 합니다.
+ `BatchExecuteStatement` - 테이블에서 여러 항목을 쓰거나, 업데이트하거나, 읽습니다. 항목을 쓰거나 읽을 때 애플리케이션이 네트워크를 한 번만 왕복하면 되므로 `ExecuteStatement`보다 더 효율적입니다.

### 클래식 API
<a name="HowItWorks.API.DataPlane.classic"></a>

#### 데이터 생성
<a name="HowItWorks.API.DataPlane.Create"></a>
+ `PutItem` - 테이블에 단일 항목을 씁니다. 기본 키 속성은 꼭 지정해야 하지만 다른 속성은 지정하지 않아도 됩니다.
+ `BatchWriteItem` - 테이블에 최대 25개의 항목을 씁니다. 항목을 쓸 때 애플리케이션이 네트워크를 한 번만 왕복하면 되므로 `PutItem`을 여러 번 호출하는 것보다 이 작업이 효율적입니다.

#### 데이터 읽기
<a name="HowItWorks.API.DataPlane.Read"></a>
+ `GetItem` - 테이블에서 단일 항목을 가져옵니다. 원하는 항목의 기본 키를 지정해야 합니다. 전체 항목 또는 속성 일부만 가져올 수 있습니다.
+ `BatchGetItem` - 하나 이상의 테이블에서 최대 100개의 항목을 가져옵니다. 항목을 읽을 때 애플리케이션이 네트워크를 한 번만 왕복하면 되므로 `GetItem`을 여러 번 호출하는 것보다 이 작업이 효율적입니다.
+ `Query` - 특정 파티션 키가 있는 모든 항목을 가져옵니다. 파티션 키 값을 지정해야 합니다. 전체 항목 또는 속성 일부만 가져올 수 있습니다. 경우에 따라 정렬 키 값에 조건을 적용하여 파티션 키가 동일한 데이터의 하위 집합만 검색할 수도 있습니다. 테이블에 파티션 키와 정렬 키가 모두 있는 경우 이러한 작업을 테이블에 사용할 수 있습니다. 또한 인덱스에 파티션 키와 정렬 키가 모두 있는 경우 이러한 작업을 인덱스에 사용할 수 있습니다.
+ `Scan` - 지정한 테이블 또는 인덱스의 모든 항목을 가져옵니다. 전체 항목 또는 속성 일부만 가져올 수 있습니다. 선택 사항으로, 필터링 조건을 적용하여 필요한 값만 반환하고 나머지는 버릴 수 있습니다.

#### 데이터 업데이트
<a name="HowItWorks.API.DataPlane.Update"></a>
+ `UpdateItem` - 항목에서 하나 이상의 속성을 수정합니다. 수정하려는 항목의 기본 키를 지정해야 합니다. 새로운 속성을 추가할 수 있으며 기존 속성을 수정하거나 제거할 수 있습니다. 조건부 업데이트를 수행하여 사용자 정의 조건을 만족할 때만 업데이트가 수행되도록 할 수도 있습니다. 선택 사항으로, 원자성 카운터를 구현할 수 있습니다. 이는 다른 쓰기 요청과 충돌하지 않고도 숫자 속성을 증감합니다.

#### 데이터 삭제
<a name="HowItWorks.API.DataPlane.Delete"></a>
+ `DeleteItem` - 테이블에서 단일 항목을 삭제합니다. 삭제하려는 항목의 기본 키를 지정해야 합니다.
+ `BatchWriteItem` - 하나 이상의 테이블에서 최대 25개의 항목을 삭제합니다. 항목을 삭제할 때 애플리케이션이 네트워크를 한 번만 왕복하면 되므로 `DeleteItem`을 여러 번 호출하는 것보다 이 작업이 효율적입니다.
**참고**  
데이터 생성과 삭제에 모두 `BatchWriteItem`을 사용할 수 있습니다.

## DynamoDB Streams
<a name="HowItWorks.API.Streams"></a>

*DynamoDB Streams* 작업을 사용하면 테이블에서 스트림을 활성화하거나 비활성화할 수 있으며, 스트림에 포함되어 있는 데이터 수정 레코드에 액세스할 수 있습니다.
+ `ListStreams` - 모든 스트림 목록 또는 특정 테이블의 스트림만 반환합니다.
+ `DescribeStream` - 해당 Amazon 리소스 이름(ARN) 및 애플리케이션이 처음 몇 개 스트림 레코드를 읽기 시작할 수 있는 위치와 같은 스트림에 대한 정보를 반환합니다.
+ `GetShardIterator` - *샤드 반복자*를 반환합니다. 샤드 반복자는 애플리케이션이 스트림에서 레코드를 가져오는 데 사용하는 데이터 구조입니다.
+ `GetRecords` - 지정된 샤드 반복자를 사용하여 하나 이상의 스트림 레코드를 가져옵니다.

## 트랜잭션
<a name="HowItWorks.API.Transactions"></a>

*트랜잭션*은 원자성, 일관성, 격리 및 내구성(ACID)을 제공하여 애플리케이션에서 데이터의 정확성을 더 쉽게 유지할 수 있습니다.

[PartiQL - Amazon DynamoDB용 SQL 호환 쿼리 언어](ql-reference.md)을 사용하여 트랜잭션 작업을 수행할 수도 있고 각 작업을 고유한 API 호출로 구분하는 DynamoDB의 클래식 CRUD API를 사용할 수도 있습니다.

### PartiQL - SQL 호환 쿼리 언어
<a name="HowItWorks.API.Transactions.DataPlane.partiql"></a>
+ `ExecuteTransaction` - 양자택일 결과가 보장되는 테이블 내와 테이블 간 모두에서 여러 항목에 대한 CRUD 작업을 허용하는 배치 작업입니다.

### 클래식 API
<a name="HowItWorks.API.DataPlane.classic"></a>
+ `TransactWriteItems` - 양자택일 결과가 보장되는 테이블 내와 테이블 간 모두에서 여러 항목에 대한 `Put`, `Update` 및 `Delete` 작업을 허용하는 배치 작업입니다.
+ `TransactGetItems` - 하나 이상의 테이블에서 여러 항목을 가져오는 `Get` 작업을 허용하는 배치 작업입니다.