SQL सर्वर में प्रोग्रामेटिक ETL के लिए एक मानक भाषा / इंटरफ़ेस है?


10

मैं वर्तमान में अपने डेटा वेयरहाउस के लिए ETL बनाने की प्रक्रिया में हूं। हम SSIS 2008 का उपयोग कर रहे हैं, लेकिन हम मुद्दों पर चल रहे हैं, जिनमें से सबसे बड़ा घटक पुन: उपयोग करने में कठिनाई है। हमारे पास प्रत्येक तालिका के लिए अलग-अलग पैकेज हैं और प्रत्येक पैकेज एक मूल पैकेज से कई चर का इनपुट लेता है। जब हम इन इनपुट चरों में परिवर्तन करते हैं, तो हमें प्रत्येक पैकेज में जाने की आवश्यकता होती है (हमारे पास 15 या अभी है, लेकिन यह संख्या काफी बढ़ने वाली है) और उन परिवर्तनों से निपटने के लिए पैकेज को संशोधित करना होगा। हमारे अर्क, खराब लॉगिंग क्षमताओं आदि के लिए मनमाने ढंग से एसक्यूएल चलाने में असमर्थता सहित अन्य मुद्दे भी हैं।

यह पूरी प्रक्रिया और अधिक मजबूत होगी यदि कोई कोड में हमारे ईटीएल को विकसित करने का एक तरीका था, कोड का पुन: उपयोग, सामान्य पुस्तकालयों, बेहतर इकाई परीक्षणों आदि को सक्षम करना, क्या एसक्यूएल सर्वर के लिए एक वास्तविक मानक ईटीएल भाषा / एपीआई है? मैं GUI टूल्स से बचना चाह रहा हूँ।

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


यहाँ हमारा एक कार्य है। हम अपने गोदाम में प्रत्येक तालिका को लोड करने के लिए एक एकल SSIS पैकेज का उपयोग कर रहे हैं। प्रत्येक तथ्य पैकेज और आयाम पैकेज आम तौर पर समान होते हैं, वे केवल अलग-अलग होते हैं

  • स्रोत डेटाबेस से अर्क
  • डेटा फ्लो में हेरफेर
  • गंतव्य तालिका में शामिल हो जाता है

मैं ऐसा करने में सक्षम होना चाहूंगा (जो मुझे SSIS में करना मुश्किल लग रहा है)

  • टेक्स्ट फ़ाइल से निष्कर्षण क्वेरी लोड करें। जब डेवलपर्स अपने निष्कर्षण प्रश्नों को लिख रहे हैं और परीक्षण कर रहे हैं, तो मुझे SSIS के चलने से पहले किसी भी तरह से उनकी क्वेरी में हेरफेर नहीं करना चाहिए और मुझे क्वेरी को DB स्रोत ऑब्जेक्ट में कट और पेस्ट नहीं करना चाहिए।
  • प्रत्येक घटक का व्यक्तिगत रूप से परीक्षण करें। मैं अन्य तालिका भार से स्वतंत्र, अलगाव में एक व्यक्तिगत तालिका के लिए पूर्ण ईटीएल प्रक्रिया का परीक्षण करने में सक्षम होना चाहिए।
  • एक ही स्थान पर साझा तर्क में संशोधन करें, प्रत्येक व्यक्तिगत पैकेज को संपादित करने की आवश्यकता नहीं है। हर पैकेज ऑडिट टेबल में डेटा को उसी तरह से लोड करता है, अगर मैं ऑडेड लोड किए गए डेटा को बदलना चाहता हूं, तो मुझे सभी 15 पैकेजों को संपादित करने की आवश्यकता नहीं है (यह संख्या समय के साथ बहुत अधिक होने वाली है)।

पूरी प्रक्रिया को ऐसा लगता है कि साझा कोड के उचित उपयोग के साथ अगर प्रोग्रामेटिक रूप से किया जाए तो इसे लागू करना और अधिक मजबूत बनाना ज्यादा आसान होगा।


4
मैं SSIS का बहुत बड़ा उपयोगकर्ता नहीं हूँ, लेकिन यहाँ सीखने की अवस्था की धारणा को समझ सकता हूँ। मैं आपको एंडी लियोनार्ड, जेमी थॉम्पसन, ब्रायन नाइट के कुछ वीडियो / ब्लॉग को देखने के लिए प्रोत्साहित करता हूं जो क्षेत्र के विशेषज्ञ हैं और कुछ दिशा प्राप्त करते हैं। पास शिखर और sqlblog.com के मुफ्त वीडियो के लिए sqlpass.org वेबसाइट देखें, pragmaticworks.com
संकर रेड्डी

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

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

4
@kubi - आपने बीआई उद्योग के गंदे छोटे रहस्यों में से एक पर छुआ है। ईटीएल उपकरण बहुत ही खराब हैं, अमूर्त और पुन: प्रयोज्य तर्क में बहुत खराब हैं। एक परिणाम के रूप में वे बढ़ते डोमेन जटिलता के साथ बहुत खराब पैमाने पर हैं।
ConcernedOfTunbridgeWells

1
मेरे पास यह काफी अच्छा अधिकार है कि बैंकिंग और बीमा के लिए एक निश्चित उद्योग ऊर्ध्वाधर उत्पाद के लगभग आधे ग्राहक (एक कंपनी द्वारा आपके बारे में सुना जाता है और आमतौर पर एक विशिष्ट रंग द्वारा संदर्भित) उनके निर्माण के लिए एक स्पष्ट तकनीकी निर्णय लेते हैं। सही प्रक्रिया के लिए, संग्रहीत कार्यविधि ईडीएल में ईटीएल प्रसंस्करण।
ConcernedOfTunbridgeWells

