2009-02-28 15 views
8

में स्कीमा का उपयोग करने के लिए सर्वोत्तम अभ्यास I AdventureWorks डेटाबेस में देख सकते हैं कि अलग-अलग स्कीमा समूह तालिकाओं के लिए उपयोग किए जाते हैं। ऐसा क्यों किया जाता है (सुरक्षा, ...?) और क्या वहां सर्वोत्तम प्रथाएं मिल सकती हैं?SQL सर्वर (2008)

THX, Lieven Cardoen

+0

एसक्यूएल 2005 में स्कीमा का उपयोग करने के लिए सर्वोत्तम प्रथाओं के संभावित डुप्लिकेट?] (Http://stackoverflow.com/questions/452048/best-practices-for-using-chechemas-in-sql-2005) – raven

उत्तर

18

व्यापार खुफिया के एक प्रबंधक के रूप में, हम तर्कसंगत समूहन और प्रबंध सुरक्षा के लिए स्कीमा पर भरोसा करते हैं।

तार्किक संगठन

  1. हम एक सामान्य डेटाबेस है कि पूरी तरह से मंचन डेटा के लिए SSIS पैकेज से भरी हुई है इससे पहले कि हम अपने परिचालन डेटा की दुकान लोड (ODS: यहां कुछ मामले कैसे हम स्कीमा का उपयोग करने के रूप में कर रहे हैं)। इस डेटाबेस में, स्कीमा के अपवाद के साथ सभी ऑब्जेक्ट्स संरचना (टेबल नाम, कॉलम नाम, डेटा प्रकार, शून्यता, आदि) में उनके मूल स्रोत में इंडेंटिकल हैं। हम तालिका के मूल स्रोत सिस्टम को इंगित करने के लिए स्कीमा का उपयोग करते हैं। कुछ दुर्लभ उदाहरणों में, दो अलग-अलग डेटाबेस में समान नाम वाले टेबल होते हैं और स्कीमा हमें स्टेजिंग डेटाबेस में मूल नाम का उपयोग जारी रखने की अनुमति देती है।

  2. हमारे बीआई सर्वर पर प्रत्येक डेटाबेस में प्रत्येक टीम के सदस्य का test_username स्कीमा होता है। जब हम किसी डेटाबेस में परीक्षण ऑब्जेक्ट बनाते हैं, तो यह ऑब्जेक्ट बनाने वाले व्यक्ति को ट्रैक करना आसान बनाता है। यह टेस्ट ऑब्जेक्ट्स को बाद में शुद्ध करना बहुत आसान बनाता है क्योंकि हर कोई जानता है कि किसने बनाया है। स्पष्ट रूप से, सिर्फ यह जानकर कि हमने इसे सामान्य रूप से यह जानना पर्याप्त है कि इसे सुरक्षित रूप से हटाया जा सकता है, खासकर जब हम याद नहीं कर सकते कि हम कब या क्यों इसे बनाते हैं!

  3. हमारे डेटा नियंत्रक डेटाबेस में, हम रिपोर्ट, ईटीएल, और जेनेरिक संसाधनों के बीच विभिन्न प्रकार की प्रक्रियाओं को अलग करने के लिए स्कीमा पर भरोसा करते हैं।

  4. हमारे स्टार स्कीमा डेटा वेयरहाउस में, सभी ऑब्जेक्ट्स आयाम और तथ्य स्कीमा में विभाजित हैं।

  5. जब हम अन्य विभागीय सर्वरों पर डेटा दबाते हैं, तो हम सभी बीआई ऑब्जेक्ट्स को अपने सर्वर पर स्कीमा द्वि का उपयोग करते हैं। यह वास्तव में द्वि भार को जानने में आसान बनाता है और तालिका को बनाए रखता है भले ही यह हमारे सर्वर पर न हो। यदि लक्ष्य सर्वर 2008/2005 SQL सर्वर बॉक्स नहीं है, तो हम तालिका को bi_ के साथ उपसर्ग करते हैं।

जब यह यह करने के लिए नीचे हो जाता है, हम तार्किक संगठन कभी भी हम एक वस्तु के लिए एक उपसर्ग या प्रत्यय संलग्न है | स्कीमा के अभाव में यह व्यवस्थित करने में मदद करने के लिए के लिए स्कीमा का उपयोग करें। ऐसा कहकर, ऐसे कुछ उदाहरण हैं जहां हम अपने बीआई सर्वर पर स्कीमा का उपयोग नहीं करते हैं। हमारे वर्किंग डीबी में, सबकुछ डीबीओ है। हमारे वर्किंग डीबी का उपयोग अस्थायी तालिकाओं को बनाने के लिए टेम्पपडीबी की तरह किया जाता है, लेकिन ये सारणी अस्थायी सारणी हैं जिन्हें हम जानते हैं कि हम हर बार एक ईटीएल प्रक्रिया चलाते हैं। वर्किंग डीबी की विशेष संपत्ति यह है कि हम कभी डेटाबेस का बैकअप नहीं लेते हैं और डेटाबेस का उपयोग करने वाली सभी ईटीएल प्रक्रियाओं को तालिका की अनुपस्थिति में स्क्रैच से अपनी ऑब्जेक्ट्स को फिर से बनाने में सक्षम होना चाहिए। इस उदाहरण में, हमने स्कीमा का उपयोग करके महसूस किया कि कोई संगठनात्मक मूल्य नहीं जोड़ा गया क्योंकि हम वास्तव में अपनी अस्थायी ईटीएल प्रक्रिया के बाहर वस्तुओं का उपयोग नहीं करते हैं।

सुरक्षा

  1. जब से हम एक द्वि समूह रहे हैं, हम आम तौर पर निर्माण और हमारे अपने अनुप्रयोगों का समर्थन नहीं करते। हम लगभग अन्य लोगों के अनुप्रयोगों का लगभग उपयोग करते हैं और अपने बैक-एंड डेटाबेस से डेटा को हमारे सर्वर पर लाते हैं। हालांकि, हमारे पास bi_applications नामक एक डेटाबेस है जो विभिन्न छोटे सीआरयूडी अनुप्रयोगों के लिए बैक-एंड है।ये एप्लिकेशन आमतौर पर डेटा एंट्री फॉर्म होते हैं जिन्हें हम व्यवसाय को प्रदान करते हैं ताकि वे डेटा को कैप्चर कर सकें जिसे हमें अन्यथा बीआई में बनाए रखना होगा। यह डेटा प्राप्त करने का एक तरीका है जो उत्पादन अनुप्रयोगों में बीआई में होना चाहिए, जबकि हम भावी विकास सूचियों में धूल इकट्ठा करने के लिए हमारी कम प्राथमिकता वाले अनुप्रयोगों में वृद्धि के लिए प्रतीक्षा करते हैं। प्रत्येक एप्लिकेशन में एक अलग स्कीमा होती है और अंतर्निहित तालिकाओं को अपडेट करने के लिए उपयोग किए जाने वाले एप्लिकेशन खाते में केवल संबंधित स्कीमा की ऑब्जेक्ट तक पहुंच होती है। यह अलग-अलग अनुप्रयोगों को समझना, सुरक्षित और बनाए रखना वाकई आसान बनाता है।

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

संक्षेप में, हम सुरक्षा उद्देश्यों के लिए स्कीमा का उपयोग करें और जब हम शायद अपने स्वयं के डेटाबेस में बाहर की वस्तुओं को अलग करने पर विचार किया है | हम अपने डेटाबेस का उपयोग करने के लिए बीआई के बाहर एक आवेदन या उपयोगकर्ता उम्मीद है।

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