2009-08-13 9 views
13

मैं .dbo उपसर्ग से निपटने के लिए एक निष्पादक डिफ़ॉल्ट नीति की तलाश में हूं।डीबीओ। डेटाबेस ऑब्जेक्ट नामों में उपसर्ग, क्या मैं इसे अनदेखा कर सकता हूं?

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

संग्रहित प्रो संकलन ताले के साथ प्रदर्शन समस्या के अलावा SQLqueries और संग्रहित प्रक्रियाओं में टाइपिंग ".dbo" को छोड़ने का नकारात्मक पक्ष है?

आगे की पृष्ठभूमि: मेरा सभी विकास एक मध्यम स्तर के सेवा खाते के आधार पर एकीकृत सुरक्षा के आधार पर वेब मध्य-स्तर है।

उत्तर

12

[dbo]। [XXX]

एसक्यूएल सर्वर इंजन हमेशा की तरह, टुकड़ों में क्वेरी को पार्स यदि आप उपसर्ग का उपयोग नहीं करते निश्चित रूप से इसे अलग उपयोगकर्ताओं के साथ इसी तरह के नाम में वस्तु के लिए खोज जाने से पहले इसे इस्तेमाल करता है [ dbo]। मैं सुझाव दूंगा कि आप प्रदर्शन ग्लिच से बचने के लिए न केवल सर्वोत्तम प्रथाओं को पूरा करने के लिए उपसर्ग तंत्र का पालन करें और कोड स्केलेबल बनाएं।

मैं मैं अपने प्रश्न का उत्तर नहीं पता है, लेकिन ये सिर्फ मेरी जानकारी शेयर कर रहे हैं

+0

ठीक है, मुझे लगता है कि मुझे मिल गया। हालांकि अब मैं (1) "डीबीओ" के बीच संबंधों के बारे में उलझन में हूं। स्कीमा नेमस्पेस तंत्र के रूप में, (2) SQL सर्वर डेटाबेस स्वामी भूमिका और (3) उपयोगकर्ता जो स्कीमा उपसर्गों और/या डेटाबेस के सदस्य हो सकते हैं, मालिक की भूमिका के रूप में मानचित्र कर सकते हैं। –

+0

लेकिन संदर्भ के अनुसार यदि कोई समूह/भूमिका/उपयोगकर्ता किसी ऑब्जेक्ट का मालिक है तो उसके पास कोई कारण नहीं है कि वह डब्बे के सदस्य बनें। वे केवल स्कीमा बनाते हैं जब उन्हें ऑब्जेक्ट की अनुमतियों को विविधता देने की आवश्यकता होती है। उम्मीद है कि यह मदद की। –

+0

मुझे नहीं लगता कि यह सबसे अच्छा अभ्यास है। कुछ होस्टिंग प्रदाता कुछ डॉट में डबो बदलते हैं .. तो क्या? सभी डब्बो को अपने बेवकूफ उपसर्ग में बदलें। कौन जानता है .. लेकिन वे इसे करते हैं और हम इसे बदल नहीं सकते; वाह। – ppumkin

9

अधिकांश समय आप इसे अनदेखा कर सकते हैं। कभी-कभी आपको इसे टाइप करना होगा। कभी कभी आप बस एक अतिरिक्त टाइप कर सकते हैं तो आप इसे टाइप करने के लिए है, जब '।':

SELECT * FROM [LinkedServer].[Database]..[Table] 

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

2

"हालांकि मुझे एमएस आधारित विकास के पिछले 8 वर्षों में डीबीओ टाइपिंग छोड़ दिया गया है और इसके कार्य को अनदेखा कर रहा है।"

यह आपका उत्तर है। यदि आपका डीबी ठीक प्रदर्शन कर रहा है तो आप ठीक हैं। सर्वोत्तम अभ्यास आपके वास्तविक सिस्टम पर वास्तविक परीक्षण को प्रतिस्थापित नहीं करते हैं। यदि आपका प्रदर्शन ठीक है और रखरखाव ठीक है, तो आपका समय कहीं और बेहतर खर्च होता है जहां आप अपने प्रोवर्बियल हिरन के लिए बेहतर धमाका प्राप्त कर सकते हैं।

+3

वाह ... मैं और असहमत नहीं हो सकता ... सर्वोत्तम अभ्यास शब्द क्या कहते हैं। जबकि आप सही हैं कि आप "इसे दूर कर सकते हैं" यह अभी भी मैला शौकिया प्रोग्रामिंग है। – PseudoToad

1

ओरेकल दुनिया में काम करने के बाद, मैं स्कीमा घोषणा को छोड़ने के खिलाफ सलाह दूंगा। अब याद रखें कि 7.0 के बाद SQL सर्वर संस्करण प्रति डेटाबेस एकाधिक स्कीमा का समर्थन करते हैं - यह सुनिश्चित करने के लिए कि आप उचित तालिकाओं को पकड़ रहे हैं, उनके बीच अंतर करना महत्वपूर्ण है।

यदि आप यह सुनिश्चित कर सकते हैं कि आपके पास प्रति डेटाबेस दो अलग-अलग स्कीमा नामस्थान नहीं होंगे, तो आप इसे अनदेखा कर सकते हैं। डीबीओ उपसर्ग को स्वयं प्रदर्शन को प्रभावित करने के लिए कुछ भी नहीं करना चाहिए - पार्सिंग एसक्यूएल क्वेरी का इतना छोटा हिस्सा महत्वहीन है।

3

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

यदि आप अपने उत्पाद को पैकेज और बेचते हैं, तो मैं दृढ़ता से आपके परिधानियों के लिए स्कीमा का उपयोग करने की सलाह दूंगा। यदि आप एक विशेष दुकान के लिए विकसित होते हैं, तो चिंता का इतना अधिक नहीं है।

+0

यह डीबीओ का उपयोग * नहीं * के लिए बहस करता है। अपने सभी कोड में उपसर्ग? यदि आप डीबीओ छोड़ देते हैं। उपसर्ग, तो आपका आवेदन आसानी से एक अलग स्कीमा के तहत चलाया जा सकता है। यदि आपके पास सभी तालिका नाम dbo.x के रूप में स्पष्ट रूप से योग्य हैं तो आप बिना किसी खोज के एक अलग स्कीमा में बदल सकते हैं और अपने पूरे कोडबेस के माध्यम से प्रतिस्थापित कर सकते हैं। तो यदि दो अलग-अलग अनुप्रयोग दोनों स्पष्ट डीबीओ का उपयोग करते हैं। उपसर्ग, उन्हें नाम संघर्ष के जोखिम के बिना तरफ से तैनात नहीं किया जा सकता है। –

3

हाँ आप अनदेखा कर सकते हैं - अधिकांश भाग के लिए - अगर तुम कभी (डिफ़ॉल्ट) के बाहर कुछ भी बना सकते हैं कभी नहीं "dbo" स्कीमा ।एक ही स्थान पर आप इसे नजरअंदाज नहीं कर सकते जब एक संग्रहीत फ़ंक्शन को कॉल है - हमेशा "दो भाग" अंकन है नहीं है:

select * from dbo.myFunc 

हालांकि, यह एक सबसे अच्छा अभ्यास हमेशा "dbo उपयोग करने के लिए माना जाता है। " उपसर्ग (या अन्य स्कीमा उपसर्ग, यदि आपके डेटाबेस में कई स्कीमा हैं)।

मार्क

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