ईटीएल: 200 टेबल से निकालना - एसएसआईएस डेटा प्रवाह या कस्टम टी-एसक्यूएल?


12

मेरे विश्लेषण के आधार पर, हमारे डेटा वेयरहाउस के लिए एक पूर्ण आयामी मॉडल को 200 से अधिक स्रोत तालिकाओं से निष्कर्षण की आवश्यकता होगी। इन तालिकाओं में से कुछ वृद्धिशील भार के हिस्से के रूप में निकाले जाएंगे और अन्य पूर्ण भार होंगे।

ध्यान देने के लिए, हमारे पास लगभग 225 स्रोत डेटाबेस एक ही स्कीमा के साथ हैं।

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

एक स्थिरता के दृष्टिकोण से, यह मुझे एक बड़ी समस्या के रूप में प्रभावित करता है। अगर मुझे निष्कर्षण कोड में किसी प्रकार का व्यापक परिवर्तन करने की आवश्यकता है, तो मुझे 200 विभिन्न डेटा प्रवाह को संशोधित करना होगा।

एक वैकल्पिक विकल्प, मैंने एक छोटी सी स्क्रिप्ट लिखी है जो स्रोत डेटाबेस, तालिका के नाम और कॉलम पढ़ता है जो मैं मेटाडेटा तालिकाओं के एक सेट से निकालना चाहता हूं। कोड कई छोरों में चलता है और एक जुड़े सर्वर और OPENQUERY के माध्यम से स्रोत तालिकाओं से निकालने के लिए गतिशील SQL का उपयोग करता है।

मेरे परीक्षणों के आधार पर, यह अभी भी उतना तेज़ नहीं है, जितना कि एक OLEDB स्रोत और गंतव्य के साथ SSIS डेटा प्रवाह का उपयोग करना। इसलिए मैं सोच रहा हूं कि मेरे पास किस तरह के विकल्प हैं। अब तक के विचारों में शामिल हैं:

  1. साधारण डेटा प्रवाह के साथ SSIS पैकेजों को प्रोग्रामेटिक रूप से बनाने के लिए EZAPI का उपयोग करना । निकालने के लिए टेबल और कॉलम पहले उल्लेखित समान मेटाडेटा टेबल से आएंगे।
  2. 3 पार्टी सॉफ्टवेयर खरीद (गतिशील डेटा प्रवाह घटक)

इसके लिए सबसे अच्छा तरीका क्या है? जब यह .NET प्रोग्रामिंग की बात आती है तो मैं एक शुरुआती हूं, इसलिए मूल बातें के साथ रैंप करने के लिए आवश्यक समय भी एक चिंता का विषय है।


1
चूंकि सभी 225 डेटाबेस में एक ही स्कीमा है, क्या यह संभव है कि सभी 225 डेटाबेस से डेटा को एकजुट करने और उस पर एसएसआईएस पैकेज को इंगित करने के लिए? हालांकि यह एक क्लोबिंग टूल की तरह लग सकता है और जरूरी नहीं कि यह जादुई रूप से प्रदर्शन करेगा, लेकिन 225 एसएसआईएस पैकेजों को प्रबंधित करना बहुत आसान लगता है (भले ही आप वहां कुछ स्वचालन का प्रबंधन करते हों)। तुम भी आधे रास्ते जाने के लिए और डेटाबेस के प्रत्येक सेट के लिए एक दृश्य बना सकते हैं, जैसे 1-25 डेटाबेस, 26-50, 51-75, आदि
हारून बर्ट्रेंड

डेटाबेस कई सर्वरों पर रहते हैं जो मुझे लगता है कि यह अधिक जटिल बनाता है। मैंने वास्तव में 225 डेटाबेस के खिलाफ अपने विकास बॉक्स पर विभिन्न तालिकाओं के दृश्य बनाने की कोशिश की है और डेटा को पढ़ना बहुत धीमा था।
8kb 14/12

1
वैसे आप केवल एक ही सर्वर पर संदर्भ डेटाबेस के लिए एक दृश्य चाहते हैं। और फिर, सभी 225 तालिकाओं के खिलाफ एक भी दृश्य जादुई प्रदर्शन नहीं करने वाला है, लेकिन मुझे लगता है कि आप अभी भी विभाजित और जीत सकते हैं और 225 डेटा प्रवाह नहीं हैं।
हारून बर्ट्रेंड

