Diferencias entre una base de datos relacional (SQL) y DynamoDB al modificar datos de una tabla - Amazon DynamoDB

Diferencias entre una base de datos relacional (SQL) y DynamoDB al modificar datos de una tabla

El lenguaje SQL proporciona la instrucción UPDATE para modificar datos. Amazon DynamoDB utiliza la operación UpdateItem para llevar a cabo tareas semejantes.

Modificación de los datos de una tabla con SQL

En SQL, se utilizaría la instrucción UPDATE para modificar una o varias filas. La cláusula SET especifica los nuevos valores de una o varias columnas y la cláusula WHERE determina qué filas se modifican. A continuación se muestra un ejemplo.

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

Si no hay ninguna fila que coincida con la cláusula WHERE, la instrucción UPDATE no surte efecto.

Modificación de los datos de una tabla en DynamoDB

En DynamoDB, puede utilizar la API clásica o PartiQL (un lenguaje de consulta compatible con SQL) para modificar un solo elemento. Si desea modificar varios elementos, debe utilizar varias operaciones.

DynamoDB API

Con la API de DynamoDB, se utiliza la operación UpdateItem para modificar un solo elemento.

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

Debe especificar los atributos Key del elemento que va a modificar y una expresión UpdateExpression para especificar los valores de los atributos. UpdateItem se comporta como una operación “upsert”. Si el elemento está presente en tabla, se actualiza y, si no está presente, se agrega (inserta).

UpdateItem admite las escrituras condicionales, en las que la operación únicamente se lleva a cabo correctamente si una expresión ConditionExpression determinada se evalúa en true. Por ejemplo, la operación UpdateItem siguiente no lleva a cabo la actualización a no ser que el precio de la canción sea mayor o igual que 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 también admite los contadores atómicos, que son atributos del tipo Number que se pueden incrementar o reducir. Los contadores atómicos se parecen en muchos aspectos a los generadores de secuencia, las columnas de identidad o los campos de incremento automático de las bases de datos SQL.

A continuación se muestra un ejemplo de operación UpdateItem utilizada para inicializar un nuevo atributo (Plays) que permite realizar el seguimiento del número de veces que se ha reproducido una canción.

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

El parámetro ReturnValues se establece en UPDATED_NEW, que devuelve los nuevos valores de todos los atributos que se han actualizado. En este caso, devuelve 0 (cero).

Cada vez que alguien reproduce esta canción, podemos usar la operación UpdateItem para incrementar Plays en una unidad.

{ 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

Con PartiQL, se utiliza la operación ExecuteStatement para modificar un elemento de una tabla, mediante la instrucción Update de PartiQL.

La clave principal de esta tabla consta de Artist y SongTitle. Debe especificar los valores de estos atributos.

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

También puede modificar varios campos a la vez, como en el ejemplo siguiente.

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

Update también admite los contadores atómicos, que son atributos del tipo Number que se pueden incrementar o reducir. Los contadores atómicos se parecen en muchos aspectos a los generadores de secuencia, las columnas de identidad o los campos de incremento automático de las bases de datos SQL.

A continuación, se muestra un ejemplo de instrucción Update utilizada para inicializar un nuevo atributo (Plays [Reproducciones]) que permite hacer el seguimiento del número de veces que se ha reproducido una canción.

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

Cada vez que alguien reproduce esta canción, podemos usar la instrucción Update para aumentar Plays (Reproducciones) en una unidad.

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

Para obtener ejemplos de código mediante Update y ExecuteStatement, consulte Instrucciones de actualización de PartiQL para DynamoDB.