Martin - เซิร์ฟเวอร์เวกเตอร์ไทล์แบบเรียลไทม์ประสิทธิภาพสูงบนพื้นฐาน PostGIS
(github.com/maplibre)ปัญหาในโลกความจริงที่มักพบเมื่อต้องสร้างบริการแผนที่
โดยทั่วไปแล้ว เมื่อพยายามสร้างระบบแผนที่ขึ้นมาเอง มักจะต้องกังวลกับ 3 ประเด็นต่อไปนี้
1. ความยุ่งยากในการอัปเดตข้อมูล
- ปัญหา: มีอาคารใหม่ถูกเพิ่มเข้าไปใน DB แต่ถ้าจะวาดแผนที่ใหม่ (Tile Generation) ก็ต้องผ่านกระบวนการเตรียมข้อมูลล่วงหน้าที่ใช้เวลาหลายชั่วโมงทุกครั้ง
- แนวทางของ Martin: ไม่มีขั้นตอนเตรียมข้อมูลล่วงหน้าเลย ตัวระบบจะอ่านพิกัดล่าสุดจาก DB ทันทีในช่วงที่ผู้ใช้เปิดดูแผนที่ แล้วแสดงผลได้เลย
2. ข้อจำกัดของทรัพยากรเซิร์ฟเวอร์
- ปัญหา: ข้อมูลแผนที่มีขนาดใหญ่และมีคำขอจำนวนมาก ทำให้เซิร์ฟเวอร์ล่มหรือช้าลงได้ง่าย
- แนวทางของ Martin: ใช้การควบคุมระดับล่างอันเป็นจุดเด่นของภาษา Rust เพื่อลดการใช้หน่วยความจำลงอย่างมาก ทำให้รองรับคำขอจำนวนมากได้แม้บนเซิร์ฟเวอร์สเปกต่ำ
3. การจัดการข้อมูลที่กระจัดกระจาย
- ปัญหา: ข้อมูลบางส่วนอยู่ใน PostgreSQL ขณะที่บางส่วนเป็นไฟล์ขนาดใหญ่ (MBTiles) ทำให้จุดที่ต้องดูแลเพิ่มขึ้น
- แนวทางของ Martin: เซิร์ฟเวอร์เดียวสามารถอ่านข้อมูลได้พร้อมกันจากหลายรูปแบบ แล้วรวมให้อยู่ในมาตรฐานเดียวกัน นักพัฒนาเพียงเรียกใช้ API เดียว โดยไม่ต้องสนใจว่าต้นทางของข้อมูลอยู่ที่ไหน
4. ความเหนื่อยล้าจากการตั้งค่าจุกจิกเพิ่มเติม
- ปัญหา: การแสดงแผนที่ไม่ได้มีแค่ข้อมูลไทล์ แต่ยังต้องเตรียมฟอนต์ ไอคอน ไฟล์สไตล์ และองค์ประกอบอื่น ๆ อีกมาก
- แนวทางของ Martin: มีความสามารถในการสร้างหรือเสิร์ฟแอสเซ็ตประกอบเหล่านี้จากภายในเซิร์ฟเวอร์ได้เอง จึงไม่จำเป็นต้องตั้งค่าการเสิร์ฟแยกเพิ่มเติม
มันใกล้เคียงกับยูทิลิตีที่เข้ามาจัดการความยุ่งยากระหว่างทางทั้งหมดก่อนที่ข้อมูลจะถูกแสดงบนหน้าจอ เป็นโปรเจกต์ที่ช่วยลดงานลองผิดลองถูกซ้ำ ๆ เมื่อต้องสร้างระบบ GIS ตั้งแต่ระดับพื้นฐาน
ยังไม่มีความคิดเห็น