근사화 패턴 사용
자주 변경되는 값이 있지만 사용자가 정확한 값을 알 필요가 없는 경우 근사화 패턴 을 사용합니다. 근사화 패턴 은 데이터가 변경될 때마다 값을 업데이트하는 대신 더 큰 세분성을 기반으로 데이터를 업데이트하므로 업데이트 횟수가 줄어들고 애플리케이션 워크로드 가 줄어듭니다.
이 작업에 대하여
근사치 패턴 은 값을 정확히 보고할 필요가 없는 경우에 유용합니다. 예를 예시 다음과 같습니다.
도시 인구
웹사이트 방문
항공사 이용객
앞의 측정값은 일반적으로 근사치를 구할 때 유용합니다. 이 애플리케이션 은 데이터의 확장하다 에 따라 저장된 값을 수백 또는 수천 단위로 업데이트하여 시간과 리소스를 절약할 수 있습니다.
단계
이 예시 에서 애플리케이션 은 인구가 대략 40 000 명인 도시의 인구 데이터를 표시합니다. 애플리케이션 사용자는 주로 전반적인 추세를 찾고 있으며 정확한 도시 인구를 알 필요는 없습니다.
근사화 패턴 구현
실제 인구 값은 하루에도 여러 번 변경됩니다. 변경될 때마다 인구 값을 업데이트하는 대신 애플리케이션 로직을 사용하여 인구가 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%로 업데이트 횟수를 줄입니다.
사용자는 시간이 지남에 따라 인구가 증가하는 것을 볼 수 있으며, 이는 높은 수준의 추세를 보고자 하는 요구 사항을 충족합니다.