2009-07-23 23 views
6

मैं समझता हूं कि कुछ डेटाबेस में आर (जैसे MySQL) में मूल समर्थन है लेकिन आप आरओडीबीसी का उपयोग कर एमएस एसक्यूएल सर्वर जैसे अन्य डीबी से कनेक्ट कर सकते हैं। मूल ड्राइवर बनाम आरओडीबीसी के साथ पढ़ने/लिखने के लिए कितना गति सुधार होता है? आर में अन्य डीबी के मूल ड्राइवर कौन हैं? आम तौर पर लिखने से तेज़ या धीमा पढ़ रहा है?मूल बनाम ओडीबीसी डेटाबेस कनेक्शन

उत्तर

1
  • यह एक अनुभवजन्य प्रश्न है, तो आप जिस संयोजन में रुचि रखते हैं उसके लिए इसे क्यों मापें?
  • सार्वजनिक कोड छिपा हुआ नहीं है, तो आप क्यों नहीं मानते कि अन्य डीबी इंटरफेस सीआरएएन के पास है? अकेले डीबीआई के लिए, हमारे पास SQLite, MySQL, Postgresql, Oracle है; कस्टम डीबी बैकएंड्स के लिए वहायू जैसी चीजें हैं।
  • विशिष्ट मंच मौजूद हैं, तो आप आर-एसआईजी-डीबी पर क्यों नहीं पूछते?
  • आखिरकार, जैसे ही कोई एपीआई है और लोगों की आवश्यकता होती है, दोनों लोग गठबंधन करते हैं। मैंने दो अलग-अलग (काम पर और इसलिए अप्रकाशित) पैकेज दो उच्च विशिष्ट और तेज़ बैकएंड में लिखे हैं।
+0

अनुभवजन्य प्रश्न पर अच्छा बिंदु लेकिन मैं उन सभी का परीक्षण नहीं कर सकता। अगर किसी और के पास डीबी इंजन स्विच करने के लिए अच्छा अनुभव और सबूत है तो मैं स्विच करूँगा। –

+0

खैर आपके पास मूलभूत ओडीबीसी की तुलना करने का विकल्प हो सकता है (कहें, एमएस एसक्यूएल के बजाय MySQL या PostgreSQL के साथ, जहां यह केवल ओडीबीसी है)। तो परीक्षण के प्रकार का अनुकरण करें जिसके बाद आप हैं और देखें कि यह कैसा व्यवहार करता है। –

2

यदि आप विशेष रूप से SQL सर्वर में रूचि रखते हैं, तो नीचे दिया गया संदर्भ थोड़ा पुराना है लेकिन मुझे लगता है कि यह शायद अभी भी है।

Using ODBC with Microsoft SQL Server

एक मूल निवासी एपीआई

ODBC के बारे में लगातार अफवाहें में से एक के रूप में ODBC का प्रदर्शन है कि यह एक देशी डीबीएमएस एपीआई से स्वाभाविक धीमी है। यह तर्क इस धारणा पर आधारित है कि ओडीबीसी ड्राइवरों को मूल डीबीएमएस एपीआई पर एक अतिरिक्त परत के रूप में कार्यान्वित किया जाना चाहिए, जो मूल डीबीएमएस एपीआई फ़ंक्शंस और एसक्यूएल सिंटैक्स में एप्लिकेशन से आने वाले ओडीबीसी कथन का अनुवाद करते हैं। यह अनुवाद प्रयास सीधे मूल एपीआई को एप्लिकेशन कॉल करने की तुलना में अतिरिक्त प्रोसेसिंग जोड़ता है। मूल धारणा डीबीएमएस एपीआई पर लागू कुछ ओडीबीसी ड्राइवरों के लिए यह धारणा सच है, लेकिन माइक्रोसॉफ्ट एसक्यूएल सर्वर ओडीबीसी ड्राइवर इस तरह से लागू नहीं किया गया है।

माइक्रोसॉफ्ट एसक्यूएल सर्वर ओडीबीसी ड्राइवर डीबी-लाइब्रेरी का एक कार्यात्मक प्रतिस्थापन है। एसक्यूएल सर्वर ओडीबीसी ड्राइवर डीबी-लाइब्रेरी डीएलएल के समान ही अंतर्निहित नेट-लाइब्रेरीज़ के साथ काम करता है। माइक्रोसॉफ्ट एसक्यूएल सर्वर ओडीबीसी ड्राइवर की डीबी-लाइब्रेरी डीएलएल पर कोई निर्भरता नहीं है, और यदि ग्राहक डीबी-लाइब्रेरी क्लाइंट पर भी मौजूद नहीं है तो ड्राइवर सही तरीके से कार्य करेगा।

माइक्रोसॉफ्ट के परीक्षण से पता चला है कि ओडीबीसी आधारित और डीबी-लाइब्रेरी-आधारित SQL सर्वर अनुप्रयोगों का प्रदर्शन मोटे तौर पर बराबर है।

+0

यह वास्तव में एक अच्छा संदर्भ है। धन्यवाद! दुर्भाग्य से मुझे चीजों के आर पक्ष से निपटना होगा। ऐसा लगता है कि आर से आरओडीबीसी परत में जाना विशेष रूप से लिखने के लिए धीमा है। लेकिन यह जानना अच्छा है कि मंदी शायद आरओडीबीसी में है और ओडीबीसी को एसक्यूएल सर्वर परत में नहीं है। एक बार फिर धन्यवाद। –

+0

जिज्ञासा से, आपके डेटाफ्रेम कितने बड़े हैं जिन्हें आप सहेज रहे हैं? क्या आपने यह देखने के लिए प्रोफाइलिंग की कोशिश की है कि क्या आप एक समय में या बैच में डेटा 1 पंक्ति डाल रहे हैं? यदि आप एक पंक्ति को 1 पंक्ति डाल रहे हैं जो आपको बहुत धीमा कर देगा। मैंने हाल ही में आरओडीबीसी में बचत कार्यों के साथ कुछ मुद्दों में भाग लिया है। sqlQuery() केवल एक INSERT/UPDATE चलाते समय त्रुटि उत्पन्न करता है और कम से कम SQL सर्वर के लिए काम करता है। –

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