बड़े डेटा डंप का निर्यात करते समय आपकी सबसे बड़ी चिंता विफलताओं को कम करने की होनी चाहिए। यहां तक कि अगर आप एक जीबी नेटवर्क कनेक्शन को संतृप्त कर सकते हैं, तो 10 टीबी डेटा को स्थानांतरित करने में> 24 घंटे लगेंगे। विफलता के कारण (जैसे डेटाबेस कनेक्शन टाइमआउट) आप इसे पुनरारंभ नहीं करना चाहते हैं।
इसका मतलब है कि आपको निर्यात को कई टुकड़ों में तोड़ना चाहिए। आप कॉपी के अंदर चयन कथन में एक आईडी श्रेणी जोड़कर ऐसा कर सकते हैं (मैंने अभी आपका उदाहरण संपादित किया है, इसलिए त्रुटियां हो सकती हैं):
COPY (SELECT (ID, NAME, ADDRESS) FROM CUSTOMERS WHERE ID BETWEEN 0 and 1000000) TO ‘CUSTOMERS_DATA_0.CSV WITH DELIMITER '|' CSV;
बेशक, आप इन बयानों को एक संक्षिप्त कार्यक्रम के साथ उत्पन्न करेंगे; प्रत्येक के लिए आउटपुट फ़ाइल का नाम बदलना न भूलें। मैं एक आईडी श्रेणी चुनने की सलाह देता हूं जो आपको प्रति आउटपुट फ़ाइल में एक गीगाबाइट या उससे अधिक देता है, जिसके परिणामस्वरूप 10,000 मध्यवर्ती फाइलें होती हैं।
आप इन फाइलों को कहां लिखते हैं यह आप पर निर्भर है। यदि S3FS पर्याप्त रूप से विश्वसनीय है, तो मुझे लगता है कि यह एक अच्छा विचार है।
अनलोड को कई छोटे टुकड़ों में तोड़कर, आप इसे कई EC2 उदाहरणों में विभाजित भी कर सकते हैं। आप शायद केवल कुछ पाठकों के साथ डेटाबेस मशीन की बैंडविड्थ को संतृप्त करेंगे। यह भी जान लें कि क्रॉस-एजेड डेटा ट्रांसफर के लिए एडब्ल्यूएस $0.01 प्रति जीबी चार्ज करता है - 10 टीबी के साथ जो कि $ 100 है - इसलिए सुनिश्चित करें कि ये ईसी 2 मशीनें डेटाबेस मशीन के समान एजेड में हैं।
इसका मतलब यह भी है कि आप अनलोड कर सकते हैं जबकि डेटाबेस अन्यथा व्यस्त नहीं है (यानी, सामान्य कामकाजी घंटों के बाहर)।
अंत में, इसका मतलब है कि आप अपनी प्रक्रिया का परीक्षण कर सकते हैं, और आप संपूर्ण निर्यात चलाए बिना किसी भी डेटा त्रुटि को ठीक कर सकते हैं (या प्रत्येक सुधार के लिए 10TB डेटा संसाधित कर सकते हैं)।
आयात पक्ष पर, Redshift एकाधिक लोड कर सकता है समानांतर में फ़ाइलें . इससे आपके कुल समय में सुधार होना चाहिए, हालांकि मैं वास्तव में यह नहीं कह सकता कि कितना।
एक चेतावनी:मेनिफेस्ट फ़ाइल का उपयोग करें ऑब्जेक्ट नाम उपसर्ग के बजाय। मैंने ऐसे मामलों में भाग लिया है जहां S3 की अंतिम स्थिरता के कारण लोड के दौरान फ़ाइलें छोड़ दी जाती हैं।