Aplikasi akan terus menerus (sekitar setiap detik) mengumpulkan lokasi pengguna dan menyimpannya.
Data ini terstruktur. Dalam database relasional, itu akan disimpan sebagai:
| user | timestamp | latitude | longitude |
Namun, terlalu banyak data. Akan ada 60 × 60 × 24 = 86.400 catatan per pengguna, setiap hari. Bahkan dengan 1000 pengguna, ini berarti 86.400.000 catatan setiap hari.
Dan tidak hanya 86.400.000 catatan setiap hari. Karena catatan ini akan diproses dan versi yang diproses akan disimpan juga. Jadi, kalikan jumlahnya dengan sekitar 2.
Bagaimana saya berencana menggunakan data
Pada dasarnya, saya berencana untuk membuat versi kasar dari data lokasi untuk konsumsi yang lebih mudah. Itu adalah:
- Sortir cap waktu data yang diterima.
- Berada di daftar ini secara berurutan, tentukan apakah lokasi telah berubah secara signifikan (dengan memeriksa seberapa banyak garis lintang dan garis bujur berubah)
- Mewakili perubahan lokasi yang tidak signifikan sebagai satu entri dalam output (karenanya, output adalah versi kasar dari data lokasi).
- Iterasi proses ini pada output, dengan memerlukan perubahan lintang dan bujur yang lebih besar untuk perubahan yang signifikan. Oleh karena itu, output yang akan dihasilkan dari output sebelumnya akan lebih berbutir kasar.
- Iterasi seluruh proses sebanyak yang diperlukan.
- Agregasikan serangkaian resolusi dan kirimkan ke pengguna. Juga, simpan semua resolusi data untuk konsumsi nanti.
Apa yang harus saya gunakan untuk menyimpan data ini? Haruskah saya menggunakan basis data relasional atau solusi NoSQL? Apa hal lain yang harus saya pertimbangkan ketika merancang aplikasi ini?