Colecciones de elementos: cómo modelar relaciones de uno a varios en DynamoDB - Amazon DynamoDB

Colecciones de elementos: cómo modelar relaciones de uno a varios en DynamoDB

En DynamoDB, una colección de elementos es un grupo de elementos que comparten el mismo valor de clave de partición, lo que significa que los elementos están relacionados. Las colecciones de elementos son el mecanismo principal para modelar las relaciones de uno a varios en DynamoDB. Las colecciones de elementos solo pueden existir en tablas o índices configurados para utilizar una clave primaria compuesta.

nota

Las colecciones de elementos pueden existir en una tabla base o en un índice secundario. Para obtener más información específicamente sobre cómo interactúan las colecciones de elementos con los índices, consulte Colecciones de elementos en los índices secundarios locales.

Considere la siguiente tabla que muestra tres usuarios diferentes y sus inventarios en el juego:


   Tres colecciones de elementos diferentes con distintos atributos.

Para algunos elementos de cada colección, la clave de clasificación es una concatenación formada por información utilizada para agrupar datos, como inventory::armor, inventory::weapon o info. Cada colección de elementos puede tener una combinación diferente de estos atributos como clave de clasificación. El usuario account1234 tiene un elemento inventory::weapons, mientras que el usuario account1387 no lo tiene (porque aún no ha encontrado ninguno). El usuario account1138 solo utiliza dos elementos para su clave de clasificación (ya que aún no tiene inventario) mientras que los demás usuarios utilizan tres.

DynamoDB le permite recuperar de forma selectiva elementos de estas colecciones de elementos para hacer lo siguiente:

  • Recuperar todos los elementos de un usuario concreto

  • Recuperar solo un elemento de un usuario concreto

  • Recuperar todos los elementos de un tipo específico pertenecientes a un usuario concreto

Acelerar las consultas mediante la organización de los datos con colecciones de elementos

En este ejemplo, cada uno de los elementos de estas tres colecciones de elementos representa a un jugador y el modelo de datos que hemos elegido, basado en los patrones de acceso del juego y del jugador. ¿Qué datos necesita el juego? ¿Cuándo los necesita? ¿Con qué frecuencia los necesita? ¿Cuál es el costo de hacerlo de esta manera? Estas decisiones de modelado de datos se tomaron a partir de las respuestas a estas preguntas.

En este juego, se presenta al jugador una página diferente para su inventario para las armas y otra página para la armadura. Cuando el jugador abre su inventario, las armas se muestran primero porque deseamos que esa página se cargue muy rápida, mientras que las siguientes páginas del inventario pueden cargarse después. Como cada uno de estos tipos de elementos puede ser bastante grande a medida que el jugador adquiere más elementos en el juego, decidimos que cada página del inventario sería su propio elemento en la colección de elementos del jugador en la base de datos.

En la siguiente sección se describe con más detalle cómo puede interactuar con las colecciones de elementos a través de la operación Query.