2013-02-08 19 views
6

में डेटाबेस कनेक्शन का प्रबंधन कैसे करें मैं एक आर पैकेज का निर्माण कर रहा हूं, जिसका मुख्य उद्देश्य एक स्वामित्व डेटाबेस से निपटने के दर्द को दूर करना है जिसके लिए डेटा को प्राप्त करने के लिए कुछ जटिल जटिल प्रश्नों की आवश्यकता होती है ।आर पैकेज

इस प्रकार, माइक्रोसॉफ्ट एसक्यूएल सर्वर (odbcDriverConnect द्वारा प्राप्त) से कनेक्शन इस पैकेज का एक निरंतर और महत्वपूर्ण हिस्सा है, लेकिन मैं यह नहीं समझ सकता कि इसका प्रबंधन कैसे किया जाए और मैं सलाह के लिए उम्मीद कर रहा हूं यह कैसे आर

में लागू किया जाना चाहिए मेरे वर्तमान विचार कर रहे हैं:

  1. उपयोगकर्ता सुनिश्चित करें कि वे कोई मान्य कनेक्शन इससे पहले कि वे किसी भी समारोह कॉल करते हैं। प्रत्येक फ़ंक्शन में connection पैरामीटर के रूप में होता है जिसे पारित किया जाना चाहिए। यह उपयोगकर्ता पर बोझ डालता है।

  2. प्रत्येक समारोह में, get.connection() पर कॉल करें जो हर बार नया कनेक्शन प्राप्त करेगा। पुराने कनेक्शनों को तब स्वाभाविक रूप से टाइमआउट करने की अनुमति दी जाती है, जो एक बेवकूफ दृष्टिकोण लगता है।

  3. उपर्युक्त के रूप में, लेकिन हर बार एक ही कनेक्शन लौटाएं। यह एक व्यवहार्य प्रस्ताव नहीं प्रतीत होता है क्योंकि मैं आर autoReconnect=TRUE के माध्यम से कनेक्शन से बाहर नहीं रोक सकता और अन्य भाषाओं में मैंने जो अन्य चालें उपयोग की हैं, उनका कोई प्रभाव नहीं पड़ता है।

जावा में, मैं शायद एक DatabaseConnectionPool कनेक्शन की संख्या के साथ आबादी है कि पूल रूप में की जरूरत के लिए होता है और बस से कनेक्शन हड़पने, और करने के लिए उन्हें लौटने के लिए,। मुझे लगता है कि जब मैं autoReconnect=TRUE निर्दिष्ट करता हूं तो मुझे जावा में टाइमआउट समस्या भी नहीं लगती है।

किसी भी सुझाव की बहुत सराहना की।

उत्तर

1

ऐसा लगता है कि दूसरे और तीसरे दृष्टिकोण के बीच एक मिश्रण एक उचित समाधान है, यानी कनेक्शन को वापस करने से पहले आप check if it is still opened कर सकते हैं, अन्यथा नया कनेक्शन बनाएं।

यह मूल रूप से के रूप में यदि आप मैन्युअल रूप से कार्यान्वित कर रहे हैं autoReconnect=TRUE

2

pool इस तरह के डेटाबेस के रूप में कनेक्शन पूलिंग के लिए एक अनुसंधान पैकेज है। यदि आप एक github पैकेज का उपयोग करने के लिए शांत हैं, तो https://github.com/rstudio/pool पर एक नज़र डालें। आवश्यकतानुसार कनेक्शन का पुन: उपयोग या पुन: निर्माण करेगा।

+0

'पूल' महान काम करता है! –

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