जवाबों:


6

एक उपकरण है जो इसे सक्षम करता है - http://www.varigence.com/products/biml.html

एक हास्य संस्करण है, लेकिन हम BIDS हेल्पर के कुछ BIDS हेल्पर को भी शामिल करते हैं, जो एक निशुल्क उपकरण है। http://bidshelper.codeplex.com/

मुझे आपके किसी भी प्रश्न का उत्तर देने में खुशी हो रही है जो आपके पास हो सकता है।

यह एक उपकरण है जो मेरी कंपनी प्रदान करती है।


6

इसे पढ़ने के बाद मैंने तुरंत वैरेंस के टूल्स की सिफारिश करने के बारे में सोचा। हालांकि, मैं देख रहा हूं कि वरिगन्स के मुख्य आर्किटेक्ट में से एक जॉन वेल्च मुझसे पहले यहां मिला था।

Varigence के उपकरण SSIS के ऊपर एक अमूर्त परत हैं। लाभ जो प्रदान करता है वह पुन: प्रयोज्य "सामान" को परिभाषित करने की क्षमता है, इस प्रकार कई पैकेजों में स्थिरता प्रदान करता है। आप परिभाषित करते हैं कि संकुल को कैसे संरचित किया जाना चाहिए और वे अलग-अलग आधार पर कैसे भिन्न होते हैं - Varigence के औजारों से "संकलित" आउटपुट है IIT संकुल।

SSIS पैकेज के लिए इसे डायनामिक SQL समझें। एक जीयूआई के साथ। सच में बहुत अच्छा है।


3

मैंने कई बार SSIS का उपयोग करने की कोशिश की, और उस पर छोड़ दिया। IMO यह बहुत आसान है बस मुझे C # की आवश्यकता है। SSIS बहुत जटिल है, इसमें बहुत सारे गोचर हैं, और यह इसके लायक नहीं है। SSIS सीखने में एक ही समय बिताने की तुलना में C # कौशल में सुधार करने पर अधिक समय देना बेहतर है - आपको अपने प्रशिक्षण पर बहुत अधिक लाभ मिलेगा। मुझे यहां बहुत विस्तार में जाने की आवश्यकता नहीं है - आयेंडे ने एक महान सारांश लिखा था, मेरे पास जोड़ने के लिए कुछ भी नहीं है

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

इसके अलावा, ऐसी परिस्थितियाँ थीं जब SSIS चुपचाप कुछ पंक्तियों में कुछ स्तंभों को आबाद करने में विफल हो रहा था, बस अपवादों को उठाए बिना उन्हें छोड़ रहा था। हमने बहुत समय बिताया समस्या निवारण और यह पता लगाने में कि क्या चल रहा है। C # में एक वैकल्पिक समाधान विकसित करने में एक घंटे से भी कम समय लगा, और बिना किसी समस्या के दो साल तक काम किया।

इसके अलावा राइनो ईटीएल वास्तव में अच्छा लगता है।

स्टैकओवरफ्लो पर कुछ इसी तरह की चर्चा हुई


2

निजी तौर पर, मैं SQL में यथासंभव ETL प्रक्रिया को संभालता हूं। मैं एफ़टीपी साइटों या एक्सेल जैसे विषम डेटा स्रोतों से आयात करने के लिए एसएसआईएस का उपयोग करता हूं, लेकिन यह सिर्फ डेटाबेस में कच्चे डेटा प्राप्त करने के लिए है जहां एसक्यूएल बाकी करता है।

मेरी वर्तमान स्थिति अपेक्षाकृत सरल है कि अधिकांश डेटा अन्य MS SQL डेटाबेस में है, जिनके साथ मैं लिंक किए गए सर्वर सेट कर सकता हूं। यदि आपको अन्य प्लेटफार्मों से कनेक्ट करना है, तो मैं उपयोग करने की सलाह देता हूं OPENQUERYऔर BULK INSERT। यदि आवश्यक हो, तो उन्हें प्रोग्रामेटिक रूप से निर्मित किया जा सकता है और उन दोनों के बीच वे अधिकांश प्रकार के डेटा से जुड़ सकते हैं।

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

यदि आपको अधिक आवश्यकता है, तो मैं .NET की सलाह देता हूं, यदि केवल इसलिए कि यह SSIS और SQLCLR में उपयोग किया जाता है। मैं समग्र ETL प्रक्रिया का प्रबंधन करने के लिए C # एप्लिकेशन का उपयोग करता हूं - उप-चरण शुरू करना, उनके आउटपुट की निगरानी करना, ई-मेल भेजना। लेकिन यह लगभग सभी SQL एजेंट, dbmail, आदि के साथ किया जा सकता है।

क्या कोई कारण है कि आप अपने ईटीएल के लिए एसक्यूएल का उपयोग नहीं कर सकते हैं ? यह आपके लिए क्या करने में सक्षम नहीं है?


दरअसल हम SSIS का उपयोग कच्चे डेटा को Temp DBs में डंप करने के लिए करते हैं, फिर हम TSQL परिभाषित करते हैं कि हम इसे कैसे T और L करना चाहते हैं।
पॉल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.