es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cubo de Tamaño Fijo: Array Anidado de JSON

Tengo una secuencia de eventos provenientes de un usuario en particular. Estoy utilizando Cosmos DB para almacenar mi perfil de usuario. Tomemos el siguiente ejemplo de objeto JSON. Aquí, sólo quiero almacenar un conjunto limitado de eventos, digamos solo 2. Tan pronto como llegue el tercer evento, quiero eliminar el más antiguo y agregar ese tercer evento, sin exceder el tamaño de mi contenedor. Una forma sencilla es que, para cada actualización, obtengo el registro de ese usuario, lo modifico y actualizo. Me preguntaba si hay alguna otra forma eficiente de lograr lo mismo.

{
   "id":"4717cd3c-78d9-4a0e-bf5d-4645c97bd55c",
   "email":"abc@acme.org",
   "events":[
      {
         "event":"USER_INSTALL",
         "time":1641232180,
         "data":{
            "app":"com.abc"
         }
      },
      {
         "time":1641232181,
         "event":"USER_POST_INSTALL",
         "data":{
            "app":"com.xyz"
         }
      }
   ]
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una forma eficiente de lograr esto podría ser utilizando los Stored Procedures de Azure Cosmos DB. El Stored Procedure puede aceptar el nuevo evento a agregar y la ID del perfil de usuario. Primero puede verificar si ya se ha alcanzado el límite máximo de eventos. Si no es así, simplemente puede agregar el nuevo evento al arreglo de eventos en el documento del perfil de usuario. Si se alcanza el límite, puede eliminar el evento más antiguo del arreglo y agregar el nuevo evento al final. De esta manera, no necesitamos extraer todo el documento cada vez, solo actualizamos el arreglo de eventos. Este enfoque puede mejorar el rendimiento y reducir costos al minimizar el número de operaciones realizadas en la base de datos.

Comments are closed.