แอปพลิเคชั่นจะรวบรวมตำแหน่งของผู้ใช้อย่างต่อเนื่อง (ประมาณทุกวินาที) และเก็บไว้
ข้อมูลนี้มีโครงสร้าง ในฐานข้อมูลเชิงสัมพันธ์มันจะถูกเก็บไว้เป็น:
| user | timestamp | latitude | longitude |
อย่างไรก็ตามมีข้อมูลมากเกินไป จะมี 60 × 60 × 24 = 86,400 บันทึกต่อผู้ใช้ทุกวัน แม้จะมีผู้ใช้ 1,000 ราย แต่ก็หมายถึงบันทึก 86,400,000 ต่อวัน
และไม่เพียงบันทึก 86,400,000 ต่อวัน เนื่องจากบันทึกเหล่านี้จะถูกประมวลผลและเวอร์ชันที่ประมวลผลจะถูกเก็บไว้เช่นกัน ดังนั้นจงคูณจำนวนนั้นด้วยประมาณ 2
ฉันวางแผนจะใช้ข้อมูลอย่างไร
โดยพื้นฐานแล้วฉันวางแผนที่จะสร้างข้อมูลตำแหน่งที่หยาบขึ้นเพื่อให้ง่ายต่อการใช้งาน นั่นคือ:
- เรียงลำดับข้อมูล wrt timestamps ที่ได้รับ
- ทำรายการนี้ตามลำดับพิจารณาว่าสถานที่มีการเปลี่ยนแปลงอย่างมีนัยสำคัญ (โดยการตรวจสอบว่าละติจูดและลองจิจูดเปลี่ยนไปมากน้อยเพียงใด)
- แสดงถึงการเปลี่ยนแปลงตำแหน่งที่ไม่สำคัญเป็นรายการเดียวในเอาต์พุต (ดังนั้นเอาต์พุตคือเวอร์ชันที่หยาบกว่าของข้อมูลตำแหน่ง)
- ทำซ้ำขั้นตอนนี้กับผลลัพธ์โดยกำหนดให้มีการเปลี่ยนแปลงละติจูดและลองจิจูดที่ยิ่งใหญ่ขึ้นเพื่อการเปลี่ยนแปลงที่สำคัญ ดังนั้นผลผลิตที่จะผลิตจากผลผลิตก่อนหน้านี้จะยิ่งทำให้หยาบยิ่งขึ้น
- ทำซ้ำขั้นตอนทั้งหมดเท่าที่จำเป็น
- รวมช่วงของการแก้ปัญหาและส่งไปยังผู้ใช้ และเก็บความละเอียดทั้งหมดของข้อมูลไว้เพื่อการบริโภคในภายหลัง
ฉันควรใช้อะไรเพื่อจัดเก็บข้อมูลนี้ ฉันควรใช้ฐานข้อมูลเชิงสัมพันธ์หรือโซลูชัน NoSQL หรือไม่ ฉันควรพิจารณาสิ่งอื่นใดเมื่อออกแบบแอปพลิเคชันนี้