2008-11-01 15 views
12

में फ़ंक्शंस आमतौर पर वेबसर्वर पर या डेटाबेस में फ़ंक्शन चलाने के लिए बेहतर होता है?mysql या php

जैसे: उदाहरण में सम्मिलित करें (हैश) मूल्य (MD5 ('हैलो'))
या
सम्मिलित उदाहरण में (हैश) मूल्य ('5d41402abc4b2a76b9719d911017c592')

ठीक है, ताकि एक वास्तव में है मामूली उदाहरण, लेकिन जब कोई साइट एकाधिक वेबसाइटों या डेटाबेस सर्वर पर बढ़ती है तो स्केलेबिलिटी के लिए, "काम करने" के लिए सबसे अच्छा कहां है?

उत्तर

12

मैं डेटाबेस को केवल सामानों को बनाए रखने के लिए जगह के रूप में सोचने की कोशिश करता हूं, और सभी अमूर्त कोड को कहीं और डालता हूं। डाटाबेस एक्सप्रेशन उन कार्यों को जोड़ने के बिना पहले ही जटिल हैं।

इसके अलावा, क्वेरी अनुकूलक कार्यों के साथ किसी भी भाव ट्रिप हो जाएगा अगर तुम कभी कुछ ऐसा करना चाहते पहुंचना चाहिए "का चयन करें .... कहां MD5 (xxx) = ..."

और डेटाबेस कार्यों सामान्य रूप से बहुत पोर्टेबल नहीं हैं।

2

व्यक्तिगत रूप से, मैं डेटाबेस में सरल (न्यूनतम तक) को सम्मिलित करने, अद्यतन करने, हटाने के साथ कोड में उपयोग किए जा सकने वाले बहुत अधिक फ़ंक्शन के बिना हटाने की कोशिश करता हूं। संग्रहीत प्रक्रिया एक जैसी है, केवल उस कार्य को शामिल करती है जो दृढ़ता डेटा के बहुत करीब है और व्यवसाय तर्क से संबंधित नहीं है।

मैं एमडी 5 बाहर रखूंगा। यह डेटाबेस के स्टोरेज स्कोप के बाहर इस "डेटा मैनिपुलेशन" को पूरा करने देगा।

लेकिन, अपने उदाहरण काफी "आसान" है और मैं इसे इसके अंदर के लिए बुरा है नहीं लगता है ...

0

मुझे लगता है कि समय के सबसे अधिक है, तो आप करने के लिए डेटा हेरफेर छोड़ना चाहते करने जा रहे हैं वेबसर्वर लेकिन, यदि आप टेबल, रिलेशनशिप इत्यादि के संबंध में डेटाबेस को संसाधित करना चाहते हैं, तो डीबी के लिए जाएं।

मैं व्यक्तिगत रूप से अपने MySQL सर्वर को 5.0 पर अपग्रेड करने के लिए अपनी कंपनी लॉबिंग कर रहा हूं ताकि मैं प्रक्रियाओं का लाभ उठाना शुरू कर सकूं (जो कि हम दो साइटों को मार रहे हैं)।

3

जब भी इसकी गणना की जाती है, तो मैं अपनी स्क्रिप्टिंग भाषा में फ़ंक्शंस का उपयोग करने का प्रयास करता हूं। मैं अपने एसक्यूएल फ़ंक्शन उपयोग को कम से कम कई कारणों से कम रखता हूं।

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

माध्यमिक कारण यह है कि मुझे अपने एसक्यूएल कोड को यथासंभव पोर्टेबल होना पसंद है। मैं भी को SQL के विभिन्न स्वादों की गिनती करने के लिए प्रयास नहीं करना चाहता, इसलिए मैं अपने SQL कोड से कार्यों (विशेष रूप से गैर-मानक एक्सटेंशन) को रखने की कोशिश करता हूं, SUM या MIN/MAX जैसी चीज़ों को छोड़कर।

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

2

डेटा अखंडता को बनाए रखने और संयोजित करने के माध्यम से अपने डेटाबेस का उपयोग करें। और इसके बाहर व्यापार तर्क छोड़ दें।

यदि आप अपने डेटाबेस में व्यावसायिक तर्क डालते हैं, तो आप भविष्य में प्रबंधन और प्रबंधन के लिए इसे और अधिक जटिल बना रहे हैं।

0

अभी तक अन्य उत्तरों की तरह, मैं एक ही स्थान पर सभी व्यावसायिक तर्क रखना पसंद करता हूं। अर्थात्, मेरी आवेदन भाषा। (अधिक विशेष रूप से, ऑब्जेक्ट मॉडल में, यदि कोई मौजूद है, लेकिन सभी कोड ओओ नहीं है।)

हालांकि, यदि आप इनलाइन एसक्यूएल या संग्रहीत प्रक्रियाओं का उपयोग करने के बारे में (my) sql टैग किए गए प्रश्नों के लिए StackOverflow के आसपास देखते हैं , आप पाएंगे कि उन लोगों का जवाब देने वाले अधिकांश लोग सबसे छोटी प्रश्नों के लिए भी जब भी और चालाक संभव हो, संग्रहित प्रोसेस का उपयोग करने के पक्ष में हैं। आप अन्य दृष्टिकोणों के पक्ष में कुछ तर्क देखने के लिए उन कुछ प्रश्नों को देखना चाह सकते हैं।