2009-11-20 12 views
11

मैंने एएसपी.नेट का उपयोग किया है और अब मैं सिनात्रा/मोंगोडीबी ऐप पर काम कर रहा हूं। एएसपी.नेट आर्किटेक्चर के साथ, डेटाबेस से कनेक्शन किसी दिए गए अनुरोध का उपयोग उन कनेक्शनों के पूल से आता है जो ADO.NET प्रबंधित करता है। अनुरोधों के बीच पूल में कनेक्शन जिंदा रखा जाता है ताकि प्रत्येक http अनुरोध के लिए कनेक्शन बनाने और कनेक्शन को फाड़ने की लागत का भुगतान नहीं किया जा सके।सिनात्रा और मोंगोडीबी का उपयोग - http अनुरोधों के बीच मोंगोड कनेक्शन को "जीवित रखने" के लिए अनुशंसित तरीका क्या है?

वहाँ एक सिनात्रा MongoDB अनुप्रयोग में एक ऐसी ही व्यवस्था है, या मैं प्रत्येक अनुरोध के साथ डिस्कनेक्ट कनेक्ट करने के लिए की आवश्यकता होगी /? यदि कोई तंत्र है, तो कोड कैसा दिखता है?

EDIT1: निम्नलिखित काम नहीं करता है। सीएसएस, जेएस, जेपीईजी फाइलों के अनुरोध सहित, प्रत्येक HTTP अनुरोध जो ब्राउज़र भेजता है new.db लाइन हिट करता है।

require 'mongo' 
include Mongo 

db = Mongo::Connection.new.db("MyDb") 

class MyApp < Sinatra::Base 
    get '/' do 
     etc 
+0

यहाँ एक बहुत अच्छी [उदाहरण ऐप] (http://github.com/dancroak/shorty) सिनात्रा और MongoDB का उपयोग कर रहा है - शायद उस कोड को देख से एक अच्छी शुरुआत मिल सकती है। – mdirolf

+0

जब मैं करता हूं कि आप क्या करते हैं और मोंगोड के आउटपुट को देखते हैं, तो मुझे प्रत्येक HTTP अनुरोध के लिए कनेक्शन मिलते हैं, जिसमें सीएसएस, जेएस फाइलों के अनुरोध शामिल हैं। –

उत्तर

8

ruby mongodb driver के नवीनतम संस्करण कनेक्शन पूलिंग भी शामिल है। आप अपने साइनरा ऐप और बॉब के चाचा में अपने configure ब्लॉक में अपना पूल सेट कर सकते हैं।

6

यदि आप अनुरोध विधियों के दायरे से बाहर अपना डेटाबेस कनेक्शन बनाते हैं, तो कनेक्शन प्रत्येक अनुरोध पर पुनर्स्थापित नहीं किया जाएगा।

जब आप db प्रारंभ एक वैश्विक या उदाहरण चर का उपयोग कर की कोशिश करना चाहते हो सकता है।

# Should be in a configure block 
configure do 
    DB = Connection.new.db('test-sinatra') 
end 

इसके अलावा, कनेक्शन पूलिंग समस्या नहीं है, और निश्चित रूप से इस विशेष समस्या का समाधान नहीं है।

+0

मुझे लगता है कि मैं जो सुझाव देता हूं वह कर रहा हूं, लेकिन जैसा कि आप कहते हैं, यह व्यवहार नहीं कर रहा है। –

+0

मेरे प्रश्न में "EDIT1" देखें जो काम नहीं कर रहा है इसका एक उदाहरण के रूप में। –