Creación y consulta de canciones de los Beatles:


Creación y consulta de canciones de los Beatles:


Cuando usas Índices Secundarios Locales (LSI) en Amazon DynamoDB, puedes hacer consultas más flexibles que no están limitadas únicamente a las claves primarias. Aquí te explico cómo hacer consultas usando un LSI, y te doy un ejemplo concreto basado en la tabla Music que definiste.
Un LSI permite consultar datos usando la misma clave de partición (HASH) que la tabla, pero con una clave de ordenamiento secundaria distinta.
Music con LSI AlbumTitleIndexTabla: Music Clave primaria: Artist (HASH) + SongTitle (RANGE) LSI: AlbumTitleIndex - HASH: Artist - RANGE: AlbumTitle - Proyección: INCLUDE (Genre, Year)
AlbumTitleIndexObtener todas las canciones del artista "The Beatles", ordenadas por título del álbum (AlbumTitle), y mostrar el género y el año.
aws dynamodb query \ --table-name Music \ --index-name AlbumTitleIndex \ --key-condition-expression "Artist = :artist" \ --expression-attribute-values '{":artist":{"S":"The Beatles"}}' \ --projection-expression "AlbumTitle, Genre, Year"
--index-name indica que estás consultando usando un índice (obligatorio).--key-condition-expression debe usar solo los atributos definidos como claves en ese índice.Genre y Year.Hola Chicos, aqui dejo un JSOn con mas canciones de >Rock Claisco similar a metalica para que tengan mas datos con que jugar en su tabla :
{
"Music": [
{
"PutRequest": {
"Item": {
"Artist": {
"S": "Green Day"
},
"SongTitle": {
"S": "Basket Case"
},
"AlbumTitle": {
"S": "Dookie"
},
"Genre": {
"S": "Punk Rock"
},
"Year": {
"S": "1994"
}
}
}
},
{
"PutRequest": {
"Item": {
"Artist": {
"S": "Green Day"
},
"SongTitle": {
"S": "When I Come Around"
},
"AlbumTitle": {
"S": "Dookie"
},
"Genre": {
"S": "Punk Rock"
},
"Year": {
"S": "1994"
}
}
}
},
Es importante en la consulta incluir el valor de la clave de partición para que se funcione la consulta
Para evitar el uso de Scan sobre toda la tabla, que es más costosa y de menor rendimiento se crea el indice local. Este aparece en la sección de consultas, y es de mejor rendimiento y menor costo, por lo que resulta ser una muy buena opción.
En el minuto 4:50 mencionas "es la misma consulta que realizamos en el SCAN", y eso no es correcto porque en el SCAN buscamos las canciones cuyo álbum comience con la letra M, mientras que con el Query que hiciste, estás filtrando las canciones cuyo álbum cominece con la letra M y sea del artista Metallica.
No es la misma consulta.
Para crear un nuevo item desde la terminal lo hice de la siguiente manera
aws dynamodb put-item --table-name Music --item '{"Artist":{"S":"Beatles"},"SongTitle":{"S":"Yellow Submarine"},"AlbumTitle":{"S":"Yellow submarine"}}'
puedes alternar entre comillas simples y dobles para escribir el json
✅
🤟🏼📻😎

{ "PutRequest": {
"Item": {
"Artist": {
"S": "Guns N' Roses"
},
"SongTitle": {
"S": "Sweet Child O' Mine"
},
"AlbumTitle": {
"S": "Appetite for Destruction"
},
"Genre": {
"S": "Hard Rock"
},
"Year": {
"S": "1987"
}
}
}
},
{
"PutRequest": {
"Item": {
"Artist": {
"S": "Guns N' Roses"
},
"SongTitle": {
"S": "Welcome to the Jungle"
},
"AlbumTitle": {
"S": "Appetite for Destruction"
},
"Genre": {
"S": "Hard Rock"
},
"Year": {
"S": "1987"
}
}
}
},
{
"PutRequest": {
"Item": {
"Artist": {
"S": "Guns N' Roses"
},
"SongTitle": {
"S": "November Rain"
},
"AlbumTitle": {
"S": "Use Your Illusion I"
},
"Genre": {
"S": "Hard Rock"
},
"Year": {
"S": "1991"
}
}
}
}
]
}
\n Cargen eso a su tabla desde la aws CLI y hagan mejroes ocnsultas en el LSI :
aws dynamodb query --table-name 'Music' --key-condition-expression 'Artist = :artist_name' --expression-attribute-values '{":artist_name":{"S":"Green Day"}}'