2011-07-24 6 views
9

मैं वर्तमान में एक उच्च यातायात जीआईएस प्रणाली का निर्माण कर रहा हूं जो वेब फ्रंट एंड पर पायथन का उपयोग करता है। प्रणाली केवल 99% पढ़ी जाती है। प्रदर्शन के हित में, मैं पूर्व-जेनरेटेड रीड-ऑप्टिमाइज्ड जीआईएस जानकारी के बाहरी रूप से जेनरेट किए गए कैश का उपयोग करने और प्रत्येक व्यक्तिगत वेब सर्वर पर SQLite डेटाबेस में संग्रहीत करने पर विचार कर रहा हूं। संक्षेप में इसे एक वितरित पठन-केवल कैश के रूप में उपयोग किया जा रहा है जिसे नेटवर्क पर हॉप करने की आवश्यकता नहीं है। बैक एंड ओएलटीपी स्टोर postgreSQL होगा लेकिन यह 1% से कम अनुरोधों को संभालेगा।SQLite एक वेब सर्वर पर केवल पढ़ने के लिए कैश के रूप में उपयोग के लिए उपयुक्त है?

मैंने रेडिस का उपयोग करने पर विचार किया है लेकिन डेटासेट काफी बड़ा है और इसलिए यह वर्चुअल मशीनों पर प्रशासनिक लागत और मेमोरी लागत को बढ़ाएगा। Memcache उपयुक्त नहीं है क्योंकि यह रेंज क्वेरी नहीं कर सकता है।

क्या मैं SQLite के साथ पढ़ने-समरूपता समस्याओं को हिट करने जा रहा हूं?

क्या यह एक समझदार दृष्टिकोण है?

+1

यह अच्छी तरह से पहले मामले मैंने आज तक देखा जहां SQLite * * है सबसे समझदार दृष्टिकोण हो सकता है। – Crashworks

+0

SQLite टेबल केंद्रीय postreSQL डेटाबेस से डेटा के साथ समय-समय पर अद्यतन कर रहे हैं? – Tim

+0

नहीं - वे एक अलग ऑफ़लाइन डेटाबेस से आएंगे और जब स्रोत डेटा बदलता है तो तिमाही रूप से होने की संभावना होती है। फिर उन्हें वेब सर्वर पर अपलोड किया जाएगा, फ़ाइलों को बदल दिया जाएगा और फिर mod-wsgi इंस्टेंस पुनरारंभ होंगे। असल में - कोई लिखता नहीं है, बस फाइलों को बदल दिया जा रहा है। –

उत्तर

4

ठीक है काफी अनुसंधान और प्रदर्शन परीक्षण के बाद, SQLite इस लिए उपयुक्त है। स्थिर डेटा पर इसका अच्छा अनुरोध सहमति है। SQLite केवल एक मुद्दा बन जाता है यदि आप लिख रहे हैं और साथ ही भारी पढ़ते हैं।

अधिक यहाँ जानकारी:

http://www.sqlite.org/lockingv3.html

+0

उत्तर मिलने के बाद धन्यवाद। – Crashworks

-3

यदि उपयोग केस केवल एक कैश है तो आप http://memcached.org/ जैसे कुछ का उपयोग क्यों नहीं करते हैं।

आप पाइप रिपॉजिटरी में पायथन के लिए memcached बाइंडिंग पा सकते हैं।

एक और विकल्प यह है कि आप पोस्टग्रेज़ में भौतिक दृश्यों का उपयोग करते हैं, इस तरह आप चीजों को सरल रखेंगे और सबकुछ एक ही स्थान पर रखेंगे।

http://tech.jonathangardner.net/wiki/PostgreSQL/Materialized_Views

+5

मूल पोस्टर ने कहा: "Memcache उपयुक्त नहीं है क्योंकि यह रेंज क्वेरी नहीं कर सकता है।" – Crashworks

+1

Memcached जैसा कि बताया गया है अनुपयुक्त है। मैं वास्तव में भौतिक दृश्यों का प्रस्ताव कर रहा हूं लेकिन बैक एंड पोस्टग्रेज़ से उत्पन्न एक SQLite डेटा फ़ाइल में उत्पन्न होता है जिसमें सभी गणित सहित 4 घंटे लगते हैं। मैं इसे एक डीबी इंजन में नहीं डालूंगा क्योंकि मुझे महंगे होने के बजाय स्केल करना होगा। एक बार जगह एक ही टोकरी में आपके सभी अंडे है। इसके अलावा नेटवर्क यातायात महंगा होने की संभावना है (सीपीयू <-> मेमोरी <-> डिस्क की तुलना में)। –

संबंधित मुद्दे