CPAN DBI सामान्य डेटाबेस उपयोग के लिए पर्ल में उपयोग करने के लिए सबसे अच्छा डेटाबेस इंटरफ़ेस है? क्या कुछ बेहतर विकल्प हैं?मुझे किस पर्ल डेटाबेस इंटरफ़ेस का उपयोग करना चाहिए?
उत्तर
हैं तो आप सिर्फ निम्न स्तर के डेटाबेस का उपयोग — लिए देख रहे हैं तो आप इसे फ़ीड कोई भी SQL स्ट्रिंग (वैकल्पिक रूप से प्लेसहोल्डर और बाइंड मानों के साथ) और यह आपकी क्वेरी चलाती है और आपको परिणामदेता हैफिर हां, DBI अब तक का सबसे अच्छा शर्त है।
यदि आप एक उच्च स्तरीय इंटरफ़ेस चाहते हैं (यानी, जिसके लिए आपके कोड में कच्चे एसक्यूएल का बहुत कम या कोई उपयोग नहीं है) तो पर्ल के लिए कई ओआरएम (object-relational mappers) उपलब्ध हैं। अधिक जानकारी और लिंक के लिए पर्ल फाउंडेशन के पर्ल 5 विकी पर ORM पृष्ठ देखें। (आप उन के बीच चुनने में मदद चाहते हैं या विशिष्ट प्रश्न हैं, तो आप इस सवाल का केंद्र बिन्दु सकता है या शायद पोस्ट एक दूसरे से।)
Class::DBI पर भी एक नज़र डालें।
मेरी राय में, डीबीआई वास्तव में एक अच्छी पसंद है। मैंने सक्रिय रूप से डीबीडी :: mysql का उपयोग किया है और यह वास्तव में एक अच्छा समाधान पाया है।
हम अपनी सभी परियोजनाओं में डीबीआई मॉड्यूल का भी उपयोग करते हैं। कई बार हम विशिष्ट अनुप्रयोग के लिए इसके ऊपर एक कस्टम पैकेज बनाते हैं लेकिन इसके नीचे मूल डीबीआई मॉड्यूल है। और अक्सर डीबीआई मॉड्यूल कार्यों का उपयोग करना आसान है।
डीबीआई पर्ल और डीबीएमएस के बीच "निम्न स्तर" इंटरफ़ेस है। ऐसा करने के लिए यह एकमात्र यथार्थवादी पसंद है। जावा में जेडीबीसी के लिए तुलनात्मक। पर्ल और डेटाबेस के बीच आप निम्न स्तर के इंटरफ़ेस के लिए डीबीआई के अलावा कुछ भी चुनने के लिए पागल हो सकते हैं (या एक बहुत ही विशिष्ट उपयोग केस है)।
DBI के शीर्ष पर, वहाँ विभिन्न वस्तु/संबंधपरक mappers जो एक डेटाबेस बहुत आसान है और क्लीनर के साथ काम कर रहे हैं।
आम/अधिक लोकप्रिय वालों में से कुछ
DBI महान है, लेकिन DBD मॉड्यूल की गुणवत्ता भिन्न हो सकते हैं। मुझे डीबीडी के संस्करणों में से एक में 'फीचर' द्वारा काटा गया था: पृष्ठ। कर्सर के साथ बातचीत करने के बजाय, इसे स्मृति में अपने परिणाम का पूरा डेटा लोड करना पसंद आया।
सामान्य रूप से - चेतावनी प्रोग्रामर।
आप वस्तुओं के साथ काम करना चाहते हैं (आत्मनिरीक्षण के साथ!), Fey :: ORM जो मूस के आधार पर ORM लागू करता है पर एक नज़र डालें। इसमें सिंटैक्स की तरह बहुत एसक्यूएल भी है, इसलिए यह मेरे आरडीबीएमएस आधारित मस्तिष्क को कुछ अन्य ओआरएम ढांचे की तुलना में थोड़ा बेहतर बनाता है।
डीबीआई चट्टानों! लेकिन एक उचित पूर्ण-विशेषीकृत ओआरएम के लिए जो तेजी से डीबीआईएक्स :: कक्षा के लिए जाता है।
यदि आपने किसी ऐसे कार्य के लिए सादा DBI
का उपयोग करना चुना है, जिसे ORM की आवश्यकता नहीं है, तो दृढ़ता से सुझाव देता है कि आप DBIx::Simple पर एक नज़र डालें।
यह एक प्रतिस्थापन नहीं है, लेकिन DBI
कि साधारण चीजें सरल और जटिल चीजों को संभव बनाता है, के शीर्ष पर एक बहुत अच्छी तरह से तैयार किया गया एपीआई बिना DBI
की flexibilty के किसी भी खोने।
क्या तुमने कभी पाया आप, DBI
दस्तावेज में जाहिरा तौर पर साधारण चीजों को देखने के लिए एक arrayref के रूप में एक प्रश्न के परिणाम मिल (पंक्तियाँ) हैश (स्तंभों और उनके मान) की की तरह था किया था? DBIx::Simple
के साथ इस स्पष्ट है:
# DBI
my $rows = $dbh->selectall_arrayref($sql, { Slice => {} });
# tell it we want "hashes" (yuck!) ^^^^
# DBIx::Simple
my $rows = $db->query($sql)->hashes; # does the same as the above code underneath!
अधिक के लिए examples पर एक नजर डालें। इसके अलावा, SQL::Abstract के साथ एकीकरण के सरल प्रश्नों एक हवा बनाता है। यह मेरी कोड है, जहां मैं DBI
से पहले इस्तेमाल किया गया होता के सभी में इसका इस्तेमाल करते हैं, और मैं वापस नहीं देख रहा हूँ।
यह इंगित करने योग्य है कि "उच्च स्तरीय" इंटरफ़ेस (जैसे SQL :: सार) और (डीबीआईएक्स :: सरल) का विशाल बहुमत वास्तव में प्रश्नों को निष्पादित करते समय डीबीआई का उपयोग करता है। DBI काफी पर्ल में डेटाबेस कनेक्शन के लिए स्वीकार किए जाते हैं मानक पद्धति है।
मूल रूप से आप केवल DBI सबसे पहले उपयोग करने के लिए इस्तेमाल किया जाना चाहिए।
कैसे इस सवाल का जवाब है? – ImaginaryHuman072889
DBIx :: सरल DBI द्वारा या सरणी सूचकांक द्वारा (चारों ओर स्थानांतरित कर सकते हैं जो आपके टेबल स्वरूप बदल अगर) का इस्तेमाल किया अजीब हैश विधि नाम से परिणाम के लिए अधिक स्वच्छ का उपयोग, बजाय के लिए अनुमति देता है। –