Consulta sobre la tarea 1

Consulta sobre la tarea 1

de Gabriela Rodriguez Rivero -
Número de respuestas: 6

Buenas, con mi compañero tenemos una consulta respecto a la parte de calcular los costos del laboratorio. Las transformaciones como el unwind tienen costo? porque se podría argumentar que no acceden a los datos sino que simplemente transforman el objeto en un arreglo y por lo tanto no tendrían costo asociado, sin embargo deben acceder al propio arreglo que forma parte del documento y transformar todos sus campos. Nuestra pregunta es si el costo asociado al unwind es 0 o es 0,01 por la cantidad de campos que posea el objeto dentro del arreglo, o alguna otra forma de calcularlo. 

Otra duda que teníamos era en las consultas 3 y 4, donde al agrupar los documentos nos da un error de timeout, agregando un limit antes de realizar el group funciona sin errores, queriamos saber si esto es esperable o por el contrario existe algún problema asociado a la eficiencia de nuestras consultas. 

Saludos


En respuesta a Gabriela Rodriguez Rivero

Re: Consulta sobre la tarea 1

de Martin Giachino -
Yo me inclinaría a pensar que tiene un costo mínimo, similar a lo que sería un acceso a memoria al menos, por lo que sería razonable pensarlo como 0,01.

Lo del timeout lo charlaron en otro hilo y en algunos casos influye desde el lugar en donde ejecutan al consulta. También a mí un par de veces me llegaron notificaciones desde MongoAtlas de que habían muchas queries ejecutándose en simultáneo y quizás eso también influya en los timeouts.
En respuesta a Martin Giachino

Re: Consulta sobre la tarea 1

de Manuel Rodriguez Alvarez -
Martin, respecto a esta respuesta que das del unwind, entiendo que al tener el documento [0:{ 'saludo':'hola'} , 1:{"saludo":"chau"}] y aplicarle un unwind y pasar a tener { 'saludo':'hola'},{"saludo":"chau"} implica crear un nuevos objetos en memoria que contenga un puntero hacia el documento que anteriormente estaba siendo apuntado desde adentro del array. Estoy de acuerdo que eso se puede asumir que tiene costo minimo, pero el tema es que en principio en las consultas no sabemos de que tamaño es el array al que se le hace unwind (en algunas es claro que es 1 pero en otras no). En este caso como debemos hacer para calcular el costo de un unwind de un array que tiene un tamaño diferente en cada documento de la coleccion a la que le hacemos unwind?
En respuesta a Manuel Rodriguez Alvarez

Re: Consulta sobre la tarea 1

de Martin Giachino -
La pregunta está bien, y la respuesta es que hagan alguna estimación de eso aunque sabemos que puede no ser exacta. Por poner un ejemplo, si necesitaran hacer un unwind de la cantidad de pagos de una película, pueden hacer un promedio general de cuantos pagos hay por película y usar ese número para todo. Es claro que puede no ser exacto, pero para nuestros fines y "precisión" buscado está bien.

Martín
En respuesta a Martin Giachino

Re: Consulta sobre la tarea 1

de Eduardo David Gastelu Leivas -
¿entonces la idea es que acceder a cada elemento de arreglo tenga costo 0.01? y si tengo 'N' documentos con arreglos de tamaño 'promedioArreglo' elementos, ¿el costo del unwind sea N*promedioArreglo*0.01?
O cuando dice "Yo me inclinaría a pensar que tiene un costo mínimo, similar a lo que sería un acceso a memoria al menos, por lo que sería razonable pensarlo como 0,01." ¿se refiere a que el costo de acceder al arreglo entero es de 0.01 y por lo tanto el costo del unwind sea de N*0.01?
En respuesta a Eduardo David Gastelu Leivas

Re: Consulta sobre la tarea 1

de Martin Giachino -
Nuevamente, ante este tipo de dudas puedes tu mismo tomar una opción, documentarla y usarla.

si tengo una coleccion intermedia en el pipeline y que ya está en memoria de N objetos, donde cada objeto tiene un campo array de promedioArreglo valores, entonces diría que no está mal pensar que el unwind tenga costo N*promedioArreglo*0.01