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

बिग डेटा तेजी से लोड हो रहा है

बड़ा डेटा लोड हो रहा है? अधिक गति के लिए, प्री-सॉर्ट और बल्क लोड

बड़ा डेटा लोड करते समय अधिक गति ढूँढना ETL, reorg, और बहुत बड़े डेटाबेस (VLDB) अनुक्रमणिका में एक चुनौती है। संचालन को आबाद करें। बड़े डेटा को तेजी से लोड करने का एक तरीका इसे पूर्व-सॉर्ट करना है, इसलिए डेटाबेस को सॉर्ट करने की आवश्यकता नहीं है। आईबीएम और अन्य मेनफ्रेम डेटाबेस प्रदाताओं ने दशकों से यह सलाह दी है, और यह आज भी यूनिक्स और अन्य "ओपन सिस्टम" पर उपयोग किए जाने वाले रिलेशनल डेटाबेस में सच है, जिसमें Oracle, DB2, Sybase और SQL सर्वर शामिल हैं।

इस क्षेत्र में बेंचमार्क वॉल्यूम के आधार पर अनसोल्ड लोड पर सुधार दिखाते हैं, लेकिन IRI जैसे सॉर्ट वेंडर दावा करते हैं कि लोड प्रदर्शन में दो से दस गुना के बीच सुधार हुआ है। TUSC परामर्श रिपोर्ट में "Oracle में बेंचमार्किंग इंडेक्स इंपैक्ट ऑन OLTP लोड रेट्स और ऑनलाइन डेटाबेस ब्लॉक साइज रीबिल्ड", अकेले 100,000 पंक्ति सिंगल-इंडेक्स इंसर्ट टेस्ट ने दिखाया कि प्री-सॉर्ट किए गए डेटा को 58% तेजी से लोड किया गया, और 49% कम स्थान की आवश्यकता थी:

  • सॉर्ट किए गए क्रम में लोड होने पर 42% कम निरंतर पंक्तियां/सेकंड लोड दर थी
  • अनुक्रमित इन्सर्ट इंडेक्स में अधिक आंतरिक डेटाबेस कार्य (ब्लॉक प्रबंधन और अंतरिक्ष पुनर्गठन) करने के लिए मजबूर करते हैं
  • लोड-सॉर्टेड इंडेक्स में, क्लस्टरिंग फैक्टर लीफ ब्लॉक्स की संख्या के करीब होगा
  • लोड किए गए डेटा का क्रम प्रदर्शन लोड करने के लिए महत्वपूर्ण है।

कई वर्षों बाद, अपने "एक्सपर्ट ओरेकल डेटाबेस 11जी एडमिनिस्ट्रेशन" गाइड के अध्याय 13 में, सैम आर। अलापति (मिरो कंसल्टिंग) ने ओरेकल (बनाम इंसर्ट्स) को बल्क लोड करने के सबसे तेज़ तरीके के रूप में डायरेक्ट पाथ लोड के संयोजन में प्री-सॉर्टिंग की सिफारिश की:

“द डायरेक्ट-पाथ लोडिंग तालिका में डेटा डालने के लिए विकल्प SQL INSERT कथन का उपयोग नहीं करता है; इसके बजाय, यह Oracle डेटा ब्लॉक को प्रारूपित करता है और उन्हें सीधे डेटाबेस फ़ाइलों में लिखता है। यह प्रत्यक्ष-लेखन प्रक्रिया तालिकाओं को लोड करने के लिए SQL कथनों को निष्पादित करने में शामिल अधिकांश ओवरहेड को समाप्त करती है। चूंकि डायरेक्ट-पाथ लोडिंग विधि डेटाबेस संसाधनों के लिए संघर्ष नहीं करती है, यह पारंपरिक डेटा लोड की तुलना में डेटा को बहुत तेजी से लोड करेगी। बड़े डेटा लोड के लिए, डायरेक्ट-पाथ लोडिंग विधि शब्द सबसे अच्छा है, और यह साधारण कारण के लिए डेटा को टेबल में लोड करने का एकमात्र व्यवहार्य तरीका हो सकता है कि एक पारंपरिक लोड को उपलब्ध होने से अधिक समय की आवश्यकता हो सकती है। ”

आज VLDB के व्यवस्थापकों के लिए, CoSort यहीं काम आता है, क्योंकि:

“कम लोड समय के स्पष्ट लाभों के अलावा, प्रत्यक्ष लोडिंग आपको अनुक्रमणिका के पुनर्निर्माण और तालिका डेटा को पूर्वनिर्धारित करने में भी मदद करती है।”

CoSort पारंपरिक रूप से एक फ्लैट फ़ाइल के बाहरी पूर्व-प्रकार में उपयोग किया जाता है जो "प्रत्यक्ष =सत्य" और इस विकल्प को निर्दिष्ट करने वाले लोड का आयात होगा:

“SORTED INDEXES:SORTED_INDEXES पैरामीटर SQL*लोडर को संकेत देता है कि डेटा एक निर्दिष्ट इंडेक्स पर सॉर्ट किया गया है, जो लोड प्रदर्शन को बेहतर बनाता है।”

इसी तरह, माइक्रोसॉफ्ट एसक्यूएल सर्वर दस्तावेज "थोक आयात को अनुकूलित करने के तरीकों" में से एक के रूप में फ़ाइल प्री-सॉर्ट निर्दिष्ट करता है:

