2011-09-28 13 views
6

मेरे पास एक बड़ी तालिका (~ 20 मीटर पंक्तियां) पढ़ने, एक प्रसंस्करण करने और इंडेक्सिंग उद्देश्यों के लिए इसे सौर पर खाने के लिए एक रूबी स्क्रिप्ट है। यह हमारी प्रक्रिया में एक बड़ी बाधा रही है। मैं यहां चीजों को गति देने की योजना बना रहा हूं और मैं कुछ प्रकार की समांतरता प्राप्त करना चाहता हूं। मैं रुबी की बहुप्रणाली प्रकृति के बारे में उलझन में हूं। हमारे सर्वर में ruby 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux] है। this blog post और this question at StackOverflow से यह दिखाई देता है कि रुबी के पास "वास्तविक" बहु थ्रेडिंग दृष्टिकोण नहीं है। हमारे सर्वर में एकाधिक कोर हैं, इसलिए parallel gem का उपयोग करना मेरे लिए एक और दृष्टिकोण है।विशाल डेटाबेस पढ़ने के लिए रूबी समांतर/मल्टीथ्रेड प्रोग्रामिंग

मुझे किस दृष्टिकोण के साथ जाना चाहिए? साथ ही, समांतर-डेटाबेस-रीड-फीडिंग सिस्टम पर किसी भी इनपुट की अत्यधिक सराहना की जाएगी।

+0

आप डेटाबेस तक कैसे पहुंचते हैं? क्या आप हमें कुछ कोड दिखा सकते हैं? –

+0

मैं MySQL की सीमा का उपयोग करते हुए एक समय में एन (~ 500) रिकॉर्ड्स लाने के लिए mysql मणि का उपयोग करता हूं, ऑफ़सेट पैरामीटर। बैच उन्हें संसाधित करते हैं और बैच उन्हें सोलर को खिलाते हैं। क्या अधिक जानकारी चाहिए? –

उत्तर

1

रुबी 1.9 में अपग्रेड करने का कोई मौका? यह आमतौर पर 1.8.7 से तेज है।

यह सच है कि रूबी GIL होने से पीड़ित है, लेकिन यदि मल्टीथ्रेडिंग आपकी समस्या का समाधान करेगी तो आप JRuby पर एक वास्तविक नज़र का समर्थन कर सकते हैं क्योंकि यह सही थ्रेडिंग का समर्थन करता है।

इसके अलावा आप यह सुनिश्चित करते हैं कि यह सीपीयू है जो बाधा है क्योंकि यदि यह I/O मल्टीथ्रेडिंग आपको अधिक खरीद नहीं सकता है।

4

आप इसे ओएस स्तर पर समानांतर कर सकते हैं। स्क्रिप्ट बदलें ताकि यह आपकी इनपुट फ़ाइल

$ reader_script --lines=10000:20000 mytable.txt 

से कई पंक्तियों को ले जा सके, फिर स्क्रिप्ट के कई उदाहरण निष्पादित करें।

$ reader_script --lines=0:10000 mytable.txt& 
$ reader_script --lines=10000:20000 mytable.txt& 
$ reader_script --lines=20000:30000 mytable.txt& 

यूनिक्स उन्हें स्वचालित रूप से अलग-अलग कोरों में वितरित करेगा।

+0

यह एक उचित दृष्टिकोण की तरह लगता है। हमारे पास 8 कोर हैं, इसलिए मैं 8 उदाहरण तक आसानी से चला सकता हूं। –

+0

'reader_script' के बारे में कोई दस्तावेज? मुझे कोई नहीं मिला। – Chamnap

संबंधित मुद्दे