

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

Para trabalhar com o Amazon DynamoDB, a aplicação deve usar algumas operações de API simples. Veja a seguir um resumo dessas operações, organizadas por categoria.

**nota**  
Para obter uma lista completa de operações de API, consulte a [Referência de API do Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/Welcome.html).

**Topics**
+ [Ambiente de gerenciamento](#HowItWorks.API.ControlPlane)
+ [Plano de dados](#HowItWorks.API.DataPlane)
+ [DynamoDB Streams](#HowItWorks.API.Streams)
+ [Transações](#HowItWorks.API.Transactions)

## Ambiente de gerenciamento
<a name="HowItWorks.API.ControlPlane"></a>

As operações do *ambiente de gerenciamento* permitem criar e gerenciar tabelas do DynamoDB. Elas também permitem que você trabalhe com índices, fluxos e outros objetos que são dependentes de tabelas.
+  `CreateTable`: cria uma nova tabela. Opcionalmente, você pode criar um ou mais índices secundários e habilitar o DynamoDB Streams para a tabela.
+ `DescribeTable`: retorna informações sobre uma tabela, como seu esquema de chaves primárias, configurações de throughput e informações de índice.
+ `ListTables`: retorna os nomes de todas as suas tabelas em uma lista.
+ `UpdateTable`: modifica as configurações de uma tabela ou de seus índices, cria ou remove novos índices em uma tabela ou modifica as configurações do DynamoDB Streams para uma tabela.
+ `DeleteTable`: remove uma tabela e todos os seus objetos dependentes do DynamoDB.

## Plano de dados
<a name="HowItWorks.API.DataPlane"></a>

As operações do *plano de dados* permitem criar, ler, atualizar e excluir (também chamadas de *CRUD*) nos dados de uma tabela. Algumas das operações de plano de dados também permitem que você leia dados de um índice secundário.

Você pode usar o [PartiQL: uma linguagem de consultas compatível com SQL para o Amazon DynamoDB](ql-reference.md) para executar essas operações CRUD ou pode usar as APIs CRUD clássicas do DynamoDB que separam cada operação em uma chamada de API distinta. 

### PartiQL: uma linguagem de consultas compatível com SQL
<a name="HowItWorks.API.DataPlane.partiql"></a>
+ `ExecuteStatement`: lê vários itens de uma tabela. Você também pode gravar ou atualizar um único item de uma tabela. Ao gravar ou atualizar um único item, é necessário especificar os atributos de chave primária.
+ `BatchExecuteStatement`: grava, atualiza ou lê vários itens de uma tabela. Isso é mais eficiente do que `ExecuteStatement`, pois sua aplicação precisa apenas de uma única viagem de ida e volta na rede para gravar ou ler os itens.

### APIs clássicas
<a name="HowItWorks.API.DataPlane.classic"></a>

#### Criar dados
<a name="HowItWorks.API.DataPlane.Create"></a>
+ `PutItem`: grava um único item em uma tabela. Você deve especificar os atributos de chave primária, mas não precisa especificar outros atributos.
+ `BatchWriteItem`: grava até 25 itens em uma tabela. Isso é mais eficiente do que chamar `PutItem` várias vezes, pois seu aplicativo precisa apenas de uma única viagem de ida e volta na rede para gravar os itens.

#### Leitura de dados
<a name="HowItWorks.API.DataPlane.Read"></a>
+ `GetItem`: recupera um único item de uma tabela. É necessário especificar a chave primária do item desejado. É possível recuperar o item inteiro ou apenas um subconjunto dos seus atributos.
+ `BatchGetItem`: recupera até 100 itens de uma ou mais tabelas. Isso é mais eficiente do que chamar `GetItem` várias vezes, pois seu aplicativo precisa apenas de uma única viagem de ida e volta na rede para ler os itens.
+ `Query`: recupera todos os itens que têm uma chave de partição específica. Você deve especificar o valor da chave de partição. É possível recuperar itens inteiros, ou apenas um subconjunto dos seus atributos. Se desejar, é possível aplicar uma condição aos valores de chaves de classificação, para recuperar somente um subconjunto dos dados que têm a mesma chave de partição. Essa operação pode ser usada em uma tabela, desde que essa tabela tenha uma chave de partição e uma chave de classificação. Ela também pode ser usada em um índice, desde que esse índice tenha uma chave de partição e uma chave de classificação.
+ `Scan`: recupera todos os itens na tabela ou no índice especificado. É possível recuperar itens inteiros, ou apenas um subconjunto dos seus atributos. Opcionalmente, você pode aplicar uma condição de filtragem para retornar apenas os valores de interesse e descartar o restante.

#### Atualização de dados
<a name="HowItWorks.API.DataPlane.Update"></a>
+ `UpdateItem`: modifica um ou mais atributos em um item. É necessário especificar a chave primária do item que você deseja modificar. É possível adicionar novos atributos e modificar ou remover atributos existentes. Também é possível realizar atualizações condicionais, para que a atualização apenas seja bem-sucedida quando o uma condição definida pelo usuário for atendida. Opcionalmente, você pode implementar um contador atômico, que incrementa ou diminui um atributo numérico sem interferir em outras solicitações de gravação.

#### Excluir dados
<a name="HowItWorks.API.DataPlane.Delete"></a>
+ `DeleteItem`: exclui um único item de uma tabela. É necessário especificar a chave primária do item que você deseja excluir.
+ `BatchWriteItem`: exclui até 25 itens de uma ou mais tabelas. Isso é mais eficiente do que chamar `DeleteItem` várias vezes, pois seu aplicativo precisa apenas de uma única viagem de ida e volta na rede para excluir os itens.
**nota**  
Você pode usar `BatchWriteItem` para criar e excluir dados.

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

As operações do *DynamoDB Streams* permitem que você habilite ou desabilite um fluxo em uma tabela e permitem o acesso a registros de modificação de dados contidos em um fluxo.
+ `ListStreams`: retorna uma lista de todos os seus fluxos ou somente o fluxo para uma tabela específica.
+ `DescribeStream`: retorna informações sobre um fluxo, como seu nome do recurso da Amazon (ARN) e onde sua aplicação pode começar a ler os primeiro registros de fluxo.
+ `GetShardIterator`:retorna um *iterador de fragmentos*, uma estrutura de dados que sua aplicação usa para recuperar os registros de fluxo.
+ `GetRecords`: recupera um ou mais registros de fluxo, usando um determinado iterador de fragmentos.

## Transações
<a name="HowItWorks.API.Transactions"></a>

*Transações* fornecem atomicidade, consistência, isolamento e durabilidade (ACID), permitindo que você mantenha a exatidão dos dados em suas aplicações com mais facilidade.

Você pode usar o [PartiQL: uma linguagem de consultas compatível com SQL para o Amazon DynamoDB](ql-reference.md) para executar operações transacionais ou pode usar as APIs CRUD clássicas do DynamoDB que separam cada operação em uma chamada de API distinta.

### PartiQL: uma linguagem de consultas compatível com SQL
<a name="HowItWorks.API.Transactions.DataPlane.partiql"></a>
+ `ExecuteTransaction`: uma operação em lote que permite operações CRUD em vários itens dentro e entre tabelas com um resultado garantido de tudo ou nada.

### APIs clássicas
<a name="HowItWorks.API.DataPlane.classic"></a>
+ `TransactWriteItems`: uma operação em lote que permite operações `Put`, `Update` e `Delete` em vários itens dentro e entre tabelas com um resultado garantido de tudo ou nada.
+ `TransactGetItems`: uma operação em lote que permite que operações `Get` recuperem vários itens de uma ou mais tabelas.