Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

वृद्धिशील डेटाबेस परिवर्तन का पता लगाना (Oracle to MongoDB ETL)

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

कार्य-अनुसूचित बैच फ़ाइल या शेल स्क्रिप्ट का उपयोग करके विभिन्न डेटाबेस या फ़ाइलों में परिवर्तन लोड किए जा सकते हैं। यह स्रोत तालिका में टाइमस्टैम्प और विशिष्ट फ़ील्ड का उपयोग करके किया जा सकता है। त्रुटि जाँच शामिल है और उस पर प्रतिक्रिया भी दी जा सकती है।

यह उदाहरण विंडोज मशीन पर बनाया और चलाया जाएगा; हालांकि, इसे लिनक्स या यूनिक्स जैसे प्लेटफॉर्म पर काम करने के लिए आसानी से संशोधित किया जा सकता है।

WB में वोरैसिटी फ्लो डायग्राम का उपयोग करके बैच फ़ाइल बनाना आसान है। इस उदाहरण में, स्रोत तालिका में CREATION_DATE . नामक कॉलम हैं और UPDATE_DATE जो इस काम में महत्वपूर्ण हैं।

नीचे दी गई छवि उन चरणों को दिखाती है जो बैच फ़ाइल में शामिल हैं। संक्षेप में:

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


कार्यप्रवाह में प्रत्येक कार्य ब्लॉक को नीचे समझाया गया है। पैलेट से वोरैसिटी वर्कफ्लो बनाने के तरीके के लिए, यह लेख देखें।

निर्देशिका बदलें

यह ब्लॉक वर्तमान कार्यशील निर्देशिका को निर्दिष्ट निर्देशिका में बदल देता है।

अंतिम समय निर्धारित करें

यह कमांड लाइन ब्लॉक LASTTIME . नामक एक पर्यावरण चर सेट करता है . वेरिएबल पर सेट किया गया मान फ़ाइल की सामग्री है LastTime.txt . इस फ़ाइल में टाइमस्टैम्प वह टाइमस्टैम्प है जो इस कार्य के अंतिम भाग के दौरान रिकॉर्ड किया गया था। यदि यह पहली बार चलाया जाता है, तो इस फ़ाइल को इस कार्य के चलने से पहले दिनांकित एक मनमाना टाइमस्टैम्प के साथ मैन्युअल रूप से बनाना होगा।

टाइमस्टैम्प.एससीएल

यह परिवर्तन खंड वर्तमान समय के लिए स्रोत डेटाबेस को क्वेरी करने के लिए वोरासिटी में CoSort SortCL प्रोग्राम का उपयोग करता है। वह टाइमस्टैम्प LastTimeTemp.txt . नामक फ़ाइल में सहेजा जाता है . इसे एक अस्थायी फ़ाइल में संग्रहीत करने का कारण यह है कि त्रुटि जाँच होने तक वर्तमान और अंतिम समय दोनों टिकटों को संरक्षित किया जा सकता है।

यह महत्वपूर्ण है कि टाइमस्टैम्प डेटाबेस से आता है, न कि स्थानीय मशीन से। यह उन समस्याओं से बचा जाता है जहां डेटाबेस और निष्पादन वातावरण सिंक्रनाइज़ नहीं होते हैं।

Changes.scl

यह परिवर्तन खंड कुछ चीजें करता है। इस ब्लॉक के लिए रूपांतरण मानचित्रण आरेख नीचे प्रदर्शित किया गया है। इनपुट सोर्स टेबल है और आउटपुट फाइल है current.txt

इनपुट में अनुभाग विकल्प, एक CREATION_DATE . वाले सभी रिकॉर्ड के लिए स्रोत तालिका में एक क्वेरी सबमिट की जाती है या UPDATE_DATE पर्यावरण चर से अधिक LASTTIME .

जबकि आउटपुट के दो लक्ष्य प्रतीत होते हैं, डेटा वास्तव में दो अलग-अलग स्थितियों का उपयोग करके एक ही फ़ाइल में जोड़ा जा रहा है। पहले आउटपुट सेक्शन में एक शामिल करें . है वह कथन जो CREATION_DATE . वाले सभी रिकॉर्ड ढूंढता है पिछली बार . से अधिक . CDC_TYPE . नामक एक अतिरिक्त आउटपुट फ़ील्ड भी है . स्ट्रिंग "CREATE" को उस नए क्षेत्र में रिकॉर्ड किया गया है।

दूसरे आउटपुट सेक्शन में, एक शामिल करें स्टेटमेंट उन सभी रिकॉर्ड्स को ढूंढता है जिनमें UPDATE_DATE होता है पिछली बार . से अधिक और जहां CREATION_DATE UPDATE_DATE के बराबर नहीं है। यह सुनिश्चित करता है कि नई बनाई गई फाइलें इस पास में शामिल नहीं हैं। स्ट्रिंग "अपडेट" CDC_TYPE में रिकॉर्ड की गई है।

त्रुटि सह-सॉर्ट

यह निर्णय ब्लॉक चर ERRORLEVEL . की जांच करता है यह सुनिश्चित करने के लिए कि उपरोक्त CoSort जॉब चलाने के बाद यह 0 (या सफलता) लौटा। यदि ऐसा नहीं होता, तो कार्य बाहर निकलें . तक जारी रहता है ब्लॉक जहां नौकरी समाप्त हो गई है। यदि यह सही हो जाता है, तो कार्य अगले ब्लॉक में जारी रहता है।

LastTimeTemp का नाम बदलें

यह कमांड ब्लॉक LastTimeTemp.txt की सामग्री को LastTime.txt में कॉपी करता है। यह अगली नौकरी चलाने के लिए उपयोग की जाने वाली फ़ाइल में पहले से कैप्चर किए गए वर्तमान टाइमस्टैम्प को रिकॉर्ड करता है।

