Graphite 1.1 - The Ceres Database

सेरेस डेटाबेस




graphite

सेरेस डेटाबेस

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

सेरेस को फिलहाल सक्रिय रूप से विकसित नहीं किया गया है। वैकल्पिक भंडारण बैकेंड को देखने के लिए विकल्प के लिए।

भंडारण अवलोकन

सेरेस डेटाबेस में डिस्क पर एकल पथ के भीतर एक एकल पेड़ शामिल होता है जो नोड्स के रूप में नेस्टिंग निर्देशिका में सभी मैट्रिक्स को संग्रहीत करता है।

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

अन्य मेटाडेटा कुंजियाँ जो ग्रेफाइट के साथ संगतता के लिए निर्धारित की जा सकती हैं, वे हैं 'retentions' , 'xFilesFacter' और 'aggregationMethod'

एक सेरेस स्लाइस में एक फ़ाइल में वास्तविक डेटा बिंदु होते हैं। केवल एक अन्य जानकारी जो एक स्लाइस रखती है, वह सबसे पुराने डेटा बिंदु, और रिज़ॉल्यूशन का टाइमस्टैम्प है। जो दोनों प्रारूप [email protected] में इसके फ़ाइलनाम के भाग के रूप में एन्कोड किए गए हैं।

सेरेस में डेटा बिंदुओं को डिस्क पर बड़े-एंडियन डबल-सटीक फ़्लोट्स की एक सन्निहित सूची के रूप में संग्रहीत किया जाता है। डेटापॉइंट के टाइमस्टैम्प को मूल्य के साथ संग्रहित नहीं किया जाता है, बल्कि यह गणना के टाइमस्टैम्प के प्लस के इंडेक्स ऑफ़सेट को गुणा द्वारा उपयोग करके गणना की जाती है।

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

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

स्लाइस: सटीक और विखंडन

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

अशक्त डेटा बिंदुओं के साथ स्लाइस को पेडों में डेटा में अंतराल को नियंत्रित किया जाता है। यदि स्लाइस गैप बहुत बड़ा है, तो इसके बजाय एक नया स्लाइस बनाया जाता है। यदि सेरेस नोड बहुत अधिक स्लाइस जमा करता है, तो पठन प्रदर्शन को नुकसान हो सकता है। यह आंतरायिक रूप से रिपोर्ट किए गए डेटा के कारण हो सकता है। टुकड़ा विखंडन को कम करने के लिए एक नया बनाने से बचने के लिए एक स्लाइस फ़ाइल के भीतर कितना स्थान बर्बाद हो सकता है, इसके लिए एक सहिष्णुता है। वह सहिष्णुता स्तर 'MAX_SLICE_GAP' द्वारा निर्धारित किया जाता है, जो एक स्लाइस फ़ाइल में अनुमत लगातार अशक्त 'MAX_SLICE_GAP' की संख्या है।

यदि बहुत कम सेट किया जाता है, तो सेरेस छोटे से छोटे डिस्क स्थान को बर्बाद कर देगा जो इस सुविधा को बर्बाद करता है, लेकिन फिर स्लाइस विखंडन के कारण प्रदर्शन समस्याओं का खतरा होगा, जो बहुत गंभीर हो सकता है।

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

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

रोल-अप एकत्रीकरण और डेटा समाप्ति जैसी अपेक्षित सुविधाएँ स्वयं सेरेस द्वारा प्रदान नहीं की जाती हैं, बल्कि रखरखाव प्लगइन्स के रूप में लागू की जाती हैं।

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

पुनर्प्राप्ति व्यवहार

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

वर्तमान में उसी तरह से मिश्रित प्रस्तावों के साथ स्लाइस को संभालने के लिए सेरेस में कोई समर्थन नहीं है जो व्हिस्पर अभिलेखागार के साथ किया जाता है।

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

CeresSlice डेटा
डेटा प्वाइंट +

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

बिंदु !d

सेरेस के लिए मेटाडेटा JSON प्रारूप में संग्रहीत किया जाता है:

"" प्रतिशोध ": [[30, 1440]]," टाइमस्टेप ": 30," xFilesFactor ": 0.5," एकत्रीकरणमेथोड ":" औसत "}