Inserto masivo de DynamoDB: Un tutorial sencillo

Inserto masivo de DynamoDB: Un tutorial sencillo

  • Orquestación
6 min de lectura Actualizado Jul 30, 2020

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:

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de Orquestación

¿Te interesa saber más de BMC?

El Brief están nuestro correo mensual sobre el mainframe y la orquestación empresarial: investigación, historias de clientes, noticias de productos, eventos.

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Tú te has suscrito a The Brief

El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.