2010-07-20 11 views
6

मेरे पास एक प्रणाली है जो हर सेकेंड कुछ मापे गए मान रिकॉर्ड करती है। प्रवृत्ति डेटा को स्टोर करने का सबसे अच्छा तरीका क्या है जो विशिष्ट दूसरे के अनुरूप मान हैं?ट्रेंडिंग 100 मिलियन + पंक्तियां

1 day = 86.400 seconds 
1 month = 2.592.000 seconds 

हर सेकेंड का ट्रैक रखने के लिए लगभग 1000 मान।

वर्तमान में 20 कॉलम के लिए ट्रेंड डेटा को समूहीकृत करने वाली 50 तालिकाएं हैं। इन तालिकाओं में 100 मिलियन से अधिक पंक्तियां हैं।

TREND_TIME datetime (clustered_index) 
    TREND_DATA1 real 
    TREND_DATA2 real 
    ... 
    TREND_DATA20 real 
+1

क्या रुझान डेटा को पढ़ने या अपडेट करने जा रहा है? –

+0

आपको आरडीबीएमएस निर्दिष्ट करना चाहिए - यह भौतिक डेटाबेस कार्यान्वयन का एक सवाल है जो लॉजिकल डिज़ाइन नहीं है, आरडीबीएमएस यहां मायने रखता है। – Unreason

+0

इसे कई प्रकार के ग्राफिक्स प्रदर्शित करने के लिए बहुत कुछ पढ़ा जाएगा। – kerem

उत्तर

2

मैं डेटा बचत दृष्टिकोण बदलूंगा और 'कच्चे' डेटा को सहेजने के बजाय मूल्यों के रूप में एक सरणी (मेमोरी, बीएल पक्ष) में 5-20 मिनट के डेटा को सहेजता हूं, एलजेड आधारित एल्गोरिदम का उपयोग करके उस सरणी को संपीड़ित करता हूं और फिर स्टोर करता है डेटाबेस में डेटा बाइनरी डेटा के रूप में। साथ ही, उस बाइनरी खंड के लिए अधिकतम/न्यूनतम/औसत/आदि को सहेजना अच्छा लगेगा।

जब आप डेटा को संसाधित करना चाहते हैं तो आप डेटा के बाद डेटा खंड को संसाधित कर सकते हैं और इसके द्वारा आप अपने एप्लिकेशन के लिए कम मेमोरी प्रोफाइल रख सकते हैं। यह दृष्टिकोण स्मृति/प्रसंस्करण के मामले में थोड़ा अधिक जटिल लेकिन बहुत स्केलेबल है।

उम्मीद है कि इससे मदद मिलती है।

+0

यह दृष्टिकोण स्केलेबल नहीं है मुझे लगता है क्योंकि जब मैं एक महीने का डेटा देखना चाहता हूं, तो मुझे बहुत कुछ करना होगा। – kerem

+0

मुझे पता है तुम्हारा क्या मतलब है। यदि संभव हो, तो इस समस्या को हल करने के लिए, एक महीने/वर्ष से अधिक संकुचित डेटा का सारांश बनाएं और उस सारांश को डेटाबेस में संग्रहीत करें। आपको शायद बेस डेटा पर किए गए विभिन्न परिचालनों का प्रतिनिधित्व करने वाले विभिन्न सारांशों को स्टोर करने की आवश्यकता होगी लेकिन आपको चमकदार गति मिल जाएगी। – Gilad

0

समस्या डेटाबेस डेटाबेस है?

कई रुझानों के लिए 1 सेकंड स्पष्ट रूप से पहले आपको सेकंड-टेबल विदेशी कुंजी के साथ एक अलग तालिका दिखाता है। वैकल्पिक रूप से, यदि "कई प्रवृत्ति मान" कॉलम द्वारा दर्शाए जाते हैं और पंक्तियां नहीं हैं तो आप हमेशा कॉलम को सेकंड तालिका में जोड़ सकते हैं और शून्य मान ले सकते हैं।

क्या आपने कोशिश की है? प्रदर्शन खराब था?

3

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

Ganglia और Cacti कवर के तहत इसका उपयोग करें और यह कई भाषाओं से उपयोग करना काफी आसान है।

यदि आपको सभी डेटापॉइंट्स की आवश्यकता है, तो इसे केवल एकत्रीकरण के लिए उपयोग करने पर विचार करें।

+0

मैं निश्चित रूप से इस दृष्टिकोण के पक्ष में हूं, मैं वर्षों से कई डेटा श्रृंखलाओं को ट्रैक करने के लिए गैंग्लिया का उपयोग करता हूं और यह बहुत अच्छा काम करता है! –

+0

धन्यवाद, गैंग्लिया और कैक्टि बहुत उपयोगी लगते हैं। लेकिन मुझे आरआरडीटूल के लिए सी # लाइब्रेरी नहीं मिली। – kerem

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