使用近似模式
当您有频繁变化的值,但用户不需要知道精确值时,请使用近似模式。无需每次数据更改时都更新值,近似模式根据更大的粒度更新数据,从而减少更新次数并降低应用程序的工作负载。
关于此任务
当值不需要精确报告时,近似模式非常有用。例如
城市人口
网站访问量
航空公司旅客
前面的测量值通常在近似时很有用。应用程序可以通过每次更新存储值数百或数千次来节省时间和资源,具体取决于数据的规模。
步骤
在此示例中,一个应用程序显示一个大约有40,000人口的城市的人口数据。应用程序用户主要关注整体趋势,并不需要知道确切的市人口。
1
2
实现近似模式
实际人口值在一天内变化多次。而不是每次变化都更新人口值,当人口变化100次时,使用应用程序逻辑插入新文档。
例如,您的应用程序逻辑可能如下所示
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 } }
注意
前面的示例仅用于说明,并未使用准确的语法。要了解应用程序的正确语法,请参考您相应的驱动器文档.
结果
前面的应用程序逻辑可能导致以下文档
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") }, ] )
注意
更新的值的收集方式取决于您的场景。在此示例中,更新的人口值可以从人口普查报告中收集。
通过以100为粒度更新人口,近似模式将更新次数减少到跟踪个人人口变化所需的更新次数的1%。
用户可以看到人口随着时间的推移而增加,这满足了他们查看高级趋势的需求。