Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

148
Visualizações
Buena estructura de datos para almacenar la colección de elementos para la consulta más eficiente DynamoDB

Recientemente me encontré con un problema en el que tenía que almacenar una colección de datos dentro de un atributo. Hay una tabla de restaurantDB. La tabla tiene un atributo (no obligatorio) llamado "grupos" que gestiona los grupos creados por el restaurante. Estos grupos tienen varios permisos asociados a ellos. Una forma natural de pensar es que el atributo de grupos puede ser del tipo lista que almacena un mapa (pares clave-valor) de los datos como nombre_grupo, id_grupo y permiso (que es una lista de todos los permisos)

 table:{ //other fields id: groups: L: M: {group_name:S,group_id:S,permission:L :S} }

p.ej

 "groups": [{ "name": "OWNER", "permission": ["READ", "WRITE"] }, { "name": "MANAGER", "permission": ["READ"], } ],

Esto funciona bien para la creación y adición de un número arbitrario de usuarios mediante la actualización de dynamoDB aws-sdk con update UpdateExpression: 'SET #groups:=list_append(#groups,:newgroup)'

sin embargo, si tengo que hacer una solicitud de parche para modificar un permiso para un grupo, digamos, MANAGER , ¿Cómo puedo recuperar el objeto Mapa dentro de la lista con la clave group_name : "MANAGER" sin obtener toda la matriz de Grupos?

No quiero parchearlo obteniendo la lista completa porque primero tendré que query para obtener el atributo de grupos, luego tendré que recorrer toda la matriz para encontrar group_name:"MANAGER" . Una vez que lo consiga, modificaré la matriz y luego volveré a colocar la lista completa con una update .

Se garantiza que los nombres de los grupos sean únicos (sin embargo, el cliente también quiere un group_id único), así que pensé en una estructura de datos como

 table:{ //other fields id: groups: M:{S:L} }

p.ej

 "groups":{ "OWNER":["READ","WRITE"], "MANAGER":["READ"] }

Aunque ahora no puedo ingresar una cantidad arbitraria de datos para crear un nuevo grupo (como en la solicitud POST), pero puedo hacerlo uno a la vez. También la solicitud PATCH ahora funciona bien como

 UpdateExpression: "set #groups.#groupName = :newPermission", ExpressionAttributeNames: { "#groups": "groups", "#groupName": `${groupName}`, //groupName taken from request Body }, ExpressionAttributeValues: { ":newPermission": permission, //permission taken from request body },

Quería saber si había una mejor manera de recuperar tipos de lista. La documentación syas podemos recuperar elementos de la lista con índices, sin embargo, no conozco el índice de antemano.

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda