Uygulama sürekli olarak (yaklaşık her saniye) kullanıcıların yerini toplar ve saklar.
Bu veriler yapılandırılmıştır. İlişkisel bir veritabanında şu şekilde depolanır:
| user | timestamp | latitude | longitude |
Ancak, çok fazla veri var. Kullanıcı başına günlük 60 × 60 × 24 = 86.400 kayıt olacaktır. 1000 kullanıcıyla bile günlük 86.400.000 kayıt anlamına gelir.
Ve bu sadece günlük 86.400.000 kayıt değil. Çünkü bu kayıtlar işlenecek ve işlenmiş sürümleri de saklanacaktır. Yani, bu sayıyı yaklaşık 2 ile çarpın.
Verileri nasıl kullanmayı planlıyorum
Esasen, daha kolay tüketim için konum verilerinin daha kaba taneli sürümlerini yapmayı planlıyorum. Yani:
- Alınan verileri zaman damgalarına göre sıralayın.
- Bu listede sırayla yinelenerek, konumun önemli ölçüde değişip değişmediğini belirleyin (enlem ve boylamın ne kadar değiştiğini kontrol ederek)
- Önemli olmayan konum değişikliklerini çıktıda tek bir girdi olarak gösterin (dolayısıyla çıktı, konum verilerinin daha kaba taneli bir sürümüdür).
- Önemli bir değişiklik için daha büyük bir enlem ve boylam değişikliği gerektirerek bu işlemi çıktıda yineleyin. Dolayısıyla, önceki çıktıdan üretilecek çıktı daha kaba taneli olacaktır.
- Tüm süreci gerektiği kadar yineleyin.
- Bir dizi çözünürlük toplayın ve bunları kullanıcılara gönderin. Ayrıca, verilerin tüm çözünürlüklerini daha sonra kullanmak üzere saklayın.
Bu verileri saklamak için ne kullanmalıyım? İlişkisel veritabanı mı yoksa NoSQL çözümü mü kullanmalıyım? Bu uygulamayı tasarlarken başka nelere dikkat etmeliyim?