Graphite 1.1 - The Whisper Database

कानाफूसी डेटाबेस




graphite

कानाफूसी डेटाबेस

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

डेटा अंक

व्हिस्पर में डेटा बिंदुओं को डिस्क पर बड़े-एंडियन डबल-सटीक फ़्लोट के रूप में संग्रहीत किया जाता है। प्रत्येक मान UNIX युग (01-01-1970) के बाद से सेकंड में टाइमस्टैम्प के साथ जोड़ा जाता है। डेटा मान को पायथन float() फ़ंक्शन द्वारा पार्स किया गया है और जैसे कि विशेष स्ट्रिंग्स जैसे 'inf' लिए उसी तरह व्यवहार करता है। अधिकतम और न्यूनतम मान फ्लोट मानों के लिए पायथन दुभाषिया की स्वीकार्य सीमा द्वारा निर्धारित किए जाते हैं जिन्हें निष्पादित करके पाया जा सकता है:

python -c 'import sys; print sys.float_info'

अभिलेखागार: अवधारण और परिशुद्धता

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

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

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

रोलअप एकत्रीकरण

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

  • औसत
  • योग
  • अंतिम
  • अधिकतम
  • मिनट

मल्टी-आर्काइव स्टोरेज एंड रिट्रीवल बिहेवियर

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

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

डिस्क स्पेस दक्षता

कतिपय डिजाइन विकल्पों के कारण डिस्क स्पेस के उपयोग में कानाफूसी कुछ अक्षम है:

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

कानाफूसी और RRD के बीच अंतर

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

प्रदर्शन

अधिकांश उद्देश्यों के लिए कानाफूसी काफी तेज है। यह मुख्य रूप से Python में लिखे गए Whisper के परिणाम के रूप में RRDtool की तुलना में धीमा है, जबकि RRDtool C. में लिखा गया है। अभ्यास में दोनों के बीच की गति का अंतर काफी कम है क्योंकि Whisper को ऑप्टिमाइज़ करने के लिए जितना प्रयास किया गया था, वह RRDtool की गति के जितना करीब था। मुमकिन। परीक्षण से पता चला है कि अपडेट ऑपरेशंस आरटीडीटूल के रूप में 2 से 3 बार तक कहीं भी लगते हैं, और 2 से 5 बार तक कहीं भी ऑपरेशन का संचालन होता है। व्यवहार में वास्तविक अंतर को सैकड़ों माइक्रोसेकंड (10 ^ -4) में मापा जाता है, जिसका अर्थ है कि साधारण मामलों के लिए मिलीसेकंड अंतर से कम।

डेटाबेस प्रारूप

WhisperFile हैडर, डाटा
हैडर मेटाडाटा, ArchiveInfo +
मेटाडाटा aggregationType, maxRetention, xFilesFactor, संग्रह COUNT
ArchiveInfo ऑफसेट, SecondsPerPoint, अंक
डेटा आर्काइव +
पुरालेख प्वाइंट +
बिंदु टाइमस्टैम्प, मूल्य

पायथन के संरचनात्मक प्रारूप में डेटा प्रकार:

मेटाडाटा !2LfL
ArchiveInfo !3L
बिंदु !Ld