Tablas en DynamoDB: Creación y carga de ejemplos

¡Muy buenas! en esta oportunidad vamos a utilizar la Consola de administración de AWS para la creación de tablas en DynamoDB. En el paso siguiente, vamos a cargar datos mediante la AWS Command Line Interface (AWS CLI).

 

Estas tablas y sus datos se usan como ejemplos en la Guía de desarrolladores.

Si tu eres desarrollador de aplicaciones puedes leer también la Guía de introducción a DynamoDB, en la que usarás la versión descargable de DynamoDB.

De esta manera aprenderás a utilizar la API de bajo nivel de DynamoDB de manera gratuita, sin necesidad de abonar costos de desempeño, transferencia de datos o almacenamiento. Si quieres más información te invitamos a leer Introducción a DynamoDB.

 

Paso 1: Crear ejemplos de tablas en DynamoDB

Aquí vamos a utilizar la Consola de administración AWS para generar tablas en DynamoDB en dos casos de uso bastante simples.

Caso de uso 1: Catálogo de productos

Supongamos que deseamos guardar información de productos en DynamoDB. Pero sabemos que cada producto tiene sus propios atributos bien diferenciados, por lo tanto deberemos almacenar distinta información de cada uno de estos productos.

Podemos generar una tabla llamada ProductCatalog en la que cada uno de los elementos se identifique de manera exclusiva mediante un atributo numérico que sea único: Id.

Nombre de la tabla Clave principal
ProductCatalog Clave de partición: Id (Number)

 

Caso de uso 2: Aplicación de foros

Imaginemos que deseamos desarrollar una aplicación para foros de debate o paneles de mensajes. Un ejemplo de una aplicación de este tipo son los Discussion Forums de Amazon Web Services.

Los clientes tienen la posibilidad de interactuar con la comunidad de desarrolladores, responder a las publicaciones de otros clientes o bien plantear preguntas.

Cada uno de los servicios de AWS posee un foro específico. Un usuario cualquiera puede iniciar una nueva conversación para debatir publicando un mensaje en alguno de los foros. También cada conversación podría recibir cualquier número de respuestas.

Podemos hacer el modelado de esta aplicación generando tres tablas en DynamoDB: ThreadReply y Forum.

Nombre de la tabla Clave principal
Forum Clave de partición: Name (String)
Thread Clave de partición: ForumName (String)

Clave de ordenación: Subject (String)

Responder

Clave de partición: Id (String)

Clave de ordenación: ReplyDateTime (String)

 

La tabla Reply tiene un índice secundario global llamado PostedBy-Message-Index, el mismo posibilitará las consultas de dos atributos sin clave de la tabla Reply.

Nombre índice Clave principal  (PK)
PostedBy-Message-Index Clave partición: PostedBy (String)

Clave ordenación: Message (String)

 

Creemos la tabla ProductCatalog

  1. Abramos la consola de DynamoDB que se encuentra en: https://console.aws.amazon.com/dynamodb/.
  2. Elijamos la opción Create Table.
  3. Busquemos en pantalla Create DynamoDB table, realicemos lo siguiente:
    1. Veamos el campo Table name, escribamos ProductCatalog.
    2. En Primary key, el campo Partition key, escriba Id. Definamos el tipo de datos como Number.
  4. Cuando estemos conformes con los ajustes realizados, elijamos Create.

Cree la tabla Forum

  1. Abramos la consola de DynamoDB en https://console.aws.amazon.com/dynamodb/.
  2. Seleccionemos Create Table.
  3. En pantalla Create DynamoDB table, hagamos lo siguiente:
    1. Sleccionemos el campo Table name, escribamos Forum.
    2. En Primary key, en el campo Partition key, escribamos Name. Establezcamos el tipo de datos en String.
  4. Cuando estemos seguros de los ajustes realizados, elijamos Create.

