

# 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` – 新しいテーブルを作成します。オプションで、1 つ以上のセカンダリインデックスを作成し、テーブルに対して 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` よりも効率的です。アプリケーションで項目を書き込んだり読み込んだりするために、1 回のネットワークラウンドトリップのみで済むためです。

### Classic API
<a name="HowItWorks.API.DataPlane.classic"></a>

#### データの作成
<a name="HowItWorks.API.DataPlane.Create"></a>
+ `PutItem` – テーブルに単一の項目を書き込みます。プライマリキー属性を指定する必要がありますが、その他の属性を指定する必要はありません。
+ `BatchWriteItem` – 最大 25 個の項目をテーブルに書き込みます。これは、`PutItem` を複数回呼び出すよりも効率的です。アプリケーションで項目を書き込むために、1 回のネットワークラウンドトリップのみで済むためです。

#### データの読み込み
<a name="HowItWorks.API.DataPlane.Read"></a>
+ `GetItem` – テーブルから単一の項目を取り出します。目的の項目のプライマリキーを指定する必要があります。項目全体またはその属性のサブセットのみを取り出すことができます。
+ `BatchGetItem` – 1 つ以上のテーブルから最大 100 個の項目を取り出します。これは、`GetItem` を複数回呼び出すよりも効率的です。アプリケーションで項目を読み込むために、1 回のネットワークラウンドトリップのみで済むためです。
+ `Query` – 特定のパーティションキーがあるすべての項目を取り出します。パーティションキーの値を指定する必要があります。項目全体またはその属性のサブセットのみを取り出すことができます。オプションで、ソートキーの値に条件を適用し、同じパーティションキーがあるデータのサブセットだけを取り出すことができます。テーブルにパーティションキーとソートキーの両方を持つテーブルがある場合、テーブルでこのオペレーションを使用できます。また、インデックスにパーティションキーとソートキーの両方がある場合、インデックスでこのオペレーションを使用できます。
+ `Scan` – 指定されたテーブルまたはインデックスのすべての項目を取り出します。項目全体またはその属性のサブセットのみを取り出すことができます。オプションでフィルタリング条件を適用すると、関心のある値のみを返し、残りは破棄できます。

#### データの更新
<a name="HowItWorks.API.DataPlane.Update"></a>
+ `UpdateItem` – 項目の 1 つ以上の属性を変更します。変更する項目のプライマリキーを指定する必要があります。新しい属性を追加したり、既存の属性を変更または削除したりできます。ユーザー定義の条件を満たす場合にのみ更新が成功するように、条件付きの更新を実行できます。オプションで、アトミックカウンターを実装できます。このカウンタは、他の書き込みリクエストを妨害することなく、数値属性をインクリメントまたはデクリメントします。

#### データの削除
<a name="HowItWorks.API.DataPlane.Delete"></a>
+ `DeleteItem` – テーブルから単一の項目を削除します。削除する項目のプライマリキーを指定する必要があります。
+ `BatchWriteItem` – 1 つ以上のテーブルから最大 25 個の項目を削除します。これは、`DeleteItem` を複数回呼び出すよりも効率的です。アプリケーションで項目を削除するために、1 回のネットワークラウンドトリップのみで済むためです。
**注記**  
`BatchWriteItem` は、データの作成とデータの削除の両方に使用できます。

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

*DynamoDB Streams* オペレーションでは、テーブルのストリーミングを有効または無効にし、ストリーミングに含まれるデータ変更レコードにアクセスするように許可します。
+ `ListStreams` – すべてのストリーミングのリスト、または特定のテーブルのストリーミングのみを返します。
+ `DescribeStream` – Amazon リソースネーム (ARN) およびアプリケーションが最初のいくつかのストリーミングレコードの読み込みを開始できる場所など、ストリーミングに関する情報を返します。
+ `GetShardIterator` – *シャードイテレーター*を返します。これは、ストリーミングからレコードを取得するためにアプリケーションが使用するデータ構造です。
+ `GetRecords` – 特定のシャードイテレーターを使用して 1 つ以上のストリーミングレコードを取得します。

## トランザクション
<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 オペレーションを実行できるバッチ操作です。

### Classic API
<a name="HowItWorks.API.DataPlane.classic"></a>
+ `TransactWriteItems` – テーブル内または複数のテーブル間の複数の項目に対して、オールオアナッシングの結果が保証された `Put`、`Update` および `Delete` オペレーションを実行できるバッチオペレーションです。
+ `TransactGetItems` – 1 つ以上のテーブルから複数の項目を取得する `Get` オペレーションを実行できるバッチ操作です。