Diferenças entre um banco de dados relacional (SQL) e o DynamoDB ao modificar dados de uma tabela - Amazon DynamoDB

Diferenças entre um banco de dados relacional (SQL) e o DynamoDB ao modificar dados de uma tabela

A linguagem SQL fornece a instrução UPDATE para modificar dados. O Amazon DynamoDB usa a operação UpdateItem para realizar tarefas semelhantes.

Modificar dados em uma tabela com o SQL

No SQL, você usa a instrução UPDATE para modificar uma ou mais linhas. A cláusula SET especifica novos valores para uma ou mais colunas, e a cláusula WHERE determina quais linhas são modificadas. Veja um exemplo a seguir.

UPDATE Music SET RecordLabel = 'Global Records' WHERE Artist = 'No One You Know' AND SongTitle = 'Call Me Today';

Se nenhuma linha corresponder à cláusula WHERE, a instrução UPDATE não terá efeito.

Modificar dados em uma tabela no DynamoDB

No DynamoDB, você pode usar a API do DynamoDB ou do PartiQL (uma linguagem de consultas compatível com SQL) para modificar um único item. Caso deseje modificar vários itens, você deve usar várias operações.

DynamoDB API

Com a API do DynamoDB, use a operação UpdateItem para modificar um único item.

{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET RecordLabel = :label", ExpressionAttributeValues: { ":label": "Global Records" } }

Você deve especificar os atributos Key do item a ser modificado, e uma UpdateExpression para especificar valores de atributo. UpdateItem comporta-se como uma operação “upsert”. O item será atualizado se existir na tabela. Do contrário, um novo item será adicionado (inserido).

UpdateItem oferece suporte a gravações condicionais, nas quais a operação será bem-sucedida apenas se uma ConditionExpression específica for verdadeira. Por exemplo, a operação UpdateItem a seguir não realiza a atualização, a menos que o preço da música seja maior ou igual a 2,00.

{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET RecordLabel = :label", ConditionExpression: "Price >= :p", ExpressionAttributeValues: { ":label": "Global Records", ":p": 2.00 } }

UpdateItem também oferece suporte a contadores atômicos ou a atributos do tipo Number que podem ser aumentados ou reduzidos. Os contadores atômicos são semelhantes de muitas maneiras a geradores de sequências, colunas de identidade ou campos de incremento automático em bancos de dados SQL.

Veja a seguir um exemplo de uma operação UpdateItem para inicializar um novo atributo (Plays) e controlar o número de vezes em que uma música é reproduzida.

{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET Plays = :val", ExpressionAttributeValues: { ":val": 0 }, ReturnValues: "UPDATED_NEW" }

O parâmetro ReturnValues é definido como UPDATED_NEW, o que retorna os novos valores de todos os atributos que foram atualizados. Neste caso, ele retorna 0 (zero).

Sempre que alguém reproduzir essa música, podemos usar a operação UpdateItem a seguir para aumentar Plays por um.

{ TableName: "Music", Key: { "Artist":"No One You Know", "SongTitle":"Call Me Today" }, UpdateExpression: "SET Plays = Plays + :incr", ExpressionAttributeValues: { ":incr": 1 }, ReturnValues: "UPDATED_NEW" }
PartiQL for DynamoDB

Com PartiQL, use a operação ExecuteStatement para modificar um item em uma tabela, usando a instrução Update PartiQL.

A chave primária dessa tabela consiste em Artist e SongTitle. Você deve especificar valores para esses atributos.

UPDATE Music SET RecordLabel ='Global Records' WHERE Artist='No One You Know' AND SongTitle='Call Me Today'

Também é possível modificar vários campos de uma só vez, como no exemplo a seguir.

UPDATE Music SET RecordLabel = 'Global Records' SET AwardsWon = 10 WHERE Artist ='No One You Know' AND SongTitle='Call Me Today'

Update também oferece suporte a contadores atômicos ou a atributos do tipo Number que podem ser aumentados ou reduzidos. Os contadores atômicos são semelhantes de muitas maneiras a geradores de sequências, colunas de identidade ou campos de incremento automático em bancos de dados SQL.

Veja a seguir um exemplo de instrução Update para inicializar um novo atributo (Plays) para controlar o número de vezes em que uma música foi reproduzida.

UPDATE Music SET Plays = 0 WHERE Artist='No One You Know' AND SongTitle='Call Me Today'

Sempre que alguém reproduzir essa música, poderemos usar a instrução Update a seguir para aumentar Plays (Reproduções) em um.

UPDATE Music SET Plays = Plays + 1 WHERE Artist='No One You Know' AND SongTitle='Call Me Today'
nota

Para obter exemplos de código que usam Update e ExecuteStatement, consulte Instruções Update em PartiQL para DynamoDB.