Cree la tabla Thread

  1. Abramos la consola de DynamoDB en https://console.aws.amazon.com/dynamodb/.
  2. Seleccionemos Create Table.
    • Posicionemonos pantalla Create DynamoDB table, hagamos lo siguiente:
      • En el campo Table name, escribamos Thread.
  3. Una vez parados en Primary key, haga lo siguiente:
    • En el campo Partition key, escribamos ForumName. Definamos el tipo de datos en String.
    • Seleccionemos Add sort key.
    • En el campo Sort key, escriba Subject. Establezca el tipo de datos en String.
  4. Si estamos seguros de los ajustes realizados, elijamos la opción Create.

Cree la tabla Reply

  1. Abramos la consola de DynamoDB en https://console.aws.amazon.com/dynamodb/.
  2. Seleccionemos Create Table.
  3. La pantalla Create DynamoDB table, hagamos lo siguiente:
    • Ubicados en el campo Table name, escribamos Reply.
    • En Primary key, hagamos lo siguiente:
      • En el campo Partition key, escribamos Id. Establezcamos el tipo de datos en String.
      • Elijamos Add sort key.
      • En el campo Sort key, escribamos ReplyDateTime. Definamos el tipo de datos en String.
    • Viendo y ubicandonos en Table settings, desactivemos Use default settings.
    • Una vez en la sección Secondary indexes, elijamos Add index.
    • Estando en la ventana Add index, hagamos lo siguiente:
      1. En Primary key, realicemos lo siguiente:
        • En el campo Partition key, escribamos PostedBy. Establezcamos el tipo de datos en String.
        • Seleccionemos Add sort key.
        • En el campo Sort key, escribamos Message. Establezcamos el tipo de datos en String.
    • En el campo Index name, escribamos PostedBy-Message-Index.
    • Establezcamos Projected attributes en All.
    • Elijamos Add index.
  4. Cuando estemos seguros de nuestros ajustes elijamos Create.

 

Paso 2: Cargar los datos en las tablas en DynamoDB

Lo que vamos a hacer en este paso es cargar ejemplos de datos en las tablas que ya hemos generado. Podríamos especificar los datos de manera manual en la consola de DynamoDB, pero para ahorrar tiempo vamos a utilizar la AWS Command Line Interface.

Si aún no tienes configurado AWS CLI, te recomiendamos ver Uso de la CLI para obtener instrucciones.

 

Vamos a descargar un archivo comprimido .zip que tiene archivos JSON con algunos ejemplos de datos para cada una de las tablas. Para cada archivo, vamos a utilizar AWS CLI para la carga de los datos en DynamoDB. Cada vez que una carga de datos se realice correctamente, se generará el siguiente resultado:

{
“UnprocessedItems”: {}
}

Descarguemos el archivo comprimido con los ejemplos de datos

  1. Descarguemos el ejemplo de archivo comprimido de datos (llamado sampledata.zip) del siguiente enlace:
    1. sampledata.zip
  2. Extraigamos los archivos de datos .json del archivo comprimido.
  3. Copiemos los archivos .json en el directorio actual.

Ahora carguemos los ejemplos de datos en las tablas de DynamoDB

Para cargar datos en la tabla:

  1. ProductCatalog, escriba el comando:
    • aws dynamodb batch-write-item –request-items file://ProductCatalog.json
  2. Forum, escriba el siguiente comando:
    • aws dynamodb batch-write-item –request-items file://Forum.json
  3. Thread, escriba:
    • aws dynamodb batch-write-item –request-items file://Thread.json
  4. Reply, escriba lo siguiente:
    • aws dynamodb batch-write-item –request-items file://Reply.json

Compruebe la carga de datos

Podemos usar la Consola de administración de AWS para asegurarnos de que los datos se han cargado en las tablas.

