Diferencias entre una base de datos relacional (SQL) y DynamoDB al escribir datos en una tabla
Las tablas de las bases de datos relacionales contienen filas de datos. Las filas constan de columnas. Las tablas de Amazon DynamoDB contienen elementos. Los elementos constan de atributos.
En esta sección se describe cómo escribir una fila (o un elemento) en una tabla.
Escritura de datos en una tabla con SQL
Una tabla de una base de datos relacional es una estructura de datos bidimensional formada por filas y columnas. Algunos sistemas de administración de bases de datos también ofrecen compatibilidad con datos semiestructurados, normalmente con los tipos de datos de JSON o XML nativos. Sin embargo, los detalles de implementación varían según el proveedor.
En SQL, se utilizaría la instrucción INSERT
para agregar una fila a una tabla.
INSERT INTO Music
(Artist, SongTitle, AlbumTitle,
Year, Price, Genre,
Tags)
VALUES(
'No One You Know', 'Call Me Today', 'Somewhat Famous',
2015, 2.14, 'Country',
'{"Composers": ["Smith", "Jones", "Davis"],"LengthInSeconds": 214}'
);
La clave principal de esta tabla consta de Artist y SongTitle. Debe especificar los valores de estas columnas.
En este ejemplo se utiliza la columna Tags para almacenar datos semiestructurados relativos a las canciones de la tabla Music. La columna Tags se define como el tipo TEXT, que permite almacenar hasta 65,535 caracteres en MySQL.
Escritura de datos en una tabla de DynamoDB
En Amazon DynamoDB, puede utilizar la API de DynamoDB o PartiQL (un lenguaje de consulta compatible con SQL) para agregar un elemento a una tabla.
- DynamoDB API
-
Con la API de DynamoDB, se utiliza la operación PutItem
para agregar un elemento a una tabla.
{
TableName: "Music",
Item: {
"Artist":"No One You Know",
"SongTitle":"Call Me Today",
"AlbumTitle":"Somewhat Famous",
"Year": 2015,
"Price": 2.14,
"Genre": "Country",
"Tags": {
"Composers": [
"Smith",
"Jones",
"Davis"
],
"LengthInSeconds": 214
}
}
}
La clave principal de esta tabla consta de Artist y SongTitle. Debe especificar los valores de estos atributos.
A continuación se indican algunos aspectos clave que es preciso tener en cuenta sobre este ejemplo de PutItem
:
-
DynamoDB proporciona compatibilidad nativa con documentos mediante JSON. Por ello, DynamoDB resulta idóneo para almacenar datos semiestructurados, como las etiquetas. Además, puede recuperar y manipular los datos contenidos en los documentos JSON.
-
La tabla Music no tiene atributos predefinidos aparte de la clave principal (Artist y SongTitle).
-
La mayoría de las bases de datos SQL están orientadas a transacciones. Cuando se emite una instrucción INSERT
, las modificaciones de los datos no son permanentes hasta que se emite una instrucción COMMIT
. Con Amazon DynamoDB, los efectos de una operación PutItem
son permanentes cuando DynamoDB responde con un código de estado HTTP 200 (OK
).
A continuación, se muestran algunos otros ejemplos de PutItem
.
{
TableName: "Music",
Item: {
"Artist": "No One You Know",
"SongTitle": "My Dog Spot",
"AlbumTitle":"Hey Now",
"Price": 1.98,
"Genre": "Country",
"CriticRating": 8.4
}
}
{
TableName: "Music",
Item: {
"Artist": "No One You Know",
"SongTitle": "Somewhere Down The Road",
"AlbumTitle":"Somewhat Famous",
"Genre": "Country",
"CriticRating": 8.4,
"Year": 1984
}
}
{
TableName: "Music",
Item: {
"Artist": "The Acme Band",
"SongTitle": "Still In Love",
"AlbumTitle":"The Buck Starts Here",
"Price": 2.47,
"Genre": "Rock",
"PromotionInfo": {
"RadioStationsPlaying":[
"KHCR", "KBQX", "WTNR", "WJJH"
],
"TourDates": {
"Seattle": "20150625",
"Cleveland": "20150630"
},
"Rotation": "Heavy"
}
}
}
{
TableName: "Music",
Item: {
"Artist": "The Acme Band",
"SongTitle": "Look Out, World",
"AlbumTitle":"The Buck Starts Here",
"Price": 0.99,
"Genre": "Rock"
}
}
Además de PutItem
, DynamoDB admite la operación BatchWriteItem
para escribir varios elementos a la vez.
- PartiQL for DynamoDB
-
Con PartiQL, se utiliza la operación ExecuteStatement
para agregar un elemento a una tabla, mediante la instrucción Insert
de PartiQL.
INSERT into Music value {
'Artist': 'No One You Know',
'SongTitle': 'Call Me Today',
'AlbumTitle': 'Somewhat Famous',
'Year' : '2015',
'Genre' : 'Acme'
}
La clave principal de esta tabla consta de Artist y SongTitle. Debe especificar los valores de estos atributos.