2010-03-06 9 views
15

मैं कोडइग्निटर के साथ पकड़ने के लिए शुरू कर रहा हूं और सक्रिय रिकॉर्ड पैटर्न के लिए इसके समर्थन में आया हूं।क्या MySQL डेटाबेस में हेरफेर करने के लिए CodeIgniters Active Record लाइब्रेरी का उपयोग करना अच्छा विचार है या क्या मुझे बस SQL ​​का उपयोग करना चाहिए?

मुझे यह तथ्य पसंद है कि यह आपके लिए एसक्यूएल कोड उत्पन्न करता है, इसलिए आप एक विशिष्ट डेटाबेस इंजन पर अपना आवेदन डाले बिना डेटाबेस में डेटा को पुनर्प्राप्त, अपडेट और सम्मिलित कर सकते हैं।

यह सरल प्रश्नों को बहुत सरल बनाता है लेकिन मेरी चिंता यह है कि जटिल जटिल प्रश्नों को जटिल बनाते हैं यदि असंभव नहीं है (उदाहरण के लिए यदि इंजन विशिष्ट कार्यों की आवश्यकता है)।

मेरे प्रश्न

विशेष रूप से CodeIgniters कार्यान्वयन के बारे में इस पैटर्न की अपनी राय क्या है?

क्या किसी अन्य परत में डेटाबेस को लपेटने के साथ कोई गति समस्या है?

क्या यह जटिल (जटिल) जटिल जटिलताओं को बनाने की कोशिश करते समय गन्दा हो जाता है?

नुकसान के तरीके क्या फायदे हैं?

उत्तर

35

ठीक है, आपके 99% प्रश्नों में से सबसे पहले सरल चयन/डालें/अपडेट/हटाएं। इस सक्रिय रिकॉर्ड के लिए महान है। यह सरल वाक्यविन्यास प्रदान करता है जिसे आसानी से बदला जा सकता है। अधिक जटिल प्रश्नों के लिए आपको केवल क्वेरी विधि का उपयोग करना चाहिए। इसके लिए क्या है।

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

तीसरा, मेरे अनुभव में प्रदर्शन नाटकीय रूप से प्रभावित नहीं है। बेशक यह संभवतः लगभग 10000 प्रति प्रश्न है। मुझे लगता है कि यह आपके लिए अतिरिक्त सुरक्षा और सैनिटी चेक के लिए पूरी तरह से स्वीकार्य है।

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

+2

+1 एआर के लाभ नकारात्मक से कहीं अधिक हैं ... –

+0

मैं इसके बारे में सोच रहा था। बहुत बढ़िया जवाब, धन्यवाद लड़का! – mdgrech

2

आपकी राय (sic) विशेष रूप से CodeIgniters कार्यान्वयन के बारे में इस पद्धति का क्या है?

सीआई के कार्यान्वयन के बारे में ज्यादा कुछ नहीं कह सकता है। आम तौर पर मैं कुछ भी सरल अनुप्रयोगों के लिए एआर से बचता हूं। यदि तालिका मेरी व्यावसायिक वस्तुओं के लिए 1: 1 से मेल नहीं खाती है, तो मैं एआर का उपयोग नहीं करता, क्योंकि यह एप्लिकेशन को मॉडलिंग को मुश्किल बना देगा। मुझे अपनी व्यावसायिक वस्तुओं के लिए दृढ़ता परत को जोड़ने के विचार को भी पसंद नहीं है। यह चिंताओं को अलग करने का उल्लंघन है। एक उत्पाद को क्यों पता होना चाहिए कि खुद को कैसे बचाया जाए? आगे पढ़ने: http://kore-nordmann.de/blog/why_active_record_sucks.html

संपादित@kemp की टिप्पणी के बाद, मैं सीआई उपयोगकर्ता गाइड को देखा देखने के लिए कैसे वे ए आर कार्यान्वित:

आप PoEAA में देख सकते हैं एक एआर एक वस्तु है जो किसी डेटाबेस तालिका या दृश्य में एक पंक्ति को लपेटता है, डेटाबेस पहुंच को समाहित करता है, और उस डेटा पर डोमेन तर्क जोड़ता है। यह नहीं है कि सीआई क्या करता है। यह सिर्फ प्रश्न बनाने के लिए एक एपीआई प्रदान करता है। मुझे समझ में आया कि एक मॉडल वर्ग है जो एआर बढ़ाता है और जिसका उपयोग व्यावसायिक वस्तुओं के निर्माण के लिए किया जा सकता है, लेकिन यह Row Data Gateway की तरह अधिक होगा। वैकल्पिक कार्यान्वयन के लिए PHPActiveRecord देखें।

क्या किसी अन्य परत में डेटाबेस को लपेटने के साथ कोई गति समस्या है?

जब भी आप किसी अन्य चीज़ में कुछ सार या लपेटते हैं, तो आप सुनिश्चित कर सकते हैं कि यह कच्चे होने पर प्रदर्शन प्रभाव के साथ आता है। सवाल यह है कि, यह आपके आवेदन के लिए स्वीकार्य है। बेंचमार्किंग का पता लगाने का एकमात्र तरीका है। इसके अलावा पढ़ना: https://stackoverflow.com/search?q=orm+slow

संपादित सीआई के सरल क्वेरी इमारत एपीआई के मामले में, मैं प्रदर्शन प्रभाव ग्रहण करता हूँ neglectable किया जाना है।प्रश्नों को इकट्ठा करने से डीबी एडाप्टर को कच्चे एसक्यूएल स्ट्रिंग को पास करने के बजाय तार्किक रूप से कुछ और समय लगेगा, लेकिन यह केवल माइक्रोसेकंड होना चाहिए। और जहां तक ​​मैंने इसे उपयोगकर्ता मार्गदर्शिका में देखा है, आप क्वेरी स्ट्रिंग को कैश भी कर सकते हैं। लेकिन जब संदेह में, बेंचमार्क।

क्या यह जटिल (जटिल) जटिल जटिलताओं को बनाने की कोशिश करते समय गन्दा हो जाता है?

आपके प्रश्नों पर निर्भर करता है। मैंने बहुत गन्दा एसक्यूएल प्रश्न देखा है। ओओ इंटरफ़ेस के माध्यम से व्यक्त किए जाने पर वे सुंदर नहीं होते हैं। एपीआई के आधार पर, आपको ऐसे प्रश्न मिल सकते हैं जिन्हें आप इसके माध्यम से व्यक्त नहीं कर पाएंगे। लेकिन फिर, यह आपके प्रश्नों पर निर्भर करता है।

नुकसान के तरीके क्या फायदे हैं?

केवल आप ही निर्णय ले सकते हैं। यदि यह आपके जीवन को प्रोग्रामर के रूप में आसान बनाता है, तो क्यों नहीं। यदि यह आपकी प्रोग्रामिंग आवश्यकताओं को फिट करता है, हाँ। रेल पर रूबी उस (एआर) अवधारणा पर भारी रूप से निर्माण कर रही है, इसलिए यह सब बुरा नहीं हो सकता है (हालांकि हम इसके बारे में भी बहस कर सकते हैं :))

+0

कोडइग्निटर का सक्रिय रिकॉर्ड क्लास ओआरएम नहीं है, यह लिखने (सरल) प्रश्नों का एक सुविधाजनक तरीका है। –

+0

@ केम्प फिर सीआई की एआर कक्षा एआर नहीं है। लेकिन जैसा कि मैंने शुरुआत में कहा था: सीआई के कार्यान्वयन के बारे में ज्यादा कुछ नहीं कह सकता। – Gordon

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

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