การเก็บข้อมูลตำแหน่งภูมิศาตร์ใน Redis (Geospatial)
Redis นอกจากจะเก็บข้อมูลที่เป็น key and value แล้วก็ยังมีอีกความสามารถพิเศษอีกอย่างนึง คือสามารถใช้เก็บข้อมูลทางภูมิศาตร์ ซึ่งจะเก็บข้อมูลที่เป็น latitude กับ longitude ได้ด้วย blog นี้เราจะมาดูว่ามันคืออะไร ใช้งานอย่างไร แล้ว use cases ที่เราเอาไปใช้งานได้มีอะไรบ้าง Background ถ้าเรามีโจทย์มาว่าต้องออกแบบระบบให้เก็บข้อมูลที่เป็นพิกัดของสถานที่ ลงใน database เราจะเก็บมันยังไงครับ ตัวอย่างเช่น ผมต้องการเก็บตำแหน่งของสาขาของร้านสะดวกซื้อ 7-11 ทั้งหมดในกรุงเทพ แบบตัวอย่างข้อมูลข้างล่างนี้ latitude longitude location 13.75759654737684 100.56426644232188 7-11 Rama 9 13.803052551902061 100.55536933330103 7-11 Phahonyothin 13.779830852003741 100.54371735141898 7-11 Ari ถ้าเราเก็บ Latitude, Longitude, Location แยกเป็นแต่ละคอลัมน์ หรือ field ใน database แบบ ตารางข้างบน ก็ดูไม่มีปัญหาอะไรใช่ไหมครับ เราสามารถ query ตำแหน่งของสถานที่ที่เราต้องการอยากรู้ได้ แต่ถ้าเราต้องการอยากรู้ว่า จากตำแหน่งที่เรายืนอยู่เนี่ย มี 7-11 ไหนที่ไกล้ที่สุด (คล้ายๆ กับเวลาเสิร์ชหา 7-11 ใน Google Maps) เราจะ query มันยังไงครับ 🤔...