जवाबों:


12

मैं एक पैकेज में 200 डेटा प्रवाह नहीं करना चाहता। जिस समय इसे खोलने और मान्य करने में समय लगेगा, वह आपको आपके समय से पहले बूढ़ा कर देगा।

EzAPI मजेदार है, लेकिन अगर आप .NET और SSIS के लिए नए हैं , तो हे नर्क, आप ऐसा नहीं चाहते हैं। मुझे लगता है कि आप SSIS ऑब्जेक्ट मॉडल के बारे में सीखने में और अधिक समय बिताएंगे और संभवतः COM के साथ काम करने से वास्तव में काम हो जाएगा।

जब से मैं आलसी हूँ, मैं BIML को एक मुफ्त विकल्प के रूप में प्लग करूँगा जो आपने सूचीबद्ध नहीं किया था। SO /programming/13809491/generating-several-similar-ssis-packages-file-data-source-to-db/13809494#13809604 पर एक उत्तर से

  • बिमल एक दिलचस्प जानवर है। वैरेंस आपको मिस्ट का लाइसेंस बेचकर खुश होगा लेकिन इसकी जरूरत नहीं है। आपको केवल BIDSHelper की आवश्यकता होगी और फिर BimlScript के माध्यम से ब्राउज़ करें और एक ऐसी रेसिपी की तलाश करें जो आपकी आवश्यकताओं का अनुमान लगाती हो । आपके पास एक बार, BIDSHelper और whoosh में संवेदी संवेदनशील मेनू बटन पर क्लिक करें, यह संकुल बनाता है।

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

या यदि आपने फ्रेमवर्क के साथ पर्याप्त परिचितता प्राप्त की है, तो ईज़ीएपीआई जैसे कुछ का उपयोग करें और सभी टूटे हुए सामान को ठीक करने के लिए। हेक, चूंकि आपने इसे 2005 के रूप में टैग किया है, आप PacMan को एक कोशिश दे सकते हैं यदि आपको मौजूदा पैकेजों में बड़े पैमाने पर संशोधन करने की आवश्यकता है।

SSIS डिजाइन विचार

सामान्यतया, मैं अपने पैकेज को एक ही कार्य (लोड बिक्री डेटा) को हल करने पर ध्यान केंद्रित करने की कोशिश करता हूं। यदि इसके लिए 2 डेटा प्रवाह की आवश्यकता होती है, तो यह हो। मुझे जो विरासत से नफरत है वह आयात निर्यात विज़ार्ड से एक पैकेज में कई संयुक्त राष्ट्र से संबंधित डेटा प्रवाह के साथ एक पैकेज है। उन्हें ऐसी चीज़ में शामिल करें जो एक बहुत ही विशिष्ट समस्या को हल करती है। यह भविष्य में वृद्धि को कम जोखिम भरा बनाता है क्योंकि सतह क्षेत्र कम हो जाता है। एक अतिरिक्त लाभ यह है कि मैं लोडिंग पर काम कर सकता DimProductsहूं, जबकि मेरा मिनियन लोडिंग SnowflakeFromHellपैकेज के साथ काम कर रहा है ।

फिर बच्चे के काम के प्रवाह को ऑर्केस्ट्रेट करने के लिए मास्टर पैकेज का उपयोग करें। मुझे पता है कि आप 2005 में हैं, लेकिन SQL Server 2012 की SSIS की रिलीज़ बिल्ली की पजामा है। मुझे प्रोजेक्ट परिनियोजन मॉडल और पैकेज के बीच की कड़ी एकीकरण की अनुमति है।

TSQL बनाम SSIS (मेरी कहानी)

