लंबे समय से चले आ रहे हैं जब "डेटाबेस" एकल रिलेशनल डेटाबेस मैनेजमेंट सिस्टम था जो आमतौर पर डेटासेंटर में सबसे शक्तिशाली सर्वर पर स्थापित होता था। इस तरह के डेटाबेस ने सभी प्रकार के अनुरोधों को पूरा किया - OLTP, OLAP, कुछ भी व्यवसाय की आवश्यकता। आजकल डेटाबेस कमोडिटी हार्डवेयर पर चलते हैं, वे उच्च उपलब्धता के मामले में भी अधिक परिष्कृत हैं और विशेष प्रकार के ट्रैफ़िक को संभालने के लिए विशिष्ट हैं। विशेषज्ञता उन्हें बहुत बेहतर प्रदर्शन प्राप्त करने की अनुमति देती है - एक विशेष प्रकार के डेटा से निपटने के लिए सब कुछ अनुकूलित किया जाता है:अनुकूलक, भंडारण इंजन, यहां तक कि भाषा का एसक्यूएल होना जरूरी नहीं है, जैसा कि अतीत में हुआ करता था। यह कुछ एक्सटेंशन के साथ SQL-आधारित हो सकता है जो अधिक कुशल डेटा हेरफेर की अनुमति देता है, या यह पूरी तरह से नया भी हो सकता है, जिसे स्क्रैच से बनाया गया है।
आज हमारे पास क्लिकहाउस या मारियाडीबी एएक्स जैसे विश्लेषणात्मक, स्तंभ डेटाबेस हैं, हमारे पास हडोप जैसे बड़े डेटा प्लेटफॉर्म हैं, मोंगोडीबी या कैसेंड्रा जैसे नोएसक्यूएल समाधान, रेडिस जैसे कुंजी-मूल्य डेटास्टोर हैं। हमारे पास प्रोमेथियस या टाइमस्केलडीबी जैसे टाइम-सीरीज़ डेटाबेस भी हैं। इस ब्लॉग पोस्ट में हम इसी पर ध्यान देंगे। Time-Series डेटाबेस - वे क्या हैं और आप अपने परिवेश में एक और डेटास्टोर का उपयोग क्यों करना चाहेंगे।
समय-श्रृंखला डेटाबेस किस लिए हैं?
जैसा कि नाम से पता चलता है, समय-श्रृंखला डेटाबेस डेटा को संग्रहीत करने के लिए डिज़ाइन किया गया है जो समय के साथ बदलता है। यह किसी भी प्रकार का डेटा हो सकता है जो समय के साथ एकत्र किया गया था। यह कुछ प्रणालियों से एकत्रित मेट्रिक्स हो सकता है - सभी ट्रेंडिंग सिस्टम समय-श्रृंखला डेटा के उदाहरण हैं।
जब भी आप ClusterControl में डैशबोर्ड को देखते हैं, तो आप वास्तव में प्रोमेथियस में संग्रहीत समय-श्रृंखला डेटा के दृश्य प्रतिनिधित्व को देख रहे होते हैं, जो एक समय-श्रृंखला डेटाबेस है।
समय-श्रृंखला डेटा डेटाबेस मेट्रिक्स तक सीमित नहीं है। सब कुछ एक मीट्रिक हो सकता है। मॉल में प्रवेश करने वाले लोगों का प्रवाह समय के साथ कैसे बदलता है? किसी शहर में ट्रैफिक कैसे बदलता है? सार्वजनिक परिवहन का उपयोग दिन के दौरान कैसे बदलता है? जलधारा या नदी में बहता है। जल संयंत्र द्वारा उत्पन्न ऊर्जा की मात्रा। यह सब और बाकी सब कुछ जिसे समय में मापा जा सकता है, समय-श्रृंखला डेटा का एक उदाहरण है। इस तरह के डेटा को आप विभिन्न मेट्रिक्स के बीच सहसंबंध खोजने के लिए क्वेरी, प्लॉट, विश्लेषण कर सकते हैं।
समय-श्रृंखला डेटाबेस में डेटा कैसे संरचित किया जाता है?
जैसा कि आप कल्पना कर सकते हैं, समय-श्रृंखला डेटाबेस में सबसे महत्वपूर्ण डेटा समय है। डेटा स्टोर करने के दो मुख्य तरीके हैं। एक, की-वैल्यू स्टोरेज जैसा दिखने वाला कुछ ऐसा दिखाई दे सकता है:
टाइमस्टैम्प | <थ>मीट्रिक 1|
---|---|
2019-03-28 00:00:01 | 2356 |
2019-03-28 00:00:02 | 6874 |
2019-03-28 00:00:03 | 3245 |
2019-03-28 00:00:04 | 2340 |
संक्षेप में, प्रत्येक टाइमस्टैम्प के लिए हमारे पास हमारे मीट्रिक के लिए कुछ मूल्य होता है।
एक अन्य उदाहरण में अधिक मीट्रिक शामिल होंगे। प्रत्येक मीट्रिक को एक अलग तालिका या संग्रह में संग्रहीत करने के बजाय, एकाधिक मीट्रिक को साथ में संग्रहीत करना संभव है।
टाइमस्टैम्प | <थ>मीट्रिक 1 <थ>मैट्रिक 2 <थ>मीट्रिक 3 <थ>मैट्रिक 4 <थ>मीट्रिक 5|||||
---|---|---|---|---|---|
2019-03-28 00:00:01 | 765 | 873 | 124 | 98 | 0 |
2019-03-28 00:00:02 | 5876 | 765 | 872 | 7864 | 634 |
2019-03-28 00:00:03 | 234 | 7679 | 98 | 65 | 34 |
2019-03-28 00:00:04 | 345 | 3 | 598 | 0 | 7345 |
यह डेटा संरचना मेट्रिक्स संबंधित होने पर डेटा को अधिक कुशलता से क्वेरी करने में मदद करती है। कई तालिकाओं को पढ़ने और सभी मीट्रिक को एक साथ जोड़ने के बजाय, एक एकल तालिका को पढ़ने के लिए पर्याप्त है और सभी डेटा संसाधित और प्रस्तुत करने के लिए तैयार हैं।
आपको आश्चर्य हो सकता है - यहाँ वास्तव में नया क्या है? यह MySQL या अन्य रिलेशनल डेटाबेस में एक नियमित तालिका से कैसे भिन्न है? ठीक है, टेबल डिज़ाइन काफी समान है लेकिन वर्कलोड में महत्वपूर्ण अंतर हैं, जब डेटास्टोर को उनका फायदा उठाने के लिए डिज़ाइन किया गया है, तो प्रदर्शन में काफी सुधार हो सकता है।
समय-श्रृंखला डेटा आमतौर पर केवल जोड़ा जाता है - यह काफी संभावना नहीं है कि आप पुराने डेटा को अपडेट कर रहे होंगे। आप आमतौर पर विशेष पंक्तियों को नहीं हटाते हैं, दूसरी ओर आप समय के साथ डेटा के किसी प्रकार का एकत्रीकरण चाहते हैं। यह, जब डेटाबेस इंटर्नल को डिजाइन करते समय ध्यान में रखा जाता है, तो "मानक" रिलेशनल (और रिलेशनल भी नहीं) डेटाबेस पर एक महत्वपूर्ण अंतर आएगा, जिसका उद्देश्य ऑनलाइन लेनदेन प्रसंस्करण प्रकार के ट्रैफ़िक की सेवा करना है:जो सबसे महत्वपूर्ण है वह है लगातार स्टोर करने की क्षमता (jngest) बड़ी मात्रा में डेटा जो समय के साथ आ रहा है।
समय-श्रृंखला डेटा को संग्रहीत करने के लिए RDBMS का उपयोग करना संभव है, लेकिन RDBMS इसके लिए अनुकूलित नहीं है। इसके पीछे जेनरेट किया गया डेटा और इंडेक्स बहुत बड़ा हो सकता है, और क्वेरी करने में धीमा हो सकता है। RDBMS में उपयोग किए जाने वाले स्टोरेज इंजन को विभिन्न प्रकार के डेटा को स्टोर करने के लिए डिज़ाइन किया गया है। वे आम तौर पर ऑनलाइन लेनदेन प्रसंस्करण कार्यभार के लिए अनुकूलित होते हैं जिसमें बार-बार डेटा संशोधन और हटाना शामिल होता है। संबंधपरक डेटाबेस में समय-श्रृंखला डेटा को संसाधित करने से संबंधित विशेष कार्यों और सुविधाओं की कमी होती है। हमने उल्लेख किया है कि आप संभवत:एक निश्चित अवधि से पुराने डेटा को एकत्रित करना चाहते हैं। आप अपने समय-श्रृंखला डेटा को सुचारू करने, रुझानों को निर्धारित करने और तुलना करने, डेटा को प्रक्षेपित करने और बहुत कुछ करने के लिए कुछ सांख्यिकीय कार्यों को आसानी से चलाने में सक्षम होना चाहते हैं। उदाहरण के लिए, प्रोमेथियस द्वारा उपयोगकर्ताओं के लिए उपलब्ध कराए गए कुछ कार्यों को आप यहां देख सकते हैं।
समय-श्रृंखला डेटाबेस के उदाहरण
बाजार में कई मौजूदा समय-श्रृंखला डेटाबेस हैं, इसलिए उन सभी को कवर करना संभव नहीं है। हम अभी भी समय-श्रृंखला डेटाबेस के कुछ उदाहरण देना चाहेंगे जिन्हें आप जानते होंगे या शायद इस्तेमाल भी कर सकते हैं (जानबूझकर या नहीं)।
InfluxDB
InfluxDB को InfluxData द्वारा बनाया गया है। यह एक ओपन-सोर्स टाइम-सीरीज़ डेटाबेस है जिसे गो में लिखा गया है। डेटास्टोर डेटा को क्वेरी करने के लिए SQL जैसी भाषा प्रदान करता है, जिससे डेवलपर्स के लिए अपने अनुप्रयोगों में एकीकृत करना आसान हो जाता है। InfluxDB एक वाणिज्यिक पेशकश के हिस्से के रूप में भी काम करता है, जो समय-श्रृंखला डेटा को संसाधित करने के लिए एक पूर्ण-विशेषताओं, अत्यधिक उपलब्ध वातावरण प्रदान करने के लिए डिज़ाइन किए गए पूरे स्टैक को कवर करता है।
प्रोमेथियस
प्रोमेथियस एक और ओपन सोर्स प्रोजेक्ट है जिसे गो में भी लिखा गया है। यह आमतौर पर विभिन्न ओपन सोर्स टूल्स और प्रोजेक्ट्स के लिए बैकएंड के रूप में उपयोग किया जाता है, उदाहरण के लिए पेरकोना मॉनिटरिंग एंड मैनेजमेंट। Prometheus ClusterControl के लिए पसंदीदा समय-श्रृंखला डेटाबेस भी रहा है।
Prometheus को ClusterControl से परिनियोजित किया जा सकता है जिसका उपयोग ClusterControl द्वारा मॉनिटर और प्रबंधित डेटाबेस सर्वर पर एकत्रित समय-श्रृंखला डेटा को संग्रहीत करने के लिए किया जा सकता है:
खुले स्रोत की दुनिया में व्यापक रूप से उपयोग किए जाने के कारण, प्रोमेथियस कई निर्यातकों का उपयोग करके आपके मौजूदा वातावरण में एकीकृत करना काफी आसान है।
आरआरडीटूल
यह समय-श्रृंखला डेटाबेस का एक उदाहरण हो सकता है जिसका उपयोग बहुत से लोग बिना यह जाने कि वे ऐसा करते हैं। RRDtool समय-श्रृंखला डेटा को संग्रहीत और विज़ुअलाइज़ करने के लिए एक बहुत ही लोकप्रिय ओपन सोर्स प्रोजेक्ट है। यदि आपने कभी कैक्टि का उपयोग किया है, तो यह RRDtool पर आधारित था। यदि आपने अपना समाधान स्वयं डिज़ाइन किया है, तो बहुत संभव है कि आपने अपने डेटा को संग्रहीत करने के लिए बैकएंड के रूप में RRDtool का भी उपयोग किया हो। आजकल यह उतना लोकप्रिय नहीं है जितना पहले हुआ करता था लेकिन 2000 - 2010 में यह समय-श्रृंखला डेटा संग्रहीत करने का सबसे आम तरीका था। मजेदार तथ्य - ClusterControl के शुरुआती संस्करणों ने इसका इस्तेमाल किया।
टाइमस्केल
TimeScale PostgreSQL के शीर्ष पर विकसित एक समय-श्रृंखला डेटाबेस है। यह PostgreSQL पर एक एक्सटेंशन है, जो डेटा तक पहुंच प्रदान करने के लिए अंतर्निहित डेटास्टोर पर निर्भर करता है, जिसका अर्थ है कि यह उन सभी SQL को स्वीकार करता है जिनका आप उपयोग करना चाहते हैं। एक एक्सटेंशन होने के नाते, यह PostgreSQL की अन्य सभी सुविधाओं और एक्सटेंशन का उपयोग करता है। आप समय-श्रृंखला और अन्य प्रकार के डेटा को मिला सकते हैं, उदाहरण के लिए समय-श्रृंखला और मेटाडेटा में शामिल होने के लिए, आउटपुट को समृद्ध करना। आप जॉइन और गैर-समय-श्रृंखला तालिकाओं का उपयोग करके अधिक उन्नत फ़िल्टरिंग भी कर सकते हैं। PostgreSQL TimeScale में GIS समर्थन का उपयोग समय के साथ भौगोलिक स्थानों पर नज़र रखने में आसानी से किया जा सकता है। यह प्रतिकृति सहित, PostgreSQL द्वारा प्रदान की जाने वाली सभी स्केलिंग संभावनाओं का भी लाभ उठा सकता है।
टाइमस्ट्रीम
अमेज़ॅन वेब सर्विसेज में टाइम-सीरीज़ डेटाबेस के लिए एक पेशकश भी है। टाइमस्ट्रीम की घोषणा हाल ही में नवंबर, 2018 में की गई है। यह एडब्ल्यूएस पोर्टफोलियो में एक और डेटास्टोर जोड़ता है, इस बार उपयोगकर्ताओं को इंटरनेट ऑफ थिंग्स उपकरणों या निगरानी सेवाओं जैसे स्रोतों से आने वाले समय-श्रृंखला डेटा को संभालने में मदद करता है। इसका उपयोग कई सेवाओं द्वारा बनाए गए लॉग से प्राप्त मेट्रिक्स को स्टोर करने के लिए भी किया जा सकता है, जिससे उपयोगकर्ता उन पर विश्लेषणात्मक प्रश्नों को चला सकते हैं, पैटर्न और शर्तों को समझने में मदद करते हैं जिनके तहत सेवाएं काम करती हैं।
टाइमस्ट्रीम, अधिकांश एडब्ल्यूएस सेवाओं के रूप में, समय के साथ डेटा को संग्रहीत करने और विश्लेषण करने की आवश्यकता होने पर स्केलिंग का एक आसान तरीका प्रदान करता है।
जैसा कि आप देख सकते हैं, बाजार में कई विकल्प हैं और यह आश्चर्य की बात नहीं है। समय-श्रृंखला डेटा विश्लेषण हाल ही में अधिक से अधिक कर्षण प्राप्त कर रहा है, यह व्यावसायिक कार्यों के लिए अधिक से अधिक महत्वपूर्ण हो जाता है। सौभाग्य से, ओपन सोर्स और कमर्शियल दोनों तरह की पेशकशों की बड़ी संख्या को देखते हुए, यह काफी संभावना है कि आपको एक ऐसा टूल मिल जाए जो आपकी आवश्यकताओं के अनुरूप हो।