मैं एक डेटा सघन वेब एप्लिकेशन लिख रहा हूं जो अपाचे के माध्यम से दिया गया है। मेरा सवाल यह है कि प्रोसेसिंग को कैसे बेहतर बनाया जाए क्योंकि इसमें कई विकल्प हैं।
मैं अपने निपटान में है OpenLayers / JQuery / जावास्क्रिप्ट, PostGIS / Postgresql (pgsql के साथ), python / psycopg2, php।
डेटाबेस में लगभग 3 मिलियन पंक्तियाँ हैं और प्रोटोटाइप वर्तमान में निम्नानुसार चलता है:
उपयोगकर्ता OpenLayers विंडो पर एक बिंदु पर क्लिक करता है
समन्वय को AJAX अनुरोध के रूप में सर्वर पर एक अजगर समारोह के माध्यम से भेजा जाता है
वर्तमान में मेरा आवेदन स्टेटलेस है
अजगर के psycopg2 का उपयोग एक pgsql संग्रहित प्रक्रिया को कॉल करने के लिए किया जाता है और WKT मानों का एक लार्ज सेट (और एक डेटा फ़ील्ड) अजगर मॉड्यूल में वापस आ जाता है
डेटा फ़ील्ड का उपयोग अजगर में WKT रिकॉर्ड को वर्गीकृत करने के लिए निम्नानुसार किया जाता है: सभी WKT मानों को 5 समूहों में से एक में वर्गीकृत किया जाता है। WKT मानों का लगभग 1% वास्तव में संशोधित होता है।
डब्ल्यूकेटी के पांच सेट / समूह पांच अलग-अलग बहुभुज बनाने के लिए बफ़र किए जाते हैं। मैं वर्तमान में ऐसा करने के लिए डेटाबेस में संग्रहीत कार्यविधि कहता हूं। यह बदले में सिर्फ ST_BUFFER का उपयोग करता है। (मैंने Shapely का उपयोग करने पर विचार किया है, लेकिन यकीन नहीं है कि GEOS लाइब्रेरी का उपयोग या तो मामले में प्रदर्शन लाभ होगा ...)
अंत में 5 WKT पाठ मानों को JSON स्ट्रिंग में लपेटा जाता है और OpenLayers में पाँच परतों के रूप में रेंडर करने के लिए वापस भेजा जाता है।
मुझे लग रहा है कि अड़चनें प्रारंभिक स्थानिक खोज और अंतिम बफ़रिंग चरण हैं।
मुझे लगता है कि प्रश्न है:
क्या चीजों को व्यवस्थित करने का एक बेहतर तरीका है? उदाहरण के लिए, क्या सभी डेटा प्रोसेसिंग को PostgreSQL (उदाहरण के लिए कर्सर) के साथ किया जाना चाहिए और क्या यह रखरखाव और प्रदर्शन के मामले में एक अच्छी बात होगी? वेब क्लाइंट पर लंबे समय तक WKT स्ट्रिंग्स से बचने के लिए टाइल सर्वर का उपयोग करना बेहतर होगा? आप इसे कैसे संबोधित करेंगे?