2010-08-06 8 views
7

हम वर्तमान में सारांश सारणी का उपयोग कर रहे हैं जो हमारे उपयोगकर्ताओं के लिए यूटीसी समय में एक घंटे के आधार पर जानकारी एकत्र करता है। हमारी समस्या यह है कि यह तालिका बहुत बड़ी हो रही है और हमारे सिस्टम को बहुत धीमा कर रही है। हमने PostgreSQL के लिए अनुशंसित सभी ट्यूनिंग तकनीकों को किया है और हम अभी भी धीमेपन का अनुभव कर रहे हैं।मैं समय-समय पर आंकड़ों को कैसे एकत्र करूं और फिर भी टाइमज़ोन का सम्मान करूं?

हमारे विचार दिन के बजाय घंटे के हिसाब से एकत्रित शुरू करने के लिए गया था, लेकिन समस्या यह है कि हम अपने ग्राहकों समय क्षेत्र है, जो उस दिन के लिए डेटा पुनर्गणना को बदलने की अनुमति है।

किसी को भी एक तरह से दैनिक सारांश स्टोर करने के लिए, लेकिन अभी भी सम्मान संख्या के बारे में पता है और योग करता है, जब वे समय-क्षेत्रों के लिए स्विच?

+3

क्या हम पृथ्वी पर संभावित रूप से सभी समय क्षेत्र बोल रहे हैं? – MPelletier

+1

डेटा मॉडलिंग के लिए कड़ाई से बोलते हुए, आप दिन के ग्रैन्युलरिटी पर जाने पर टाइमज़ोन स्तर का विस्तार खो रहे हैं। लेकिन, आप टाइमज़ोन द्वारा एकत्रित करने में सक्षम हो सकते हैं, खासकर यदि @ एमपीलेटियर के प्रश्न का उत्तर "नहीं" है। – bobs

+0

@MPelletier हम अभी घंटे के हिसाब से एकत्र करती हैं, इसलिए हम केवल समय-क्षेत्रों कि –

उत्तर

4

एक timeoffset स्तंभ के साथ टेबल में डेटा का सारांश, और एक "दिन" क्षेत्र (एक तारीख) जो उस विशेष सारांश रेखा के लिए दिन है। सूचकांक (टाइमऑफसेट, दिन, अन्य प्रासंगिक फ़ील्ड), यदि संभव हो तो क्लस्टर्ड (संभावित रूप से PostgresSQL क्लस्टर इंडेक्स है?) और सभी अच्छी तरह से होना चाहिए।

+1

तक जोड़ देगा, इसलिए प्रतिदिन 24 लाइनों की बजाय, एक दिन एक लाइन का उत्पादन करेगा ... बार 24 बार जोन। मुझे यहां पर्याप्त लाभ नहीं दिख रहा है। – MPelletier

+0

मैंने इसके बारे में सोचा, लेकिन फिर मुझे 24 सारांश सारणी बनाए रखना है जो टाइमज़ोन के बीच रिपोर्टिंग में अंतर की संभावना को भी बढ़ाएंगे। –

+2

@MPelletier - अंतर यह है कि आपको दैनिक आकृति बनाने के लिए दिन के लिए 24 लाइनों को एकत्र करने की आवश्यकता नहीं है - आप उस विशेष टाइमऑफसेट/दिन के लिए एक सारांश रेखा खींचते हैं - तो आप 1/24 कर रहे हैं काम - पाठ्यक्रम की उचित अनुक्रमण के साथ। –

0

मैं यह सोचते करती हूं कि आप इस तरह के उपयोगकर्ता द्वारा विभाजन के रूप में सभी विभाजन विचार, माध्यम से चला गया है।

उपयोग पैटर्न के आधार पर, मैं आपकी समस्या के कई समाधान देख सकता हूं।

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

  2. यदि आपके पास अपेक्षाकृत कुछ उपाय हैं, तो आप प्रत्येक उपाय के लिए 24 कॉलम बनाए रख सकते हैं - प्रत्येक एक अलग टाइमज़ोन में माप के लिए दैनिक योग का वर्णन करता है।

  3. समय क्षेत्र परिवर्तन लगातार कर रहे हैं और ऐसे बहुत से उपाय कर रहे हैं, ऐसा लगता है 24 विभिन्न समेकित तालिकाओं की तरह जाने का रास्ता होगा।

+0

टाइमज़ोन परिवर्तन वास्तव में अपेक्षाकृत कम हैं। मैं परिवर्तन के आधार पर उपायों को प्रोग्रामेटिक रूप से पुन: गणना कर सकता हूं लेकिन पहले परिवर्तन में महत्वपूर्ण देरी होगी। हमारे पास लगभग 8 उपाय हैं, प्रति उपाय 24 कॉलम एक अच्छा विचार नहीं होगा। मुझे लगता है कि 24 टेबल जाने का रास्ता है। मैंने @ विल ए के समाधान में देखा और यह कॉलमर डीबी के साथ व्यवहार्य हो सकता है। लेकिन एक डीबी के साथ नहीं जो पंक्तियों की संख्या के साथ घटता है। –

+0

1 9 2 पूर्णांक कॉलम वास्तव में बहुत बुरा नहीं है। और यदि आप कॉलमर डीबी का उपयोग करेंगे, तो मुझे नहीं लगता कि आपको किसी भी स्कीमा परिवर्तन की आवश्यकता होगी - कम से कम उपर्युक्त समस्या के साथ नहीं। – shmichael

0

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

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

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