Elección PK y SK en DynamoDB

mealesbia:

Tengo las siguientes dos artículos que he necesidad de almacenar en DynamoDB

  • artistas
  • canciones

Los artistas tienen un ID (exclusivo para los artistas), nombre y sexo. Las canciones tienen un ID (único para las canciones), título, género, artista y calificación.

¿Cómo debo modelar esto en DynamoDB ?.

Estaba pensando en esto: ID como clave principal y que tiene una clave de clasificación que contiene artista o canción por lo que se distinguen. ¿Es una buena elección? En los ejemplos que encuentro Veo una mayor variedad en la clave de ordenación.

¿Qué pasa con el artista en el campo de artículos de canciones? Debo señalar que el ID de la artista?

Actualización: Tengo muchos patrones de acceso común. Es probable que pueda resolverlo mediante la creación de algunos índices, pero todavía tengo que elegir para un buen PK / SK:

get songs based on title
get songs based on rating
get songs based on genre
get songs based on artist

get artist based on rating
get artist based on gender
get artist based on name

Gracias

cascader:

Una cosa que descubrí (por las malas) sobre NoSQL modelado (DynamoDB) es que lo que necesita saber todos sus patrones de acceso antes de modelar su mesa. Y RDBMS, es bastante común para modelar y optimizar los primeros índices más tarde como el cambio patrones de acceso. Esto no es sencillo en el modelado NoSQL (de lo contrario no habría migraciones masivas de RDBMS a NoSQL).

Habiendo dicho esto, ahora voy a sugerir un modelo simplista y voy a actualizar mi respuesta a la pregunta que se actualiza con los patrones de acceso (es decir, "tengo que conseguir todas las canciones de un artista").

Artista:

PK: Artist-<Artist ID>, es decir, Artist-1234SK: <Name>Atributos: Género etc.

Canción:

PK: Song-<Song ID>, es decir, Song-5678SK: <Genre>Atributos: género, artista de identificación, Rating

Este enfoque sólo le permitirá obtener sus entidades mediante el uso de su identificación.

Si bien es común en NoSQL para de-normalizar los datos (es decir, almacenar los datos de artista en la canción) para fácil / acceso más eficiente, me gustaría ir con almacenar el ID de artista, ya que permite actualizaciones más fácil y mejor consistencia.

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=406302&siteId=1
Recomendado
Clasificación