Atualizações condicionais no DynamoDB

Atualizações condicionais no DynamoDB
Como em outros bancos de dados, a operação de atualização está entre as chamadas de API mais comuns no DynamoDB. Além disso, você pode usar o utilitário updateItem juntamente com as expressões de condição no DynamoDB para permitir apenas atualizações sobre itens somente se o comando atender às condições definidas.

Assim, as atualizações condicionais no DynamoDB permitirão apenas atualizar itens em uma tabela apenas se determinadas condições corresponderem. Esse recurso é útil na atualização de itens anatomicamente, pelos quais seu sistema afetará todas ou nenhuma de suas atualizações. Além disso, as atualizações condicionais só serão bem -sucedidas se o item permanecer o mesmo desde a última vez que você leu o item pela última vez.

Esta postagem do blog destaca tudo sobre atualizações condicionais do DynamoDB. Ele descreve como usar atualizações condicionais e fornece exemplos de atualizações condicionais no DynamoDB.

Como usar atualizações condicionais no DynamoDB

Para executar atualizações condicionais no DynamoDB, use a operação do UpdateItem e o parâmetro ConditionExpression. O parâmetro deve tomar a condição que deve ser satisfeita para exigir a aplicação bem -sucedida da atualização. Se o seu sistema não cumprir a condição por um motivo ou outro, a atualização falhará e retornará um erro.

Notavelmente, a operação de atualização também suporta expressões de atualização. Operações com expressões de atualização ajudam a especificar cada modificação que você deve fazer em um item.

Os exemplos de atualização condicional do DynamoDB são os seguintes. Todos os exemplos usam BOTO3, que é o SDK da AWS para Python.

Exemplo 1: Atualizando um item somente se um atributo específico tiver um valor específico.

Atualizações condicionais ajudam a atualizar um item somente se o atributo tiver um valor específico. Um exemplo python do mesmo é mostrado abaixo:

Importar BOTO3
# Crie um cliente do DynamoDB
Cliente = BOTO3.Client ('DynamoDB')
# Defina a chave primária do item que você deseja atualizar
chave =
'id': 'n': '1234'

# Defina os valores de expressão de atualização e atributo
update_expression = 'set #a =: val1, #b =: val2'
expressão_attribute_names =
'#a': 'attribute1',
'#b': 'attribute2'

expressão_attribute_values ​​=
': val1': 'n': '5678',
': val2': 's': 'abcd'

# Defina a expressão da condição
condicional_expression = '#a =: Old_val'
condicional_expression_attribute_values ​​=
': Old_val': 'n': '1234'

# Execute a atualização
resposta = cliente.update_item (
TableName = 'My-Table-Name',
Chave = chave,
Updatexpression = update_expression,
ExpressionAttributenames = Expression_attribute_Names,
ExpressionAttributeValues ​​= Expression_attribute_Values,
ConditionExpression = condition_expression,
ExpressionAttributeValues ​​= condition_expression_attribute_values
)

Este utilitário atualiza o item com chave primária id = 1234 no My-Table-Name mesa. Ele definirá os valores de atributo1 e atributo2 para 5678 e ABCD, respectivamente. No entanto, a atualização será aplicada apenas se o valor atual de atributo1 é 1234. Se o valor de atributo1 mudou desde que o item foi lido pela última vez, a atualização falhará e seu sistema retornará um erro.

Exemplo 2: Atualizando um item somente se o item tiver um determinado atributo

O código para uma atualização tão condicional é como mostrado:

Importar BOTO3
# Obtenha o cliente DynamoDB
Cliente = BOTO3.Client ('DynamoDB')
# Defina a chave do item e os valores do atributo
chave =
'id': 'n': '123'

update_expression = 'set a =: a, b =: b'
expressão_attribute_values ​​=
': a': 'n': '5',
': B': 'S': 'ABC'

# Defina a expressão da condição para verificar se o item tem o atributo 'C'
condicional_expression = 'attribute_exists (c)'
# Atualize o item
resposta = cliente.update_item (
TableName = 'My-Table-Name',
Chave = chave,
Updatexpression = update_expression,
ExpressionAttributeValues ​​= Expression_attribute_Values,
ConditionExpression = condition_expression
)

O exemplo acima demonstra como atualizar um item em uma tabela DynamoDB somente se o item tiver um atributo específico. Nesse caso, a expressão de condição verificará a existência do c atributo usando o attribute_exists função. Se o item não tiver o c atributo, a atualização falhará e retornará um erro.

Exemplo 3: Atualizando um item somente se um atributo específico tiver um valor superior a um valor específico.

Por fim, você pode definir seu comando para atualizar um item apenas se um atributo específico for maior que um valor específico. O utilitário python é como mostrado abaixo;

Importar BOTO3
# Obtenha o cliente DynamoDB
Cliente = BOTO3.Client ('DynamoDB')
# Defina a chave do item e os valores do atributo
chave =
'id': 'n': '1234'

update_expression = 'set a =: a, b =: b'
expressão_attribute_values ​​=
': a': 'n': '15',
': B': 'S': 'ABCD'

# Defina a expressão da condição para verificar se o atributo 'count' é maior que 15
condicional_expression = 'count>: count'
expressão_attribute_values ​​[': count'] = 'n': '15'
# Atualize o item
resposta = cliente.update_item (
TableName = 'My-Table-Name',
Chave = chave,
Updatexpression = update_expression,
ExpressionAttributeValues ​​= Expression_attribute_Values,
ConditionExpression = condition_expression
)

A ilustração mostra como atualizar um item em uma tabela de dynamoDB somente se um atributo específico tiver um valor maior que um valor específico. Nesse caso, a expressão da condição verifica se o contar atributo é maior que 15 usando o > operador. Se o contar atributo é no máximo 15, A atualização falhará e você receberá uma mensagem de erro.

Conclusão

O recurso de expressão condicional do DynamoDB é um método poderoso de especificar condições ao atualizar itens em uma tabela. É útil em muitos casos. Por exemplo, você pode usá -lo para garantir que um item seja atualizado apenas se ele não tiver alterado, pois foi lido ou que um item é atualizado apenas se um atributo específico tiver um valor específico.