PostgreSQL में रोलिंग डेटा को संग्रहीत और क्वेरी करना


12

मेरे पास PostgreSQL डेटाबेस में बड़ी मात्रा में मौसम मॉडल डेटा है। मशीन में 8 कोर और 16 जीबी रैम है। मैं PostgreSQL 9.3 PostGIS 2.1 के साथ चला रहा हूं। प्रत्येक तालिका में मौसम डेटा (अस्थायी, ओस बिंदु, हवा, आदि) की एक अलग किस्म होगी। प्रत्येक तालिका में 6-7 कॉलम होंगे: अक्षांश, देशांतर, बिंदु ज्यामिति, ऊंचाई, मॉडल के लिए प्रासंगिक समय और ब्याज के 1-2 डेटा मूल्य। डेटा को मुख्य रूप से एक बाउंडिंग बॉक्स के लिए समय और ऊंचाई के आधार पर देखा जाएगा। प्रति तालिका में लगभग 145,757,360 पंक्तियाँ होंगी (अब से पुराना डेटा प्रासंगिक नहीं हटेगा)। मैं मोटे तौर पर टेबल्स के आकार का अनुमान लगाता हूं, जिनमें से प्रत्येक बिना इंडेक्स के लगभग 10 जीबी है। (यह डेटा के 52 बाइट्स हैं और प्रति पंक्ति ओवरहेड के 23 बाइट्स हैं)। नया मॉडल डेटा उपलब्ध होते ही डेटा नियमित रूप से अपडेट / डाला जाएगा। ध्यान दें:

इसलिए मैं इन दोनों योजनाओं को देख रहा हूं:

  1. पॉइंट ज्योमेट्री के लिए अतिरिक्त इंडेक्स के साथ बस इंडेक्स और क्लस्टर (डेटाइम, एलिवेशन)। एक नियमित क्रोन नौकरी चलाएं जो पुरानी पंक्तियों को हटा देती है, वैक्यूम / विश्लेषण करती है, और फिर से क्लस्टर बनाती है।
  2. रेखागणित पर एक सूचकांक के साथ प्रति तालिका के उन्नयन द्वारा डेटाटाइम और फिर क्लस्टर और सूचकांक द्वारा विभाजन। आगे जा रही नई तालिकाओं को जोड़ने के लिए एक नियमित क्रोन जॉब चलाएं और पुरानी तालिकाओं को गिरा दें।

आगे की,

  • तो, मुझे पता है कि एक टेबल को छोड़ना बहुत अधिक कुशल और हटाने और वैक्यूमिंग है। लेकिन क्या मुझे एक प्रदर्शन को बढ़ावा मिलेगा अन्यथा?
  • क्या विभाजन उपयुक्त हैं जब अप्रासंगिक के रूप में हटाए जाने तक सभी तालिकाओं को समान रूप से अपडेट और चयनित किया जाएगा (दस्तावेज़ ने संकेत दिया कि विभाजन ने सबसे अच्छा काम किया जब उनमें से केवल कुछ को चुना जाएगा)?

डेटा डिलीवर करते समय सेलेक्ट किए गए इंडेक्स की तुलना में चयन किसी भी तेजी से होगा? यदि एक ही बार में कई अनुरोध किए जा रहे हैं तो क्या उत्तर बदलता है?

धन्यवाद। मुझे आशा है कि मैंने सभी आवश्यक डेटा डाल दिए हैं। अगर मुझे पता नहीं है और मैं इसे जोड़ दूँगा।


1
आउच, ये संकरी पंक्तियाँ हैं जहाँ PostgreSQL की बड़ी पंक्ति हेडर वास्तव में चोट लगी है। अफ़सोस की बात यह है कि वास्तव में बहुत कुछ ऐसा नहीं है जिसे हटाया जा सकता है; यह ऐसा नहीं है कि हम हार सकते हैं xminया xmaxआदि। एक ऐसी सुविधा है जो इसे 9.4 में बना सकती है जो शायद आपको उत्साहित करेगी, जिसे माइनमैक्स इंडेक्स कहा जाता है, जो इस तरह की चीजों को बहुत सुविधाजनक बना देगा।
क्रेग रिंगर

1
निम्नलिखित संयोजन दोहरावदार है: "अक्षांश, देशांतर, बिंदु ज्यामिति, ऊंचाई"। यदि हाँ, तो इसे किसी अन्य तालिका में सामान्य करने से कुछ जगह बच सकती है।
एके

केवल मामूली रूप से। एक PostGIS ज्यामिति एक बाइनरी सरणी है और मानव पठनीय नहीं है। मैं आउटपुट पर उन मूल्यों को प्राप्त कर सकता हूं, लेकिन फिर मैं उन पर क्लस्टर नहीं बना सका। मैं क्लस्टर के लिए जियो हाश का उपयोग कर सकता हूं, लेकिन यह उस समय से पढ़ने योग्य नहीं है जब लेट लोन होगा। लेकिन किसी भी तरह से जगह मुद्दा नहीं है। उन्होंने जितने भी भरण-पोषण किए, जितने मैं भर सकता था, उन्होंने चढ़ाए। समस्या यह है कि मैं गति पर टेराबीट्स को क्वेरी नहीं कर सकता। डेटाबेस ही काफी हद तक गैर-लेन-देन होगा। केवल दो लिपियों में सभी पर लिखित पहुंच होगी। बाकी सब कुछ केवल कड़ाई से पढ़ा जाता है।
bshender

क्रेग: वे पेचीदा लग रहे हैं जब मैं बाहर आने पर उनके साथ प्रयोग करने के लिए उत्सुक हूं। 9.3 में मेरे सेटअप के बारे में कोई विचार हालांकि?
bshender

1
क्या आप जानकारी के दो टुकड़े प्रदान कर सकते हैं: 1) आपके लिए सबसे महत्वपूर्ण क्या है, गति या क्वेरी गति डालना? 2) सबसे आम क्या प्रश्न हैं?
थॉमस केजर

जवाबों:


1

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

उपलब्ध विकल्पों को देखते हुए, क्लीनर डेटा संचालन और दैनिक वैक्यूम से बचना एक अच्छी बात है।

विकल्प 1 के साथ वितरण का चयन तेजी से हो सकता है, हालांकि मुझे संदेह है कि यह शायद धोना होगा। विकल्प 1 के साथ, एक ही तिथि और ऊंचाई के साथ रिकॉर्ड एक बड़े क्लस्टर इंडेक्स में एक दूसरे के पास रखे जाते हैं। विकल्प 2 के साथ, एक ही तिथि और ऊंचाई के साथ रिकॉर्ड कई छोटे क्लस्टर किए गए अनुक्रमित में एक दूसरे के पास रखे जाते हैं।

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