शुद्ध TSQL दृष्टिकोण के लिए, पिछली नौकरी में, उन्होंने अपने सभी Informix डेटा को SQL सर्वर में दोहराने के लिए 73 कदम की नौकरी का उपयोग किया था। इसमें आमतौर पर 9 घंटे लगते थे लेकिन यह 12 या इससे अधिक तक फैल सकता था। जब उन्होंने एक नया SAN खरीदा, तो यह लगभग 7+ घंटे तक कम हो गया। एक ही तार्किक प्रक्रिया, SSIS में फिर से लिखा गया एक सुसंगत उप 2 घंटे था। उस समय के ड्राइविंग में आसानी से सबसे बड़ा कारक "फ्री" समानांतरण था जो हमें SSIS का उपयोग करके मिला। एजेंट नौकरी ने उन सभी कार्यों को धारावाहिक में चलाया। मास्टर पैकेज ने मूल रूप से तालिकाओं को प्रसंस्करण इकाइयों ("रन प्रतिकृति तालिका 1 के क्रमबद्ध कार्यों के 5 समानांतर सेट", तालिका 2, आदि) में विभाजित किया, जहां मैंने बाल्टी को काम के बराबर आकार की इकाइयों में विभाजित करने की कोशिश की। इसने 60 या तो लुकअप रेफरेंस टेबल को जल्दी से आबाद करने की अनुमति दी और फिर प्रसंस्करण धीमा हो गया क्योंकि यह "

SSIS का उपयोग करते हुए मेरे लिए अन्य प्लस यह है कि मुझे "फ्री" कॉन्फ़िगरेशन मिलता है, वर्ग डेटा के लिए .NET लाइब्रेरी में लॉगिंग और एक्सेस करने के लिए मुझे एक गोल छेद में सेंकना चाहिए। मुझे लगता है कि जानवर की चित्रमय प्रकृति के आधार पर एक शुद्ध TSQL दृष्टिकोण की तुलना में SSIS पैकेज को बनाए रखना (रखरखाव बंद करना) आसान हो सकता है।

हमेशा की तरह, आपके माईलेज़ भिन्न हो सकते हैं।


BIML बहुत दिलचस्प लग रहा है। मैं प्रत्येक डेटा प्रवाह को एक अलग पैकेज के रूप में बनाने और फिर उन्हें मास्टर पैकेज के माध्यम से कॉल करने पर विचार कर रहा था। क्या आपको लगता है कि यह कोई बेहतर है? इसके अलावा, उत्सुक अगर आप टी-एसक्यूएल दृष्टिकोण पर एक राय है। यह धीमा है लेकिन मैंने इसका परीक्षण किया है और यह काम करेगा।
8kb

मैंने डिजाइन और शुद्ध tsql ETL दृष्टिकोण
बिलिंक

0

आपने बताया कि आपके पास 200 सोर्स टेबल और 225 डेटाबेस हैं। मैं मान रहा हूं कि 200 स्रोत तालिकाओं में सभी 225 डेटाबेस से सभी तालिकाओं की गणना है (कारण यदि आपके पास प्रत्येक डेटाबेस में 200 तालिकाएं थीं जो आपकी कुल तालिका संख्या 45000 तक डाल देंगी)। आपने यह भी उल्लेख किया कि डेटाबेस का स्कीमा 225 डेटाबेस के लिए समान है।

आप पहले सिर्फ 1 डेटाबेस के लिए SSIS पैकेज का निर्माण कर सकते हैं और फिर जब आप अपनी नौकरियों का समय निर्धारित करेंगे तो आप पैकेज कॉन्फ़िगरेशन का उपयोग करके डेटाबेस कनेक्शन स्ट्रिंग को बदल सकते हैं (यदि आपका SQL 2005 है, तो आप पैकेज परिनियोजन मॉडल का उपयोग करेंगे)। जैसा कि पहले के जवाबों में उल्लेख किया गया है कि एसक्यूएल 2012 में प्रोजेक्ट परिनियोजन मॉडल का उपयोग करके अपने paremeters को कॉन्फ़िगर करने के नए तरीके हैं।

आप SSIS के साथ पैकेज विन्यास के बारे में अधिक जानकारी यहाँ से प्राप्त कर सकते हैं। http://www.sql-server-performance.com/2007/package-configuration-2005/

आप यहां से परियोजना के मापदंडों का उपयोग करने पर अधिक जानकारी प्राप्त कर सकते हैं, /programming/15206184/how-to-configure-ssis-2012-project-to-run-under-different-invest-configurat

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.