ฉันใช้ PostGIS มาไม่กี่ปีและเพิ่งเริ่มตรวจสอบว่าฉันสามารถใช้ MongoDB เพื่อจัดการกับกรณีการใช้งานบางอย่างได้อย่างไร ฉันกำลังจัดการกับข้อมูลจุดที่มีฟิลด์กระจัดกระจาย - เช่นข้อมูล OSM ที่มีจำนวนแท็กต่อเร็กคอร์ดที่แตกต่างกันและเนื่องจาก MongoDB ไม่มีสคีมามันจึงให้ยืมตัวเองได้ดี ฉันโหลดตัวอย่างของข้อมูลนี้ในตัวอย่างของแต่ละฐานข้อมูลและนี่คือสิ่งที่ฉันพบ
สำหรับฉันแล้วดูเหมือนว่าสำหรับการจัดเก็บและเรียกคืนข้อมูลจุด Mongo ใช้งานได้ดี ข้อความค้นหาเชิงพื้นที่ขอบเขตกล่องดูเหมือนจะทำงานได้ดีและฉันพบว่าประสิทธิภาพโดยรวมดีมาก นอกจากนี้ยังง่ายต่อการติดตั้งและไปต่อแม้ว่าฉันจะพบว่าเครื่องมือ mongoimport ไม่อนุญาตให้ฉันกำหนดเขตผสม coord 2D ในไฟล์ TSV หรือ CSV เนื่องจากการเขียนสคริปต์ที่สร้าง JSON นั้นค่อนข้างง่ายจึงไม่เป็นปัญหามากนัก ข้อเสียเปรียบที่สำคัญในขณะนี้คือแทบจะไม่มีสิ่งใดในอาณาจักรเชิงพื้นที่ที่สามารถอ่านข้อมูลจากมันได้ ดูเหมือนจะมีปลั๊กอินแหล่งข้อมูล Mapnik ทดลองที่https://github.com/springmeyer/mapnik-mongoแต่นั่นคือทั้งหมดที่ฉันสามารถหาได้
ในทางกลับกัน PostGIS ใช้เวลาในการตั้งค่านานกว่าเล็กน้อย (อย่างน้อยสำหรับฉัน) แต่ดังที่ได้กล่าวไว้ข้างต้นมันมีคุณสมบัติเพิ่มเติมมากมายในทันที นอกเหนือจากการให้ความสามารถในการวิเคราะห์เชิงพื้นที่ที่ซับซ้อนยิ่งขึ้นแล้วยังได้รับการสนับสนุนโดยแอปพลิเคชันและห้องสมุดอื่น ๆ อีกมากมาย Mapserver, Mapnik, QGis, GDAL และอื่น ๆ สำหรับฉัน PostGIS นั้นเป็นระบบ GIS ที่แท้จริงมากกว่าที่จะเป็นระบบจัดเก็บและค้นคืนที่ง่ายกว่า
เท่าที่ประสิทธิภาพดำเนินไปฉันก็พบว่าฉันสามารถดึงข้อมูลได้อย่างรวดเร็วจากทั้งสองระบบ อย่างไรก็ตามดูเหมือนว่า PostGIS จะได้ประโยชน์มากขึ้นจากการมีดัชนี MongoDB นั้นเร็วกว่าเล็กน้อยเมื่อส่งคืนชุดข้อมูลทั้งหมดให้ฉัน (2 ล้านบันทึก) ในคราวเดียวและช้าลงเล็กน้อยเมื่อส่งคืนแบบสอบถามที่ใช้ดัชนีซึ่งเป็นครั้งแรก ฉันไม่แน่ใจเกี่ยวกับกลไกที่ใช้ในการแคช แต่ฉันเห็นได้ว่าถ้าฉันทำแบบสอบถามซ้ำใน MongoDB ผลลัพธ์จะกลับมาเร็วขึ้นเป็นครั้งที่ 2 ฉันเห็นสิ่งที่คล้ายกันใน PostGIS แต่ไม่ใช่ในระดับเดียวกัน ฉันยังทราบด้วยว่าการใช้หน่วยความจำบนเครื่องของฉันดูเหมือนจะสูงขึ้นเมื่อ MongoDB ทำงานมากกว่า PostGIS
ดังนั้นข้อสรุปของฉันคือฉันจะไม่กำจัด PostGIS เป็นระบบจัดเก็บข้อมูลเชิงพื้นที่และการวิเคราะห์ค่าเริ่มต้นของฉัน แต่สำหรับโครงการบางประเภท (เช่นแผนที่เว็บที่แสดงแผ่นภาพและ / หรือจุดข้อมูล) ฉันอาจพิจารณาใช้ MongoDB เป็นที่เก็บข้อมูลของฉัน
โรเจอร์