Convert.scl

यह ट्रांसफ़ॉर्म ब्लॉक current.txt . लेता है और इसे changes.csv . में रूपांतरित करता है . रूपांतरण डिफ़ॉल्ट सीमांकित फ़ाइल प्रकार से CSV में होता है। CoSort में CSV प्रक्रिया प्रकार का उपयोग करने से फ़ील्ड नामों का उपयोग करते हुए आउटपुट फ़ाइल में हेडर पंक्ति तैयार होती है। यह टास्क ब्लॉक है जहां मैं डेटा में अन्य जोड़तोड़ (जैसे डेटा मास्किंग) लागू कर सकता हूं यदि मैं ऐसा चाहता हूं।

फ़ाइलों की प्रतीक्षा करें

यह प्रतीक्षा ब्लॉक 3 सेकंड के लिए बैच फ़ाइल को रोकता है और फिर changes.csv के अस्तित्व की जांच करता है। आगे बढ़ने से पहले फाइल करें।

मोंगोआयात

यह कमांड ब्लॉक mongoimport कमांड को प्रॉपर्टी व्यू में निर्दिष्ट मापदंडों का उपयोग करके निष्पादित करता है जैसा कि नीचे दिखाया गया है।

पैरामीटर इंगित करते हैं कि MongoDB डेटाबेस fnx . कहलाता है फ़ाइल की सामग्री के साथ लोड किया जाना है changes.csv जो csv . प्रकार का है और इसमें एक हेडरलाइन . है जो फ़ील्ड को परिभाषित करता है।

ध्यान दें कि Voracity MongoDB डेटा को स्थानांतरित करने और हेरफेर करने के अन्य तरीकों का समर्थन करता है। अंतर्निहित "फ़ील्डशील्ड" फ़ंक्शंस का उपयोग करके डेटा मास्किंग के लिए प्रोग्रेस ओडीबीसी ड्राइवरों का उपयोग करने का यह उदाहरण देखें। Voracity अब भी CoSort v10 में /PROCESS=MongoDB समर्थन के माध्यम से API के माध्यम से सीधे BSON डेटा को संसाधित कर सकता है।

लोड करने में त्रुटि

यह निर्णय ब्लॉक चर ERRORLEVEL . की जांच करता है यह सुनिश्चित करने के लिए कि यह MongoDB में आयात करने के बाद 0 (या सफलता) लौटा। यदि ऐसा नहीं होता, तो कार्य जारी रहता है परिवर्तन-परिवर्तन और बाहर निकलें ब्लॉक जहां नौकरी समाप्त हो गई है। यदि यह सही हो जाता है, तो कार्य अगले ब्लॉक में जारी रहता है।

करंट को छोटा करें

यह कमांड ब्लॉक current.txt . फ़ाइल को छोटा कर देता है . यह उन रिकॉर्ड्स को साफ़ करने के लिए है जो MongoDB में लोड किए गए थे। यदि आयात विफल हो जाता है और उपरोक्त ब्लॉक कार्य से बाहर हो जाता है, तो ये बदले गए रिकॉर्ड अगले पास पर जोड़ दिए जाते हैं। फिर, जैसे-जैसे कार्य दोहराया जाएगा, उन्हें परिवर्तित रिकॉर्ड के अगले समूह के साथ MongoDB में लोड किया जाएगा।

परिवर्तन हटाएं

यह कमांड ब्लॉक changes.csv को हटाता है ताकि अगला पास पास के लिए नई बनाई गई फाइल के साथ शुरू हो।

बैच फ़ाइल

प्रवाह आरेख निर्यात किए जाने पर बैच फ़ाइल और रूपांतरण स्क्रिप्ट बनाई जाती हैं। बैच फ़ाइल की एक प्रति नीचे है। प्रत्येक ब्लॉक बैच फ़ाइल में निष्पादन योग्य पंक्तियाँ जोड़ता है।

कार्य शेड्यूलर

विंडोज टास्क शेड्यूलर का उपयोग करके, इस बैच फ़ाइल को स्रोत डेटाबेस में परिवर्तनों को कैप्चर करने के लिए बार-बार निष्पादित किया जा सकता है।

निष्कर्ष

थोड़ी सी योजना और कमांड ब्लॉक के उपयोग के साथ, डेटाबेस तालिका में परिवर्तन बैच फ़ाइल का उपयोग करके स्वचालित रूप से पता लगाया जा सकता है, और फिर चयनित अंतराल पर चलने के लिए निर्धारित किया जा सकता है।

अधिक जानकारी या अपने उपयोग के मामले में सहायता के लिए [email protected] या अपने आईआरआई प्रतिनिधि से संपर्क करें

  1. यह दृष्टिकोण लॉग-आधारित परिवर्तन डेटा कैप्चर समाधानों से अलग है, जिसमें आमतौर पर प्रदर्शन बाधाएं होती हैं, और विशिष्ट डेटाबेस तक सीमित होती हैं, और एक साथ डेटा परिवर्तन, PII डेटा मास्किंग, सफाई को सक्षम नहीं करती हैं। , और रिपोर्टिंग।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Cloud Infrastructure (OCI) पर Cloudera CDP डेटा सेंटर परिनियोजित करें

  2. NLS_LOWER () Oracle में फ़ंक्शन

  3. Oracle में किसी अन्य के साथ संग्रहीत कार्यविधि को कॉल करें

  4. PowerShell में SQL प्लस स्क्रिप्ट कैसे चलाएं

  5. Oracle में NCHR () फ़ंक्शन