singleton के रूप में एक PHP डेटाबेस वर्ग का उपयोग करने के नुकसान क्या हैं?एक PHP डेटाबेस क्लास को सिंगलटन के रूप में उपयोग करने के नुकसान क्या हैं?
उत्तर
यदि आपकी डीबी कक्षा केवल एक डेटाबेस से कनेक्ट करने के लिए बनाई गई है, तो आपको समस्या होगी जब आपके पास एक स्क्रिप्ट है जिसे 2 दो अलग-अलग डेटाबेस से कनेक्ट करने की आवश्यकता है। हालांकि, आप एकाधिक सर्वर कॉन्फ़िगरेशन स्वीकार करने के लिए सिंगलटन क्लास बना सकते हैं, और फिर उन्हें सिंगलटन के भीतर प्रबंधित कर सकते हैं।
अन्यथा, एक सिंगलटन के रूप में डेटाबेस क्लास को डिज़ाइन करना एक ऐसा अभ्यास है जो बहुत समझ में आता है, क्योंकि आप किसी भी समय किसी स्क्रिप्ट पर कितने कनेक्शन बना रहे हैं, इस पर कड़े नियंत्रण बनाए रख सकते हैं।
नुकसान किसी भी वर्ग सिंगलटन पैटर्न का उपयोग करता है के लिए के रूप में ही कर रहे हैं:
यह यह मुश्किल इसके खिलाफ इकाई परीक्षण चलाने के लिए बनाता है और यह भी यह असंभव कई वाला राज्य बन गया डेटाबेस कनेक्शन जैसा कि हम सभी जानते हैं, वैश्विक चरों में बहुत सी कमीएं हैं और सिंगलेट्स में कोई अपवाद नहीं है, केवल वे एक "दोस्ताना" वैश्विक चर हैं।
मुझे इसके बारे में एक बहुत अच्छा article और पुराना SO question मिला।
मुझे लगता है कि आपका मतलब प्रति पृष्ठ "एकाधिक डेटाबेस कनेक्शन" है, है ना? – greg0ire
हां यह सच है। यदि सिंगलटन का उपयोग नहीं किया जाता है, तो मैं उस एप्लिकेशन के साथ समाप्त होता हूं, जिसमें मैं हर समय कम से कम 4 डेटाबेस कनेक्शन विकसित कर रहा हूं। मैं बस सोच रहा था कि कम समस्याग्रस्त क्या है ... – Ricardo
@greg: कम से कम क्लासिक 'getInstance() 'सिंगलटन के साथ, Yup। हो सकता है कि पोस्टर डेटाबेस कनेक्शन पूल की तरह कुछ खोज रहा हो? –
आप दो डेटाबेस कनेक्शन का उपयोग नहीं कर सकते हैं। आप इसे चाहते हैं क्योंकि:
- आपके पास दो डेटाबेस हैं।
- आप लेनदेन के भीतर कुछ करना चाहते हैं जब एक और लेनदेन पहले से ही 'वर्तमान' डेटाबेस कनेक्शन पर चल रहा है।
- आप अपनी इकाई में कई नकली डेटाबेस उदाहरणों का उपयोग करना चाहते परीक्षण
- 1. सिंगलटन PHP - डेटाबेस हैंडलर
- 2. फ़ाइलों को दो प्रक्रियाओं के बीच संवाद करने के साधन के रूप में उपयोग करने के सभी नुकसान क्या हैं?
- 3. sql_variant का उपयोग करने के नुकसान क्या हैं?
- 4. SQLDataReader का उपयोग करने के कुछ लाभ/नुकसान क्या हैं?
- 5. मेवेन का उपयोग करने के फायदे/नुकसान क्या हैं?
- 6. ओपनआईडी का उपयोग करने के फायदे और नुकसान क्या हैं?
- 7. एआरसी का उपयोग करने के फायदे और नुकसान क्या हैं?
- 8. सिंगलटन क्लास
- 9. क्या यह एक सिंगलटन के रूप में requJS मॉड्यूल का उपयोग करने के लिए एक बुरा अभ्यास है?
- 10. कई सूचकांक होने के नुकसान क्या हैं?
- 11. डेटाबेस में देखने का उपयोग करने के क्या फायदे हैं?
- 12. php सिंगलटन डेटाबेस कनेक्शन, क्या यह कोड खराब अभ्यास है?
- 13. नेटवर्क पर डर्बी के एम्बेडेड कनेक्शन के नुकसान क्या हैं?
- 14. आईफोन के लिए iAds प्रदर्शित करने के लिए सिंगलटन क्लास
- 15. क्या हम JSON को डेटाबेस के रूप में उपयोग कर सकते हैं?
- 16. एकाधिक डेटाबेस वाले सिंगलटन
- 17. एच 264 के नुकसान क्या हैं?
- 18. Basic4Android का उपयोग करने के नुकसान?
- 19. सी ++: सिंगलटन क्लास
- 20. AF_UNSPEC का उपयोग करने के नुकसान/जोखिम क्या होंगे?
- 21. क्या आपके एपडेल्गेट को अपने सिंगलटन के रूप में उपयोग करना एक बुरा अभ्यास है?
- 22. जावा में मैप कुंजी के रूप में मनमानी वस्तुओं का उपयोग करने के लिए कोई नुकसान?
- 23. पीडीओ के नुकसान (PHP डेटा ऑब्जेक्ट्स)
- 24. आम विकास के मुद्दे, नुकसान और सुझाव क्या हैं?
- 25. क्या डेटाबेस दर्शक उपयोग करने के लिए?
- 26. एंड्रॉइड: एप्लिकेशन सिंगलटन क्लास
- 27. PHP के मूल गेटटेक्स्ट का उपयोग स्वयं निर्माण के विरुद्ध करने या उपयोग करने के कारण क्या हैं?
- 28. ASP.Net के साथ घोषणात्मक बनाम प्रोग्रामेटिक विधि का उपयोग करने के लाभ/नुकसान क्या हैं?
- 29. एक डेटाबेस का उपयोग करने के लिए पेशेवरों/विपक्ष के सर्वोत्तम अभ्यास क्या हैं?
- 30. एंड्रॉइड में सिंगलटन के रूप में फ्रैगमेंट
आप विभिन्न डेटाबेस से निपटने के लिए है, तो "रजिस्ट्री" डिजाइन पैटर्न (जो एक सिंगलटन साहचर्य सरणी तरह दिखता है) का उपयोग करें और उपयोग करें जब रजिस्ट्री कुंजी के रूप में कनेक्शन डीएसएन। – greg0ire
रजिस्ट्री पैटर्न एक भयानक समाधान है। बस एक मल्टीटन का उपयोग करें और कुंजी/मूल्य जोड़े प्रदान करें (जहां कुंजी कनेक्शन का नाम है, उदाहरण के लिए "कनेक्शन_1" और मान कनेक्ट जानकारी (उपयोगकर्ता नाम/पास, होस्ट, डेटाबेस नाम, आदि) है और आपके सभी मल्टीटन के भीतर संग्रहीत कनेक्शन ऑब्जेक्ट्स। रजिस्ट्री ऑब्जेक्ट्स में वास्तव में कहीं भी जगह नहीं है क्योंकि वे गौरवशाली वैश्विक चर से थोड़ा अधिक हैं। – Adrian
@ एड्रियन, मैं पूरी तरह से सहमत हूं। एक सिंगलटन/मल्टीटन पैटर्न का उपयोग करने का पूरा बिंदु, हर कीमत पर, एक ही स्क्रिप्ट के भीतर एक दूसरा डीबी कनेक्शन बनाने से बचता है। रजिस्ट्री पैटर्न बस यहां मौजूद किसी भी मुद्दे को हल करने के लिए प्रतीत नहीं होता है। –