Para comprobar los datos desde la Consola de administración de AWS

  1. Abramos la consola de DynamoDB en https://console.aws.amazon.com/dynamodb/.
  2. En el panel de navegación, elijamos Tables.
  3. En la lista de tablas en DynamoDB, seleccionemos ProductCatalog.
  4. Elijamos la pestaña Items para visualizar los datos que hemos cargado en la tabla.
  5. Para visualizar un elemento de la tabla, elijamos su Id. Si lo deseamos, también podemos editar el elemento.
  6. Para volver a la lista de tablas, seleccionemos Cancel.

Repitamos este procedimiento para cada una de las restantes tablas que hemos creado:

  • Forum
  • Thread
  • Responder

 

Paso 3: Consultar los datos

Vamos a utlizar la consola de DynamoDB para probar consultas sencillas en las tablas en DynamoDB que hemos generado.

  1. Abramos la consola de DynamoDB en https://console.aws.amazon.com/dynamodb/.
  2. En el panel de navegación, elijamos Tables.
  3. En la lista de tablas en DynamoDB, seleccionemos Reply.
  4. Elijamos la pestaña Items para ver los datos que hemos cargado en la tabla.
  5. Elijamos el enlace de filtrado de datos, ubicado justo debajo del botón Create item.

  • Al hacer esto abrirá en la consola un panel de filtrado de datos.

 

  1. En el panel de filtrado de datos, relicemos lo siguiente:
    • Modifiquemos la operación de Scan a Query.
    • En Partition key, especifiquemos el valor Amazon DynamoDB#DynamoDB Thread 1.
    • Elijamos la opción Inicio. Solo se devolverán los elementos de la tabla Reply que concuerden con los criterios de la consulta.
  2. La tabla Reply tiene un índice secundario global realizado en los atributos PostedBy y Message. Podemos utilizar el panel de filtrado de datos para consultar el índice. Hagamos lo siguiente:
    • Cambiemos el código de la consulta de:

[Table] Reply: Id, ReplyDateTime

a:

[Index] PostedBy-Message-Index: PostedBy, Message

  • En Partition key, especifiquemos el valor User A.
  • Seleccionemos Inicio. Se devolverán los elementos del índice PostedBy-Message-Index que correspondan con los criterios de la consulta.

Luego de esto dediquemos un tiempo a explorar las demás tablas en la consola de DynamoDB:

  • ProductCatalog
  • Forum
  • Thread

 

Paso 4: (Opcional) Eliminar

En la presente Guía para desarrolladores de Amazon DynamoDB mencionamos ejemplos de tablas en varias ocasiones para ayudar a visualizar las operaciones con tablas en DynamoDB y elementos llevadas a cabo mediante la API de bajo nivel de DynamoDB y los diversos SDK de AWS.

Estas tablas serán útiles para realizar consultas si nos interesa leer el resto de esta Guía para desarrolladores.

No obstante, si no deseamos conservar las tablas, debemos eliminarlas para evitar que se cobre por recursos que no necesitamos.

Eliminar los ejemplos de tablas en DynamoDB

  1. Abramos la consola de DynamoDB en https://console.aws.amazon.com/dynamodb/.
  2. En el panel de navegación, elijamos Tables.
  3. En la lista de tablas, seleccionemos ProductCatalog.
  4. Elijamos Delete Table. Se nos solicitará que confirmemos la selección.

Repitamos lo anterior para cada una de las tablas restantes que hemos creado:

  • Forum
  • Thread
  • Responder

 

Resumen

En este ejercicio que realizamos, hemos usado la consola de DynamoDB afín de crear diversas tablas en DynamoDB.

A continuación, utilizamos AWS CLI para la carga de datos en las tablas e hicimos operaciones básicas con los datos desde la consola de DynamoDB.

La consola de DynamoDB y AWS CLI son útiles para empezar a utilizar este servicio con rapidez. Sin embargo, es MUY probable que quiera conocer mejor el funcionamiento de DynamoDB y de que manera escribir programas de aplicación con DynamoDB. En el resto de la Guía para desarrolladores se plantean estos temas.

Dejá un comentario