Actualizaciones condicionales en Dynamodb

Actualizaciones condicionales en Dynamodb
Al igual que en otras bases de datos, la operación UpdateItem se encuentra entre las llamadas de API más comunes en Dynamodb. Además, puede usar la utilidad UpdateItem junto con las expresiones de condición en Dynamodb para permitir solo actualizaciones de elementos solo si el comando cumple con las condiciones de expulsión.

Por lo tanto, las actualizaciones condicionales en Dynamodb solo le permitirán actualizar los elementos en una tabla solo si ciertas condiciones coinciden. Esta característica es útil para actualizar los elementos anatómicamente, por lo que su sistema afectará a todos o ninguna de sus actualizaciones. Además, las actualizaciones condicionales solo tendrán éxito si el artículo se ha mantenido igual desde la última vez que lee el artículo.

Esta publicación de blog resalta todo sobre las actualizaciones condicionales de Dynamodb. Describe cómo usar actualizaciones condicionales y proporciona ejemplos de actualizaciones condicionales en DynamoDB.

Cómo usar actualizaciones condicionales en DynamoDB

Para realizar actualizaciones condicionales en DynamoDB, use la operación UpdateItem y el parámetro de condición. El parámetro debe tomar la condición que debe satisfacerse para requerir la aplicación exitosa de la actualización. Si su sistema no cumple con la condición por una razón u otra, la actualización fallará y devolverá un error.

En particular, la operación UpdateItem también admite expresiones de actualización. Las operaciones con expresiones actualizadas ayudan a especificar cada modificación que debe realizar en un elemento.

Los ejemplos de actualización condicional de DynamoDB son los siguientes. Todos los ejemplos usan Boto3, que es el AWS SDK para Python.

Ejemplo 1: Actualizar un elemento solo si un atributo específico tiene un valor particular.

Las actualizaciones condicionales ayudan a actualizar un elemento solo si el atributo tiene un valor particular. A continuación se muestra un ejemplo de Python del mismo:

importar boto3
# Crear un cliente Dynamodb
cliente = Boto3.Cliente ('Dynamodb')
# Defina la clave principal del elemento que desea actualizar
clave =
'id': 'n': '1234'

# Definir los valores de expresión y atributo de actualización
update_expression = 'set #a =: val1, #b =: val2'
Expression_attribute_names =
'#a': 'atributo1',
'#b': 'atributo2'

Expression_attribute_values ​​=
': val1': 'n': '5678',
': val2': 's': 'abcd'

# Defina la expresión de la condición
condición_expresión = '#a =: Old_val'
condición_expresión_attribute_values ​​=
': Old_val': 'n': '1234'

# Realizar la actualización
respuesta = cliente.update_item (
TableName = 'my-table-name',
Clave = clave,
UpdateExpression = update_expression,
ExpressionAttributeNames = Expression_Attribute_Names,
ExpressionAttributeValues ​​= Expression_Attribute_Values,
Condiciónxpresión = condición_expresión,
ExpressionAttributeValues ​​= condición_expresión_attribute_values
)

Esta utilidad actualiza el elemento con la clave principal ID = 1234 en el nombre de my-table mesa. Establecerá los valores de atributo1 y atributo2 a 5678 y a B C D, respectivamente. Sin embargo, la actualización solo se aplicará si el valor actual de atributo1 es 1234. Si el valor de atributo1 ha cambiado desde que se leyó por última vez el elemento, la actualización fallará y su sistema devolverá un error.

Ejemplo 2: Actualización de un elemento solo si el elemento tiene un cierto atributo

El código para dicha actualización condicional es como se muestra:

importar boto3
# Obtenga el cliente Dynamodb
cliente = Boto3.Cliente ('Dynamodb')
# Establecer la tecla de elemento y los valores de atributo
clave =
'id': 'n': '123'

update_expression = 'set a =: a, b =: b'
Expression_attribute_values ​​=
': a': 'n': '5',
': b': 's': 'ABC'

# Establezca la expresión de condición para verificar si el elemento tiene el atributo 'C'
condición_expression = 'attribute_exists (c)'
# Actualizar el elemento
respuesta = cliente.update_item (
TableName = 'my-table-name',
Clave = clave,
UpdateExpression = update_expression,
ExpressionAttributeValues ​​= Expression_Attribute_Values,
Condiciónxpresión = condición_expresión
)

El ejemplo anterior demuestra cómo actualizar un elemento en una tabla DynamodB solo si el elemento tiene un atributo específico. En este caso, la expresión de condición verificará la existencia del C atributo usando el attribute_exists función. Si el artículo no tiene el C atributo, la actualización fallará y devolverá un error.

Ejemplo 3: Actualización de un elemento solo si un atributo en particular tiene un valor que excede un valor específico.

Finalmente, puede configurar su comando para actualizar un elemento solo si un atributo en particular es mayor que un valor específico. La utilidad de Python es como se muestra a continuación;

importar boto3
# Obtenga el cliente Dynamodb
cliente = Boto3.Cliente ('Dynamodb')
# Establecer la tecla de elemento y los valores de atributo
clave =
'id': 'n': '1234'

update_expression = 'set a =: a, b =: b'
Expression_attribute_values ​​=
': a': 'n': '15',
': b': 's': 'abcd'

# Establezca la expresión de condición para verificar si el atributo 'recuento' es mayor que 15
condición_expression = 'count>: Count'
Expression_attribute_values ​​[': count'] = 'n': '15'
# Actualizar el elemento
respuesta = cliente.update_item (
TableName = 'my-table-name',
Clave = clave,
UpdateExpression = update_expression,
ExpressionAttributeValues ​​= Expression_Attribute_Values,
Condiciónxpresión = condición_expresión
)

La ilustración muestra cómo actualizar un elemento en una tabla DynamodB solo si un atributo específico tiene un valor mayor que un valor particular. En este caso, la expresión de condición verifica si el contar El atributo es mayor que 15 utilizando el > operador. Si el contar El atributo es como máximo 15, la actualización fallará y recibirá un mensaje de error.

Conclusión

La función de expresión condicional de Dynamodb es un método poderoso para especificar condiciones al actualizar los elementos en una tabla. Es útil en muchos casos. Por ejemplo, puede usarlo para asegurarse de que un elemento solo se actualice si no ha cambiado, ya que se lee o que un elemento solo se actualiza si un atributo particular tiene un valor específico.