धीरे-धीरे बदलता आयाम
This article needs additional citations for verification. (March 2015) (Learn how and when to remove this template message) |
[[डेटा प्रबंधन]] और डेटा भण्डारण में धीरे-धीरे बदलने वाला आयाम (एससीडी) एक आयाम (डेटा वेयरहाउस) है जिसमें अपेक्षाकृत स्थिर डेटा होता है जो नियमित शेड्यूल के बजाय धीरे-धीरे लेकिन अप्रत्याशित रूप से बदल सकता है।[1] विशिष्ट धीरे-धीरे बदलते आयामों के कुछ उदाहरण भौगोलिक स्थानों, ग्राहकों या उत्पादों के नाम जैसी इकाइयाँ हैं।
कुछ परिदृश्य संदर्भात्मक अखंडता समस्याओं का कारण बन सकते हैं।
उदाहरण के लिए, एक डेटाबेस में एक तथ्य तालिका हो सकती है जो बिक्री रिकॉर्ड संग्रहीत करती है। यह तथ्य तालिका विदेशी कुंजियों के माध्यम से आयामों से जुड़ी होगी। इनमें से एक आयाम में कंपनी के सेल्सपर्सन के बारे में डेटा शामिल हो सकता है: उदाहरण के लिए, वे क्षेत्रीय कार्यालय जिनमें वे काम करते हैं। हालाँकि, कभी-कभी सेल्सपर्सन को एक क्षेत्रीय कार्यालय से दूसरे में स्थानांतरित कर दिया जाता है। ऐतिहासिक बिक्री रिपोर्टिंग उद्देश्यों के लिए इस तथ्य का रिकॉर्ड रखना आवश्यक हो सकता है कि एक विशेष बिक्री व्यक्ति को पहले की तारीख में एक विशेष क्षेत्रीय कार्यालय को सौंपा गया था, जबकि उस बिक्री व्यक्ति को अब एक अलग क्षेत्रीय कार्यालय को सौंपा गया है। एससीडी का उपयोग करने से इस समस्या को हल करने में मदद मिल सकती है।
इन मुद्दों से निपटने में एससीडी प्रबंधन पद्धतियां शामिल हैं जिन्हें टाइप 0 से 6 कहा जाता है। टाइप 6 एससीडी को कभी-कभी हाइब्रिड एससीडी भी कहा जाता है।
प्रकार 0: मूल बनाए रखें
टाइप 0 आयाम विशेषताएँ कभी नहीं बदलती हैं और उन विशेषताओं को सौंपी जाती हैं जिनके टिकाऊ मान होते हैं या जिन्हें 'मूल' के रूप में वर्णित किया जाता है। उदाहरण: जन्म तिथि, मूल क्रेडिट स्कोर। टाइप 0 अधिकांश दिनांक आयाम विशेषताओं पर लागू होता है।[2]
प्रकार 1: अधिलेखित करें
यह विधि पुराने डेटा को नए डेटा के साथ अधिलेखित कर देती है, और इसलिए ऐतिहासिक डेटा को ट्रैक नहीं करती है।
आपूर्तिकर्ता तालिका का उदाहरण:
Supplier_Key | Supplier_Code | Supplier_Name | Supplier_State |
---|---|---|---|
123 | ABC | Acme Supply Co | CA |
उपरोक्त उदाहरण में, सप्लायर_कोड प्राकृतिक कुंजी है और सप्लायर_की एक सरोगेट कुंजी है। तकनीकी रूप से, सरोगेट कुंजी आवश्यक नहीं है, क्योंकि पंक्ति प्राकृतिक कुंजी (आपूर्तिकर्ता_कोड) द्वारा अद्वितीय होगी।
यदि आपूर्तिकर्ता मुख्यालय को इलिनोइस में स्थानांतरित करता है तो रिकॉर्ड अधिलेखित कर दिया जाएगा:
Supplier_Key | Supplier_Code | Supplier_Name | Supplier_State |
---|---|---|---|
123 | ABC | Acme Supply Co | IL |
टाइप 1 पद्धति का नुकसान यह है कि डेटा वेयरहाउस में कोई इतिहास नहीं होता है। हालाँकि इसका फायदा यह है कि इसे बनाए रखना आसान है।
यदि किसी ने आपूर्तिकर्ता राज्य द्वारा तथ्यों को सारांशित करते हुए एक समग्र तालिका की गणना की है, तो आपूर्तिकर्ता_राज्य बदले जाने पर इसे पुनर्गणना करने की आवश्यकता होगी।[1]
प्रकार 2: नई पंक्ति जोड़ें
यह विधि अलग-अलग सरोगेट कुंजियों और/या विभिन्न संस्करण संख्याओं के साथ आयामी तालिकाओं में दी गई प्राकृतिक कुंजी के लिए कई रिकॉर्ड बनाकर ऐतिहासिक डेटा को ट्रैक करती है। प्रत्येक प्रविष्टि के लिए असीमित इतिहास संरक्षित है। इन उदाहरणों में प्राकृतिक कुंजी ABC का आपूर्तिकर्ता_कोड है।
उदाहरण के लिए, यदि आपूर्तिकर्ता इलिनोइस में स्थानांतरित हो जाता है तो संस्करण संख्याएँ क्रमिक रूप से बढ़ाई जाएंगी:
Supplier_Key | Supplier_Code | Supplier_Name | Supplier_State | Version |
---|---|---|---|---|
123 | ABC | Acme Supply Co | CA | 0 |
124 | ABC | Acme Supply Co | IL | 1 |
दूसरा तरीका 'प्रभावी तिथि' कॉलम जोड़ना है।
Supplier_Key | Supplier_Code | Supplier_Name | Supplier_State | Start_Date | End_Date |
---|---|---|---|---|---|
123 | ABC | Acme Supply Co | CA | 2000-01-01T00:00:00 | 2004-12-22T00:00:00 |
124 | ABC | Acme Supply Co | IL | 2004-12-22T00:00:00 | NULL
|
दूसरी पंक्ति की आरंभ तिथि/समय पिछली पंक्ति की समाप्ति तिथि/समय के बराबर है। पंक्ति दो में शून्य End_Date वर्तमान टपल संस्करण को इंगित करता है। इसके बजाय एक मानकीकृत सरोगेट उच्च तिथि (जैसे 9999-12-31) का उपयोग अंतिम तिथि के रूप में किया जा सकता है, ताकि फ़ील्ड को एक सूचकांक में शामिल किया जा सके, और ताकि क्वेरी करते समय शून्य-मूल्य प्रतिस्थापन की आवश्यकता न हो। कुछ डेटाबेस सॉफ़्टवेयर में, कृत्रिम उच्च दिनांक मान का उपयोग करने से प्रदर्शन संबंधी समस्याएँ हो सकती हैं, जिन्हें शून्य मान का उपयोग करने से रोका जा सकेगा। और तीसरी विधि एक प्रभावी तिथि और वर्तमान ध्वज का उपयोग करती है।
Supplier_Key | Supplier_Code | Supplier_Name | Supplier_State | Effective_Date | Current_Flag |
---|---|---|---|---|---|
123 | ABC | Acme Supply Co | CA | 2000-01-01T00:00:00 | N |
124 | ABC | Acme Supply Co | IL | 2004-12-22T00:00:00 | Y |
'Y' का current_flag मान वर्तमान टपल संस्करण को इंगित करता है।
लेन-देन जो एक विशेष सरोगेट कुंजी (आपूर्तिकर्ता_की) को संदर्भित करते हैं, फिर धीरे-धीरे बदलती आयाम तालिका की उस पंक्ति द्वारा परिभाषित समय स्लाइस से स्थायी रूप से बंधे होते हैं। आपूर्तिकर्ता राज्य द्वारा तथ्यों को सारांशित करने वाली एक समग्र तालिका ऐतिहासिक स्थिति को प्रतिबिंबित करती रहती है, यानी लेनदेन के समय आपूर्तिकर्ता जिस स्थिति में था; किसी अद्यतन की आवश्यकता नहीं है. प्राकृतिक कुंजी के माध्यम से इकाई को संदर्भित करने के लिए, डीबीएमएस द्वारा संदर्भात्मक अखंडता को असंभव बनाने वाली अद्वितीय बाधा को हटाना आवश्यक है।
यदि आयाम की सामग्री में पूर्वव्यापी परिवर्तन किए गए हैं, या यदि आयाम में नए गुण जोड़े गए हैं (उदाहरण के लिए Sales_Rep कॉलम) जिनकी प्रभावी तिथियां पहले से परिभाषित तिथियों से भिन्न हैं, तो इसके परिणामस्वरूप मौजूदा लेनदेन की आवश्यकता हो सकती है नई स्थिति को प्रतिबिंबित करने के लिए अद्यतन किया गया। यह एक महंगा डेटाबेस ऑपरेशन हो सकता है, इसलिए यदि आयामी मॉडल लगातार परिवर्तन के अधीन है तो टाइप 2 एससीडी एक अच्छा विकल्प नहीं है।[1]
प्रकार 3: नई विशेषता जोड़ें
यह विधि अलग-अलग कॉलमों का उपयोग करके परिवर्तनों को ट्रैक करती है और सीमित इतिहास को संरक्षित करती है। टाइप 3 सीमित इतिहास को संरक्षित करता है क्योंकि यह ऐतिहासिक डेटा संग्रहीत करने के लिए निर्दिष्ट स्तंभों की संख्या तक सीमित है। टाइप 1 और टाइप 2 में मूल तालिका संरचना समान है लेकिन टाइप 3 अतिरिक्त कॉलम जोड़ता है। निम्नलिखित उदाहरण में, आपूर्तिकर्ता की मूल स्थिति को रिकॉर्ड करने के लिए तालिका में एक अतिरिक्त कॉलम जोड़ा गया है - केवल पिछला इतिहास संग्रहीत है।
Supplier_Key | Supplier_Code | Supplier_Name | Original_Supplier_State | Effective_Date | Current_Supplier_State |
---|---|---|---|---|---|
123 | ABC | Acme Supply Co | CA | 2004-12-22T00:00:00 | IL |
इस रिकॉर्ड में मूल स्थिति और वर्तमान स्थिति के लिए एक कॉलम है - यदि आपूर्तिकर्ता दूसरी बार स्थानांतरित होता है तो परिवर्तनों को ट्रैक नहीं किया जा सकता है।
इसका एक रूप मूल_सप्लायर_स्टेट के बजाय फ़ील्ड पिछला_सप्लायर_स्टेट बनाना है जो केवल सबसे हालिया ऐतिहासिक परिवर्तन को ट्रैक करेगा।[1]
प्रकार 4: इतिहास तालिका जोड़ें
टाइप 4 विधि को आमतौर पर इतिहास तालिकाओं का उपयोग करने के रूप में संदर्भित किया जाता है, जहां एक तालिका वर्तमान डेटा रखती है, और कुछ या सभी परिवर्तनों का रिकॉर्ड रखने के लिए एक अतिरिक्त तालिका का उपयोग किया जाता है। क्वेरी प्रदर्शन को बढ़ाने के लिए दोनों सरोगेट कुंजियों को तथ्य तालिका में संदर्भित किया गया है।
नीचे दिए गए उदाहरण के लिए, मूल तालिका का नाम आपूर्तिकर्ता है और इतिहास तालिका आपूर्तिकर्ता_इतिहास है:
Supplier_Key | Supplier_Code | Supplier_Name | Supplier_State |
---|---|---|---|
124 | ABC | Acme & Johnson Supply Co | IL |
Supplier_Key | Supplier_Code | Supplier_Name | Supplier_State | Create_Date |
---|---|---|---|---|
123 | ABC | Acme Supply Co | CA | 2003-06-14T00:00:00 |
124 | ABC | Acme & Johnson Supply Co | IL | 2004-12-22T00:00:00 |
यह विधि डेटाबेस ऑडिट टेबल और परिवर्तन डेटा कैप्चर तकनीकों के कार्य करने के तरीके से मिलती-जुलती है।
टाइप 5
टाइप 5 तकनीक आधार आयाम में एक "वर्तमान प्रोफ़ाइल" मिनी-आयाम कुंजी को एम्बेड करके टाइप 4 मिनी-आयाम पर निर्माण करती है जिसे टाइप 1 विशेषता के रूप में अधिलेखित किया जाता है। इस दृष्टिकोण को टाइप 5 कहा जाता है क्योंकि 4 + 1 बराबर 5 होता है। टाइप 5 धीरे-धीरे बदलते आयाम वर्तमान में निर्दिष्ट मिनी-आयाम विशेषता मानों को आधार आयाम के अन्य लोगों के साथ तथ्य तालिका के माध्यम से लिंक किए बिना एक्सेस करने की अनुमति देता है। तार्किक रूप से, हम आम तौर पर प्रेजेंटेशन परत में आधार आयाम और वर्तमान मिनी-आयाम प्रोफ़ाइल आउटरिगर को एक तालिका के रूप में दर्शाते हैं। आउटरिगर विशेषताओं में अलग-अलग कॉलम नाम होने चाहिए, जैसे "वर्तमान आय स्तर", उन्हें तथ्य तालिका से जुड़े लघु-आयाम में विशेषताओं से अलग करने के लिए। जब भी वर्तमान मिनी-आयाम समय के साथ बदलता है तो ईटीएल टीम को टाइप 1 मिनी-आयाम संदर्भ को अपडेट/ओवरराइट करना होगा। यदि आउटरिगर दृष्टिकोण संतोषजनक क्वेरी प्रदर्शन प्रदान नहीं करता है, तो मिनी-आयाम विशेषताओं को आधार आयाम में भौतिक रूप से एम्बेडेड (और अद्यतन) किया जा सकता है।[3]
प्रकार 6: संयुक्त दृष्टिकोण
टाइप 6 विधि प्रकार 1, 2 और 3 (1 + 2 + 3 = 6) के दृष्टिकोण को जोड़ती है। इस शब्द की उत्पत्ति की एक संभावित व्याख्या यह थी कि इसे राल्फ किमबॉल ने कालिडो के स्टीफन पेस के साथ बातचीत के दौरान गढ़ा था।[citation needed]. राल्फ किमबॉल इस पद्धति को डेटा वेयरहाउस टूलकिट में एकल-संस्करण ओवरले के साथ अप्रत्याशित परिवर्तन कहते हैं।[1]
आपूर्तिकर्ता तालिका हमारे उदाहरण आपूर्तिकर्ता के लिए एक रिकॉर्ड से शुरू होती है:
Supplier_Key | Row_Key | Supplier_Code | Supplier_Name | Current_State | Historical_State | Start_Date | End_Date | Current_Flag |
---|---|---|---|---|---|---|---|---|
123 | 1 | ABC | Acme Supply Co | CA | CA | 2000-01-01T00:00:00 | 9999-12-31T23:59:59 | Y |
वर्तमान_राज्य और ऐतिहासिक_राज्य एक ही हैं। वैकल्पिक वर्तमान_फ़्लैग विशेषता इंगित करती है कि यह इस आपूर्तिकर्ता के लिए वर्तमान या सबसे हालिया रिकॉर्ड है।
जब एक्मे सप्लाई कंपनी इलिनोइस में स्थानांतरित होती है, तो हम एक नया रिकॉर्ड जोड़ते हैं, जैसा कि टाइप 2 प्रसंस्करण में होता है, हालांकि यह सुनिश्चित करने के लिए एक पंक्ति कुंजी शामिल की जाती है कि हमारे पास प्रत्येक पंक्ति के लिए एक अद्वितीय कुंजी है:
Supplier_Key | Row_Key | Supplier_Code | Supplier_Name | Current_State | Historical_State | Start_Date | End_Date | Current_Flag |
---|---|---|---|---|---|---|---|---|
123 | 1 | ABC | Acme Supply Co | IL | CA | 2000-01-01T00:00:00 | 2004-12-22T00:00:00 | N |
123 | 2 | ABC | Acme Supply Co | IL | IL | 2004-12-22T00:00:00 | 9999-12-31T23:59:59 | Y |
हम पहले रिकॉर्ड (Row_Key = 1) में current_state जानकारी को नई जानकारी के साथ अधिलेखित कर देते हैं, जैसा कि टाइप 1 प्रोसेसिंग में होता है। हम परिवर्तनों को ट्रैक करने के लिए एक नया रिकॉर्ड बनाते हैं, जैसा कि टाइप 2 प्रोसेसिंग में होता है। और हम इतिहास को दूसरे स्टेट कॉलम (हिस्टोरिकल_स्टेट) में संग्रहीत करते हैं, जिसमें टाइप 3 प्रोसेसिंग शामिल है।
उदाहरण के लिए, यदि आपूर्तिकर्ता को फिर से स्थानांतरित करना होता है, तो हम आपूर्तिकर्ता आयाम में एक और रिकॉर्ड जोड़ देंगे, और हम वर्तमान_स्टेट कॉलम की सामग्री को अधिलेखित कर देंगे:
Supplier_Key | Row_Key | Supplier_Code | Supplier_Name | Current_State | Historical_State | Start_Date | End_Date | Current_Flag |
---|---|---|---|---|---|---|---|---|
123 | 1 | ABC | Acme Supply Co | NY | CA | 2000-01-01T00:00:00 | 2004-12-22T00:00:00 | N |
123 | 2 | ABC | Acme Supply Co | NY | IL | 2004-12-22T00:00:00 | 2008-02-04T00:00:00 | N |
123 | 3 | ABC | Acme Supply Co | NY | NY | 2008-02-04T00:00:00 | 9999-12-31T23:59:59 | Y |
टाइप 2 / टाइप 6 तथ्य कार्यान्वयन
टाइप 2 सरोगेट कुंजी टाइप 3 विशेषता के साथ
कई प्रकार 2 और प्रकार 6 एससीडी कार्यान्वयन में, जब तथ्य डेटा को डेटा भंडार में लोड किया जाता है, तो आयाम से सरोगेट कुंजी को प्राकृतिक कुंजी के स्थान पर तथ्य तालिका में डाल दिया जाता है।[1]किसी दिए गए तथ्य रिकॉर्ड के लिए सरोगेट कुंजी का चयन उसकी प्रभावी तिथि और आयाम तालिका से प्रारंभ_दिनांक और समाप्ति_दिनांक के आधार पर किया जाता है। इससे तथ्य डेटा को संबंधित प्रभावी तिथि के लिए सही आयाम डेटा से आसानी से जोड़ा जा सकता है।
यहां आपूर्तिकर्ता तालिका है जैसा कि हमने इसे ऊपर टाइप 6 हाइब्रिड पद्धति का उपयोग करके बनाया है:
Supplier_Key | Supplier_Code | Supplier_Name | Current_State | Historical_State | Start_Date | End_Date | Current_Flag |
---|---|---|---|---|---|---|---|
123 | ABC | Acme Supply Co | NY | CA | 2000-01-01T00:00:00 | 2004-12-22T00:00:00 | N |
124 | ABC | Acme Supply Co | NY | IL | 2004-12-22T00:00:00 | 2008-02-04T00:00:00 | N |
125 | ABC | Acme Supply Co | NY | NY | 2008-02-04T00:00:00 | 9999-12-31T23:59:59 | Y |
एक बार जब डिलिवरी तालिका में सही आपूर्तिकर्ता_कुंजी शामिल हो जाती है, तो इसे उस कुंजी का उपयोग करके आपूर्तिकर्ता तालिका में आसानी से जोड़ा जा सकता है। निम्नलिखित SQL, प्रत्येक तथ्य रिकॉर्ड के लिए, वर्तमान आपूर्तिकर्ता स्थिति और वह स्थिति पुनर्प्राप्त करता है जिसमें आपूर्तिकर्ता डिलीवरी के समय स्थित था:
SELECT
delivery.delivery_cost,
supplier.supplier_name,
supplier.historical_state,
supplier.current_state
FROM delivery
INNER JOIN supplier
ON delivery.supplier_key = supplier.supplier_key;
शुद्ध प्रकार 6 कार्यान्वयन
प्रत्येक बार स्लाइस के लिए टाइप 2 सरोगेट कुंजी रखने से समस्याएँ पैदा हो सकती हैं यदि आयाम परिवर्तन के अधीन है।[1]एक शुद्ध प्रकार 6 कार्यान्वयन इसका उपयोग नहीं करता है, लेकिन प्रत्येक मास्टर डेटा आइटम के लिए एक सरोगेट कुंजी का उपयोग करता है (उदाहरण के लिए प्रत्येक अद्वितीय आपूर्तिकर्ता के पास एक एकल सरोगेट कुंजी होती है)। यह मौजूदा लेनदेन डेटा पर प्रभाव डालने वाले मास्टर डेटा में किसी भी बदलाव से बचाता है। लेन-देन के बारे में पूछताछ करते समय यह अधिक विकल्पों की भी अनुमति देता है।
यहां शुद्ध प्रकार 6 पद्धति का उपयोग करते हुए आपूर्तिकर्ता तालिका दी गई है:
Supplier_Key | Supplier_Code | Supplier_Name | Supplier_State | Start_Date | End_Date |
---|---|---|---|---|---|
456 | ABC | Acme Supply Co | CA | 2000-01-01T00:00:00 | 2004-12-22T00:00:00 |
456 | ABC | Acme Supply Co | IL | 2004-12-22T00:00:00 | 2008-02-04T00:00:00 |
456 | ABC | Acme Supply Co | NY | 2008-02-04T00:00:00 | 9999-12-31T23:59:59 |
निम्नलिखित उदाहरण दिखाता है कि प्रत्येक लेनदेन के लिए एकल आपूर्तिकर्ता रिकॉर्ड पुनर्प्राप्त करने को सुनिश्चित करने के लिए क्वेरी को कैसे बढ़ाया जाना चाहिए।
SELECT
supplier.supplier_code,
supplier.supplier_state
FROM supplier
INNER JOIN delivery
ON supplier.supplier_key = delivery.supplier_key
AND delivery.delivery_date >= supplier.start_date AND delivery.delivery_date < supplier.end_date;
9 अगस्त 2001 की प्रभावी तिथि (डिलीवरी_दिनांक) वाला एक तथ्य रिकॉर्ड एबीसी के आपूर्तिकर्ता_कोड के साथ 'सीए' के आपूर्तिकर्ता_राज्य के साथ जोड़ा जाएगा। 11 अक्टूबर 2007 की प्रभावी तारीख वाला एक तथ्य रिकॉर्ड भी उसी आपूर्तिकर्ता_कोड एबीसी से जोड़ा जाएगा, लेकिन 'आईएल' के आपूर्तिकर्ता_राज्य के साथ।
अधिक जटिल होते हुए भी, इस दृष्टिकोण के कई फायदे हैं, जिनमें शामिल हैं:
- डीबीएमएस द्वारा रेफ़रेंशियल अखंडता अब संभव है, लेकिन कोई उत्पाद तालिका पर सप्लायर_कोड को विदेशी कुंजी के रूप में उपयोग नहीं कर सकता है और सप्लायर_की को विदेशी कुंजी के रूप में उपयोग करके प्रत्येक उत्पाद विशिष्ट समय स्लाइस पर बंधा हुआ है।
- यदि तथ्य पर एक से अधिक तारीख है (उदाहरण के लिए ऑर्डर_दिनांक, डिलीवरी_दिनांक, चालान_भुगतान_दिनांक) तो कोई यह चुन सकता है कि क्वेरी के लिए किस तारीख का उपयोग किया जाए।
- आप दिनांक फ़िल्टर तर्क को बदलकर अभी, लेन-देन के समय या किसी समय क्वेरी के रूप में ऐसा कर सकते हैं।
- यदि आयाम तालिका में कोई परिवर्तन होता है तो आपको तथ्य तालिका को पुन: संसाधित करने की आवश्यकता नहीं है (उदाहरण के लिए पूर्वव्यापी रूप से अतिरिक्त फ़ील्ड जोड़ना जो समय स्लाइस को बदलता है, या यदि कोई आयाम तालिका पर दिनांकों में कोई गलती करता है तो उसे आसानी से ठीक किया जा सकता है) ).
- आप आयाम तालिका में टेम्पोरल डेटाबेस#बिटेम्पोरल रिलेशंस|द्वि-टेम्पोरल तिथियों का परिचय दे सकते हैं।
- आप एक ही क्वेरी में अलग-अलग प्रभावी तिथियों के साथ एक ही जानकारी की रिपोर्टिंग की अनुमति देने के लिए तथ्य को आयाम तालिका के कई संस्करणों में जोड़ सकते हैं।
निम्नलिखित उदाहरण दिखाता है कि कैसे एक विशिष्ट तिथि जैसे '2012-01-01T00:00:00' (जो वर्तमान दिनांक समय हो सकती है) का उपयोग किया जा सकता है।
SELECT
supplier.supplier_code,
supplier.supplier_state
FROM supplier
INNER JOIN delivery
ON supplier.supplier_key = delivery.supplier_key
AND supplier.start_date <= '2012-01-01T00:00:00' AND supplier.end_date > '2012-01-01T00:00:00';
प्रकार 7: हाइब्रिड[4] - सरोगेट और प्राकृतिक कुंजी दोनों
एक वैकल्पिक कार्यान्वयन सरोगेट कुंजी और प्राकृतिक कुंजी दोनों को तथ्य तालिका में रखना है।[5] यह उपयोगकर्ता को निम्न के आधार पर उपयुक्त आयाम रिकॉर्ड चुनने की अनुमति देता है:
- तथ्य रिकॉर्ड पर प्राथमिक प्रभावी तिथि (ऊपर),
- नवीनतम या वर्तमान जानकारी,
- तथ्य रिकार्ड से जुड़ी कोई अन्य तारीख।
यह विधि आयाम के लिए अधिक लचीले लिंक की अनुमति देती है, भले ही किसी ने टाइप 6 के बजाय टाइप 2 दृष्टिकोण का उपयोग किया हो।
यहां आपूर्तिकर्ता तालिका है क्योंकि हमने इसे टाइप 2 पद्धति का उपयोग करके बनाया होगा:
Supplier_Key | Supplier_Code | Supplier_Name | Supplier_State | Start_Date | End_Date | Current_Flag |
---|---|---|---|---|---|---|
123 | ABC | Acme Supply Co | CA | 2000-01-01T00:00:00 | 2004-12-21T00:00:00 | N |
124 | ABC | Acme Supply Co | IL | 2004-12-22T00:00:00 | 2008-02-03T00:00:00 | N |
125 | ABC | Acme Supply Co | NY | 2008-02-04T00:00:00 | 9999-12-31T23:59:59 | Y |
वर्तमान रिकॉर्ड प्राप्त करने के लिए:
SELECT
delivery.delivery_cost,
supplier.supplier_name,
supplier.supplier_state
FROM delivery
INNER JOIN supplier
ON delivery.supplier_code = supplier.supplier_code
WHERE supplier.current_flag = 'Y';
इतिहास रिकॉर्ड प्राप्त करने के लिए:
SELECT
delivery.delivery_cost,
supplier.supplier_name,
supplier.supplier_state
FROM delivery
INNER JOIN supplier
ON delivery.supplier_key = supplier.supplier_key;
किसी विशिष्ट तिथि के आधार पर इतिहास रिकॉर्ड प्राप्त करने के लिए (यदि तथ्य तालिका में एक से अधिक तिथियां मौजूद हैं):
SELECT
delivery.delivery_cost,
supplier.supplier_name,
supplier.supplier_state
FROM delivery
INNER JOIN supplier
ON delivery.supplier_code = supplier.supplier_code
AND delivery.delivery_date BETWEEN supplier.Start_Date AND supplier.End_Date
कुछ सावधानियाँ:
- डीबीएमएस द्वारा संदर्भात्मक अखंडता संभव नहीं है क्योंकि संबंध बनाने के लिए कोई अद्वितीय कुंजी नहीं है।
- यदि उपरोक्त समस्या को हल करने के लिए सरोगेट के साथ संबंध बनाया जाता है तो एक विशिष्ट समय स्लाइस से बंधी इकाई के साथ समाप्त होता है।
- यदि सम्मिलित क्वेरी सही ढंग से नहीं लिखी गई है, तो यह डुप्लिकेट पंक्तियाँ लौटा सकती है और/या गलत उत्तर दे सकती है।
- तारीख की तुलना अच्छा प्रदर्शन नहीं कर सकती है।
- कुछ व्यापारिक सूचना उपकरण जटिल जुड़ाव उत्पन्न करने को अच्छी तरह से संभाल नहीं पाते हैं।
- आयाम तालिका बनाने के लिए आवश्यक एक्सट्रैक्ट, ट्रांसफ़ॉर्म, लोड प्रक्रियाओं को सावधानीपूर्वक डिज़ाइन करने की आवश्यकता है ताकि यह सुनिश्चित किया जा सके कि संदर्भ डेटा के प्रत्येक विशिष्ट आइटम के लिए समय अवधि में कोई ओवरलैप न हो।
संयोजन प्रकार
विभिन्न एससीडी प्रकारों को तालिका के विभिन्न स्तंभों पर लागू किया जा सकता है। उदाहरण के लिए, हम टाइप 1 को आपूर्तिकर्ता_नाम कॉलम पर और टाइप 2 को उसी तालिका के आपूर्तिकर्ता_स्टेट कॉलम पर लागू कर सकते हैं।
यह भी देखें
- डेटा कैप्चर बदलें
- अस्थायी डेटाबेस
- लॉग ट्रिगर
- इकाई-विशेषता-मूल्य मॉडल
- बहु किरायेदारी
टिप्पणियाँ
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 1.6 Kimball, Ralph; Ross, Margy. The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling.
- ↑ "Design Tip #152 Slowly Changing Dimension Types 0, 4, 5, 6 and 7". 5 February 2013.
- ↑ "Design Tip #152 Slowly Changing Dimension Types 0, 4, 5, 6 and 7". 5 February 2013.
- ↑ Kimball, Ralph; Ross, Margy (July 1, 2013). The Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling, 3rd Edition. John Wiley & Sons, Inc. p. 122. ISBN 978-1-118-53080-1.
- ↑ Ross, Margy; Kimball, Ralph (March 1, 2005). "Slowly Changing Dimensions Are Not Always as Easy as 1, 2, 3". Intelligent Enterprise.
संदर्भ
- Bruce Ottmann, Chris Angus: Data processing system, US Patent Office, Patent Number 7,003,504. February 21, 2006
- Ralph Kimball:Kimball University: Handling Arbitrary Restatements of History [1]. December 9, 2007
- Templates that generate short descriptions
- Articles with unsourced statements from December 2011
- Collapse templates
- Navigational boxes
- Navigational boxes without horizontal lists
- Sidebars with styles needing conversion
- Templates generating microformats
- Templates that are not mobile friendly
- Wikipedia metatemplates
- मॉडलिंग की दिनांक
- डेटा भण्डारण
- Machine Translated Page
- Created On 01/03/2024