Utiliza el patrón de aproximación cuando tienes valores que cambian con frecuencia, pero los usuarios no necesitan conocer valores precisos. En lugar de actualizar valores cada vez que los datos cambian, el patrón de aproximación actualiza datos según una granularidad mayor, lo que resulta en menos actualizaciones y una menor carga de trabajo en la aplicación.
Acerca de esta tarea
El patrón de aproximación es útil cuando no es necesario informar los valores con exactitud. Por ejemplo:
Población de la ciudad
Visitas al sitio web
Viajeros en avión
Las mediciones anteriores suelen ser útiles cuando se han realizado aproximaciones. La aplicación puede ahorrar tiempo y recursos actualizando los valores almacenados por cientos o miles, dependiendo de la escala de los datos.
Pasos
En este ejemplo, una aplicación muestra el dato de población de una ciudad de aproximadamente 40,000 habitantes. Los usuarios de la aplicación buscan principalmente tendencias generales y no necesitan conocer la población exacta de la ciudad.
Implementa el patrón de aproximación.
El valor real de la población cambia muchas veces en un solo día. En lugar de actualizar el valor de la población con cada cambio, utilice la lógica de la aplicación para insertar un nuevo documento cada vez que la población cambie en 100.
Por ejemplo, la lógica de su aplicación podría parecerse a la siguiente:
let population = 40000 function updateStoredPopulation(curr_population, new_population) { let population_change = Math.abs(curr_population - new_population) if (population_change >= 100) { db.population.insertOne( { city: "New Perth", population: new_population, date: Date() } ) population = new_population } }
Nota
El ejemplo anterior es solo ilustrativo y no utiliza una sintaxis precisa. Para conocer la sintaxis correcta para su aplicación, consulte su correspondiente documentación del driver.
Resultados
La lógica de la aplicación anterior puede resultar en estos documentos:
db.population.insertMany( [ { city: "New Perth", population: 40100, date: ISODate("2024-09-20") }, { city: "New Perth", population: 40200, date: ISODate("2024-10-01") }, { city: "New Perth", population: 40300, date: ISODate("2024-10-09") }, ] )
Nota
La forma en que se recopilan los valores actualizados depende de tu escenario. En este ejemplo, los valores de población actualizados se pueden obtener de los informes del censo.
Al actualizar la población con una granularidad de 100, el patrón de aproximación reduce la cantidad de actualizaciones al 1% de las actualizaciones que serían necesarias para rastrear los cambios individuales de la población.
Los usuarios pueden ver cómo aumenta la población con el tiempo, lo que satisface su necesidad de ver tendencias generales.