Приложение будет непрерывно (примерно каждую секунду) собирать местоположение пользователей и сохранять их.
Эти данные структурированы. В реляционной базе данных она будет храниться как:
| user | timestamp | latitude | longitude |
Однако данных слишком много. Ежедневно будет 60 × 60 × 24 = 86 400 записей на пользователя. Даже с 1000 пользователей это означает 86 400 000 записей в день.
И это не только 86 400 000 записей в день. Потому что эти записи будут обработаны и обработанные версии будут также сохранены. Итак, умножьте это число примерно на 2.
Как я планирую использовать данные
По сути, я планирую сделать более грубые версии данных о местоположении для более удобного потребления. Это:
- Сортировать полученные данные по временным меткам.
- Повторяя этот список по порядку, определите, значительно ли изменилось местоположение (проверив, насколько изменились широта и долгота)
- Представлять несущественные изменения местоположения в виде одной записи в выходных данных (следовательно, выходные данные представляют собой более грубую версию данных о местоположении).
- Повторяйте этот процесс на выходе, требуя еще большего изменения широты и долготы для значительного изменения. Следовательно, вывод, который будет получен из предыдущего вывода, будет еще более грубым.
- Повторяйте весь процесс столько, сколько нужно.
- Соберите диапазон разрешений и отправьте их пользователям. Кроме того, сохраните все разрешения данных для последующего использования.
Что я должен использовать для хранения этих данных? Должен ли я использовать реляционную базу данных или решение NoSQL? Что еще нужно учитывать при разработке этого приложения?