ฉันกำลังเขียนเว็บแอปพลิเคชั่นที่เน้นข้อมูลที่ส่งผ่าน apache คำถามของฉันเกี่ยวกับวิธีจัดการการประมวลผลที่ดีที่สุดเนื่องจากมีหลายตัวเลือก
ฉันมี OpenLayers / JQuery / Javascript, PostGIS / Postgresql (พร้อม pgsql), python / psycopg2, php
ฐานข้อมูลมีแถวประมาณ 3 ล้านแถวและต้นแบบปัจจุบันทำงานดังนี้:
ผู้ใช้คลิกที่จุดบนหน้าต่าง OpenLayers
พิกัดถูกส่งเป็นการร้องขอ AJAX ไปยังฟังก์ชัน python บนเซิร์ฟเวอร์
ขณะนี้ใบสมัครของฉันไม่มีสัญชาติ
psycopg2 ของ Python ใช้เพื่อเรียกโพรซีเดอร์ที่เก็บไว้ pgsql และชุดค่า WKT ที่ยอดเยี่ยม (และฟิลด์ข้อมูล) จะถูกส่งกลับไปยังโมดูลหลาม
ฟิลด์ข้อมูลใช้เพื่อจัดหมวดหมู่เรคคอร์ด WKT ในไพ ธ อนดังนี้: ค่า WKT ทั้งหมดถูกจัดหมวดหมู่เป็นหนึ่งใน 5 กลุ่ม ประมาณ 1% ของค่า WKT จะถูกแก้ไขจริง
ห้าชุด / กลุ่มของ WKT ถูกบัฟเฟอร์เพื่อสร้างรูปหลายเหลี่ยมที่แตกต่างกันห้าแบบ ฉันเรียกขั้นตอนที่เก็บไว้ในฐานข้อมูลเพื่อทำสิ่งนี้ สิ่งนี้จะใช้เพียง ST_BUFFER (ฉันได้พิจารณาการใช้ Shapely แต่ไม่แน่ใจว่าจะมีข้อได้เปรียบด้านประสิทธิภาพเนื่องจากมีการใช้ไลบรารี GEOS ในกรณีใดกรณีหนึ่ง ... )
ในที่สุดค่าข้อความ 5 WKT จะถูกรวมอยู่ในสตริง JSON และส่งกลับไปยัง OpenLayers เพื่อแสดงเป็นห้าเลเยอร์
ฉันพบว่าคอขวดคือการค้นหาเชิงพื้นที่เริ่มต้นและขั้นตอนการบัฟเฟอร์สุดท้าย
ฉันเดาคำถามคือ:
มีวิธีที่ดีกว่าในการจัดเรียงสิ่งต่าง ๆ ? ตัวอย่างเช่นการประมวลผลข้อมูลทั้งหมดควรทำใน PostgreSQL (เช่นมีเคอร์เซอร์) และนี่จะเป็นสิ่งที่ดีในแง่ของการบำรุงรักษาและประสิทธิภาพหรือไม่? จะเป็นการดีกว่าถ้าใช้ไทล์เซิร์ฟเวอร์เพื่อหลีกเลี่ยงการส่งผ่านสาย WKT ที่ยาวไปยังเว็บไคลเอ็นต์? คุณจะจัดการกับมันอย่างไร?