<ब्लॉकक्वॉट>

डिफ़ॉल्ट रूप से, एक थोक-आयात कार्रवाई मानती है कि एक डेटा फ़ाइल अनियंत्रित है। यदि तालिका में एक संकुल अनुक्रमणिका है, तो bcp उपयोगिता, बल्क इंसर्ट स्टेटमेंट और OPENROWSET(बल्क…) फ़ंक्शन (ट्रांजैक्ट-एसक्यूएल) आपको यह निर्दिष्ट करने में सक्षम बनाता है कि बल्क-आयात ऑपरेशन के दौरान डेटा फ़ाइल में डेटा कैसे सॉर्ट किया जाता है। डेटा फ़ाइल में डेटा को तालिका के समान क्रम में क्रमबद्ध करना वैकल्पिक है। हालांकि, यदि आप तालिका के रूप में डेटा फ़ाइल के लिए समान क्रम निर्दिष्ट करते हैं, तो आप बल्क-आयात संचालन के प्रदर्शन में सुधार कर सकते हैं।

CoSort SortCL स्क्रिप्ट में /KEY फ़ील्ड आमतौर पर तालिका में सबसे लंबी अनुक्रमणिका (प्राथमिक) कुंजी होगी, लेकिन यह होना आवश्यक नहीं है। TUSC के अनुसार, समान कॉलम के लिए:

  • अधिक छोटी अनुक्रमणिकाओं के लिए कम लंबी अनुक्रमणिका बेहतर होती है
  • अग्रणी कॉलम इंडेक्स लोड लागत को बढ़ाता है

यह भी ध्यान दें कि:

  • प्रति वर्टिका और अन्य आरडीबीएमएस प्राइमर, क्रमबद्ध क्रम में कॉलम बनाए रखना क्वेरी प्रदर्शन को अनुकूलित करता है। यहां तक ​​कि DEC के Rdb/VMS गाइड टू डेटाबेस मेंटेनेंस एंड परफॉर्मेंस में दी गई पुरानी सलाह अभी भी सही है:

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

  • तालिकाओं में डेटा पूर्व-क्रमबद्ध करने से दृश्यों में भी समय की बचत हो सकती है। केविन लोनी द्वारा "Oracle डेटाबेस 10g:द कम्प्लीट रेफरेंस" के अनुसार:

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

  • मि. अलापति डीबीए को सीधे पथ लोड की सीमा के बारे में चेतावनी देते हैं:
    “नोट:सीधे लोड में, आप किसी भी SQL फ़ंक्शन का उपयोग नहीं कर सकते हैं। यदि आपको एक बड़ा डेटा लोड करने और बदलने की आवश्यकता है लोड के दौरान डेटा, आपको कोई समस्या है। पारंपरिक डेटा लोड आपको डेटा बदलने के लिए SQL फ़ंक्शन का उपयोग करने देगा, लेकिन प्रत्यक्ष लोड की तुलना में विधि बहुत धीमी है। इस प्रकार, बड़े डेटा लोड के लिए, आप नई लोड/ट्रांसफ़ॉर्म तकनीकों में से किसी एक का उपयोग करने पर विचार कर सकते हैं, जैसे कि बाहरी टेबल या टेबल फ़ंक्शन।”
    हालांकि, CoSort का SortCL प्रोग्राम लोडिंग डेटा को प्री-सॉर्टिंग के दौरान बदल सकता है; यानी एक ही जॉब स्क्रिप्ट और I/O पास में एक ही प्रकार के SQL फ़ंक्शंस को मिलाकर, जिसमें शामिल हैं:जॉइन, एग्रीगेशन, क्रॉस-कैलकुलेशन, लुकअप, सेलेक्ट/फ़िल्टर, सबस्ट्रिंग और इंस्ट्रिंग फ़ंक्शंस, और बहुत सारे रिफॉर्मेटिंग और कस्टम-रिपोर्ट लक्ष्य — उसी प्री-सॉर्ट ऑपरेशन में।
  • आईआरआई वर्कबेंच (एक्लिप्स जीयूआई) में नई ऑफलाइन रीऑर्ग यूटिलिटी ओसीआई के माध्यम से टेबल डेटा को जल्दी से अनलोड करने के लिए आईआरआई फैक्ट (फास्ट एक्सट्रैक्ट) का उपयोग करती है, प्राथमिक कुंजी पर प्री-सॉर्ट करने के लिए कोसॉर्ट का उपयोग करती है, और एसक्यूएल * लोडर डायरेक्ट लिखता है और चलाता है इनमें से प्रत्येक चरण को अनुकूलित और संयोजित करने के लिए पथ लोड होता है।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक सॉफ्टवेयर विकास भूमिका का एनाटॉमी:डेटा वैज्ञानिक

  2. टी-एसक्यूएल में किसी तिथि से दिन कैसे प्राप्त करें

  3. SQL में SUBSTRING का उपयोग करके वर्णों का एक सेट कैसे प्राप्त करें?

  4. PAAS सेवा मॉडल कैसे काम करता है?

  5. टेबल एक्सप्रेशन के फंडामेंटल, भाग 2 - व्युत्पन्न टेबल, तार्किक विचार