Puntos clave: El tutorial de DynamoDB Bulk Insert proporciona instrucciones para realizar inserciones y eliminaciones masivas usando la CLI de AWS, con ejemplos de formato JSON de datos de IMDB. Analiza los límites operativos y ofrece orientación sobre la creación de tablas y la carga de datos.
- Las operaciones masivas soportan hasta 25 solicitudes por archivo.
- Incluye ejemplos de formato JSON y detalles sobre tipos de atributos.
En este artículo, mostraremos cómo hacer inserciones masivas en DynamoDB. Si te nuevo en Amazon DynamoDB, Comienza con estos recursos:
Insertos y eliminaciones masivas
DynamoDB puede gestionar inserciones y eliminaciones masivas. Nosotros utilizamos la CLI porque es independiente del lenguaje. El archivo puede tener hasta 16 MB pero no puede tener más de 25 operaciones de solicitud en un solo archivo.
Las operaciones de solicitud pueden ser:
- PutRequest
- DeleteRequest
La solicitud masiva no gestiona las actualizaciones.
Datos de IMDB
Para ilustrar, hemos extraído 24 elementos de IMDB (Internet Movie Database) y los hemos puesto en formato JSON. te descargar esos datos desde aquí.
El formato para la operación masiva están:
Aquí están un ejemplo:
{ "table name: [
"request operation": {
"item: {
(put your item here in Attribute value format)
}
}
}]
}
Aquí están un ejemplo:
{
"title": [{
"PutRequest": {
"Item": {
"tconst": {
"S": "tt0276132"
},
"titleType": {
"S": "movie"
},
"primaryTitle": {
"S": "The Fetishist"
},
"originalTitle": {
"S": "The Fetishist"
},
"isAdult": {
"S": "0"
},
"startYear": {
"S": "2019"
},
"endYear": {
"S": "\\N"
},
"runtimeMinutes": {
"S": "\\N"
},
"genres": {
"S": "Animation"
}
}
}
}]
}
Si te son ejecutando DynamoDB localmente, Comienza así:
java -Djava.library.path=./DynamoDBLoc_lib -jar DynamoDBLocal.jar -sharedDb
Crea una tabla así:
aws dynamodb create-table \
--table-name title \
--attribute-definitions AttributeName=tconst,AttributeType=S \
--key-schema AttributeName=tconst,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
--endpoint-url http://localhost:8000
Luego carga los datos así, habiendo guardado los datos de IMDB en el archivo 100.basics.json.
Responde:
aws dynamodb batch-write-item \
--endpoint-url http://localhost:8000 \
--request-items file:////Users/walkerrowe/Documents/imdb/100.basics.json \
--return-consumed-capacity TOTAL \
--return-item-collection-metrics SIZE
Responde:
{
"UnprocessedItems": {},
"ConsumedCapacity": [
{
"CapacityUnits": 23.0,
"TableName": "title"
}
]
}
Te te indicó cuántos registros escribió. Tú puedes preguntar si funcionaba así:
aws dynamodb query \
--endpoint-url http://localhost:8000 \
--table-name title \
--key-condition-expression "tconst = :tconst" \
--expression-attribute-values '{ ":tconst":{"S":"tt0276132"}}'
Tipos de atributos y valor de atributo
Aquí mostramos algunos de los AttributeValues, es decir, tipos de atributos o datos soportados por DynamoDB. Estos son:
- S
- BOOL
- L
- M
- etcétera.
Nota: Incluso con valores numéricos te envuélvelos entre comillas.
| Tipo de atributo | Descripción |
|---|---|
| S | Cuerda Fíjate que una fecha está en el valor ISO-8601 así: "currentTime": {"S": "2020-07-24T09:25:49+0000"} |
| BOOL | Booleano. Utiliza verdadero o falso. |
| L |
Una lista de valores sin ningún ValorDeatributo, es decir, sin nombre de atributo: "otro": { "L": [{"S": "Paris"}, {"N": "13000000"}] } |
| M |
Mapa, que contiene valores de atributos. Esto es como un objeto JSON, excepto que tiene valores de atributo. Así que es como una lista de atributos nombrados. "mapa": { "M": {"Nombre": {"S": "Joe"}, "Edad": {"N": "35"}} } } |
Aquí están un ejemplo que muestra cómo utilizar esos tipos de atributos de DynamoDB.
{
"title": [{
"PutRequest": {
"Item": {
"tconst": {
"S": "tt9276132"
},
"titleType": {
"S": "movie"
},
"primaryTitle": {
"S": "Zorba"
},
"isAdult": {
"BOOL": true
},
"Years": {
"NS": ["2019","2020"]
},
"actors": {
"SS": ["Anthony Quinn", "Marcel Marciano", "David Niven", "Peter Sellers"]
},
"currentTime": {
"S": "2020-07-24T09:25:49+0000"
},
"other": {
"L": [{"S": "Paris"},
{"N": "13000000"}]
},
"map": {
"M": {"Name": {"S": "Joe"}, "Age": {"N": "35"}}
}
}
}
}]
}
Recursos adicionales
Para más información sobre este tema, explora el blog BMC Machine Learning & Big Data y estos recursos:
- Guía de AWS, con 15+ artículos y tutoriales sobre AWS
- Regiones y zonas de disponibilidad para AWS, Azure y GCP
- Bases de datos en AWS: Cómo encajan las bases de datos en la nube en un mundo multinube
- Introducción a la fiabilidad de bases de datos
Guía DynamoDB
Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.