응용 프로그램은 지속적으로 (약 1 초마다) 사용자의 위치를 수집하여 저장합니다.
이 데이터는 구조화되어 있습니다. 관계형 데이터베이스에서는 다음과 같이 저장됩니다.
| user | timestamp | latitude | longitude |
그러나 데이터가 너무 많습니다. 매일 사용자 당 60 × 60 × 24 = 86,400 개의 레코드가 있습니다. 사용자가 1000 명인 경우에도 매일 86,400,000 개의 레코드를 의미합니다.
그리고 그것은 매일 86,400,000 건의 기록이 아닙니다. 이러한 레코드가 처리되고 처리 된 버전도 저장되기 때문입니다. 따라서이 숫자에 약 2를 곱하십시오.
데이터 사용 계획
본질적으로, 더 쉬운 소비를 위해 더 세분화 된 버전의 위치 데이터를 만들 계획입니다. 그건:
- 수신 된 데이터 wrt 타임 스탬프를 정렬하십시오.
- 이 목록을 순서대로 반복하여 위도와 경도가 얼마나 변화했는지 확인하여 위치가 크게 변경되었는지 확인하십시오.
- 중요하지 않은 위치 변경은 출력에서 단일 항목으로 나타냅니다 (따라서 출력은 위치 데이터의보다 거친 버전입니다).
- 큰 변화를 위해 위도와 경도를 더 크게 변경하여 출력에서이 과정을 반복하십시오. 따라서 이전 출력에서 생성되는 출력은 훨씬 더 거칠게됩니다.
- 필요한만큼 전체 프로세스를 반복하십시오.
- 다양한 해상도를 집계하여 사용자에게 보냅니다. 또한 나중에 사용할 수 있도록 데이터의 모든 해상도를 저장하십시오.
이 데이터를 저장하기 위해 무엇을 사용해야합니까? 관계형 데이터베이스 또는 NoSQL 솔루션을 사용해야합니까? 이 응용 프로그램을 디자인 할 때 고려해야 할 다른 사항은 무엇입니까?