उच्च मात्रा में लेनदेन और डेटा वेयरहाउसिंग के लिए PostgreSQL


11

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

मेरे पास साइट है जो बड़ी संख्या में डेटा और ट्रैफ़िक को संभालने के लिए आकार में है। EC2 इंस्टेंसेस और EBS वॉल्यूम का उपयोग करके इंफ्रास्ट्रक्चर को amazon (AWS) पर उपयोग करके बनाया जाएगा।

विश्लेषण और रिपोर्टिंग को संभालने के लिए डिज़ाइन में दो डेटाबेस, एक मुख्य लेनदेन डेटाबेस और एक डेटा वेयरहाउस होना चाहिए।

मुख्य लेनदेन डेटाबेस

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

मेरा प्रश्न, उपरोक्त आवश्यकताओं के लिए अनुशंसित सेटअप क्या है? साथ ही, क्या टेबल और वॉल्यूम विभाजन को प्रबंधित करने का कोई तरीका है? क्या एडब्ल्यूएस सेटअप का उपयोग करने के लिए सिफारिशें हैं?

डेटा वेयरहाउस डेटाबेस

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

इस मामले में अनुशंसित सेटअप क्या है? निरंतर लेखन (ETL) की वजह से इसके लिए तेज लेखन संचालन की आवश्यकता होगी। क्या हम PostgreSQL में OLAP क्यूब्स बना सकते हैं? यदि हाँ, वहाँ किसी को यह एक कोशिश की है?

डेटाबेस से जुड़ना

वेब सर्वर क्वेरी और लिखने के लिए मुख्य डेटाबेस से जुड़ेंगे। हम वर्तमान में django का उपयोग करके एक एप्लिकेशन विकसित कर रहे हैं जो कनेक्ट करने के लिए देशी लाइब्रेरी का उपयोग करता है। क्या एक ही मूल विधि का उपयोग करने की सिफारिश की गई है? या हमें pgpool को कॉन्फ़िगर करना चाहिए?

डेटा वेयरहाउस (ETL)

मुख्य और लोड से डेटा गोदाम तक पढ़ने के लिए ईटीएल प्रक्रियाओं के निर्माण के लिए अनुशंसित तरीका क्या है? कोई उपकरण? पद्धति का पालन करने के लिए? ETL प्रक्रियाओं के निर्माण में PostgreSQL कोई उपयोगी कार्य / उपकरण प्रदान करता है?


स्केलिंग के बारे में, आप इसे पढ़ना चाह सकते हैं: stackoverflow.com/questions/10256923/…
a_horse_with_no_name

जवाबों:


3

इन्फ्रास्ट्रक्चर / डाटाबेस सेवा

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

http://blog.reddit.com/2012/01/january-2012-state-of-servers.html

डेटा वेयरहाउस / ईटीएल

मैंने पिछले दिनों पेन्टाहो का उपयोग किया है। सीधे पोस्टग्रेज के साथ नहीं, लेकिन मैंने इसे ओएलएपी (मोंड्रियन) और ईटीएल (केटल) दोनों के लिए एक अच्छा समाधान माना है।

http://www.pentaho.com/

संपादित करें: "सामुदायिक संस्करण" यहां देखे जा सकते हैं

http://mondrian.pentaho.com/

http://kettle.pentaho.com/

संबंध

ये लोग वास्तव में pgbouncer की तरह लगते हैं। /programming/1125504/django-persistent-database-connection

हालांकि मुझे इसका कोई अनुभव नहीं है। जाहिर है, Disqus इसका उपयोग करता है।


0

आपका सेटअप एक जैसा दिखता है जिसे मैंने एक विश्वविद्यालय के लिए विकसित किया है। डेटाबेस विशाल नहीं था, लेकिन काफी बड़ा था, आकार में लगभग 300GB और सबसे बड़ी तालिका में लगभग 500 मिलियन रिकॉर्ड थे। और अभी भी बढ़ रहा है।

इस उद्देश्य के लिए दो वास्तव में गोमांस सर्वर (असली लोहा, वर्चुअलाइज्ड नहीं), एक वेब साइट से डेटा को संभालने के लिए समर्पित और दूसरा सांख्यिकीय गणना और विश्लेषण के लिए उपयोग किया जाता है। डेटा को दोनों दिशाओं में Slony का उपयोग करके दोहराया गया था। OLTP डेटा को लगातार OLAP सर्वर पर दोहराया गया और कुछ स्कीमा और एकल तालिकाओं को OLAP- सर्वर से OLTP में दोहराया गया। इस तरह ओएलटीपी-सर्वर को प्रभावित किए बिना विश्लेषण सर्वर पर भारी गणना की जा सकती है। आजकल, डेटा की प्रतिकृति के लिए Slony के कुछ विकल्प हैं: http://www.postgresql.org/docs/9.2/static/different-replication-solutions.html

हमारी चिंता के लिए स्लोनी अच्छी और तेज थी लेकिन यह कठोर शिक्षक हो सकती है।

जैसा कि OLAP- सर्वर लगातार बढ़ेगा यदि आपको किसी प्रकार के विभाजन का उपयोग करने पर विचार करना चाहिए यदि लागू हो।

यदि संभावना है, तो कनेक्शन पूलिंग का उपयोग करें। मैंने केवल PgPool का उपयोग किया है और यह त्रुटिपूर्ण रूप से काम करता है। PgBouncer एक और विकल्प है। Init विलंबता को कम करने के अलावा यह सत्र स्टार्टअप और सत्र प्रबंधन को भी कम करता है। http://momjian.us/main/blogs/pgblog/2012.html#April_25_2012

कनेक्शन पूल का उपयोग करने का एक और लाभ यह है कि आपको एक ऐसा बिंदु मिला है जहां आप आसानी से अपने ट्रैफ़िक को पुनर्निर्देशित कर सकते हैं (यह निश्चित रूप से एक जोखिम भी हो सकता है)।

मैंने OLAP सर्वर में डेटा लोड करने के लिए किसी भी रेडीमेड ईटीएल का उपयोग नहीं किया है। मैंने पायथन में अपनी खुद की स्क्रिप्ट लिखी क्योंकि कुछ डेटा एक अजीब प्रारूप के साथ विशाल पाठ फ़ाइलों में वितरित किए गए थे।

डेटाबेस की संरचना पर सावधानीपूर्वक विचार करने की आवश्यकता है। स्कीमा का उपयोग वस्तुओं को संभालने के लिए इकट्ठा करने और आसानी से करने के लिए अच्छा है। यह स्कीमा का उपयोग करने के साथ शुरू करने के लिए बोझिल लग सकता है लेकिन जैसा कि वस्तुओं की संख्या बढ़ती है आप खुद को धन्यवाद देंगे। यह जानते हुए कि आपको अपने स्कीमा के साथ स्पष्ट रूप से उपसर्ग वस्तुओं को जानना है, आप वास्तव में जानते हैं कि आप किन वस्तुओं पर काम करते हैं। http://momjian.us/main/blogs/pgblog/2012.html#April_27_2012

साहसी लोगों के लिए PostgreSQL XC एक दिलचस्प विकल्प या सिर्फ एक ओवरसाइज़्ड पोशाक होना चाहिए http://postgres-xc.sourceforge.net/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.