Utilice el patrón de aproximación cuando tenga valores que cambien con frecuencia, pero los usuarios no necesiten conocerlos con precisión. En lugar de actualizar los valores cada vez que cambian los datos, el patrón de aproximación actualiza los datos con mayor granularidad, lo que resulta en menos actualizaciones y una menor carga de trabajo de 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 de aerolíneas
Las mediciones anteriores suelen ser útiles cuando se aproximan. La aplicación puede ahorrar tiempo y recursos actualizando los valores almacenados por cientos o miles, según la escala de los datos.
Pasos
En este ejemplo, una aplicación muestra datos 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.
Implementar el patrón de aproximación.
El valor real de la población cambia varias veces en un solo día. En lugar de actualizarlo 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 controlador.
Resultados
La lógica de aplicación anterior podría dar como resultado 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 de recopilar los valores actualizados depende del escenario. En este ejemplo, los valores de población actualizados pueden obtenerse 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 la población aumenta con el tiempo, lo que satisface sus necesidades de ver tendencias de alto nivel.