TimescaleDB एक ओपन-सोर्स डेटाबेस है जिसका आविष्कार समय-श्रृंखला डेटा के लिए SQL को स्केलेबल बनाने के लिए किया गया है। यह अपेक्षाकृत नया डेटाबेस सिस्टम है। TimescaleDB को दो साल पहले बाजार में पेश किया गया था और सितंबर 2018 में संस्करण 1.0 पर पहुंच गया। फिर भी, इसे एक परिपक्व RDBMS सिस्टम के शीर्ष पर बनाया गया है।
TimescaleDB को PostgreSQL एक्सटेंशन के रूप में पैक किया गया है। Timescale लाइसेंस (TSL) के तहत लाइसेंस प्राप्त समय-श्रृंखला एंटरप्राइज़ सुविधाओं से संबंधित कुछ स्रोत कोड के अपवाद के साथ, सभी कोड Apache-2 ओपन-सोर्स लाइसेंस के तहत लाइसेंस प्राप्त है।
समय-श्रृंखला डेटाबेस के रूप में, यह दिनांक और प्रमुख मानों में स्वचालित विभाजन प्रदान करता है। TimescaleDB मूल SQL समर्थन इसे उन लोगों के लिए एक अच्छा विकल्प बनाता है जो समय-श्रृंखला डेटा संग्रहीत करने की योजना बनाते हैं और पहले से ही ठोस SQL भाषा ज्ञान रखते हैं।
यदि आप एक समय-श्रृंखला डेटाबेस की तलाश कर रहे हैं जो समृद्ध SQL, HA, एक ठोस बैकअप समाधान, प्रतिकृति और अन्य एंटरप्राइज़ सुविधाओं का उपयोग कर सके, तो यह ब्लॉग आपको सही रास्ते पर ले जा सकता है।
TimescaleDB का उपयोग कब करें
TimescaleDB सुविधाओं के साथ शुरू करने से पहले, आइए देखें कि यह कहाँ फिट हो सकता है। TimescaleDB को समय-श्रृंखला के फोकस के साथ, संबंधपरक और NoSQL दोनों में से सर्वश्रेष्ठ की पेशकश करने के लिए डिज़ाइन किया गया था। लेकिन टाइम सीरीज़ डेटा क्या है?
टाइम सीरीज़ डेटा इंटरनेट ऑफ़ थिंग्स, मॉनिटरिंग सिस्टम और कई अन्य समाधानों के मूल में है जो लगातार बदलते डेटा पर केंद्रित हैं। जैसा कि "टाइम-सीरीज़" नाम से पता चलता है, हम डेटा के बारे में बात कर रहे हैं जो समय के साथ बदलते हैं। इस प्रकार के DBMS की संभावनाएं अनंत हैं। आप इसे विनिर्माण, खनन, तेल और गैस, खुदरा, स्वास्थ्य सेवा, विकास संचालन निगरानी या वित्तीय सूचना क्षेत्र में विभिन्न औद्योगिक IoT उपयोग के मामलों में उपयोग कर सकते हैं। यह मशीन लर्निंग पाइपलाइनों में या व्यावसायिक संचालन और बुद्धिमत्ता के स्रोत के रूप में भी बहुत उपयुक्त हो सकता है।
इसमें कोई संदेह नहीं है कि IoT और इसी तरह के समाधानों की मांग बढ़ेगी। इसके साथ ही, हम कई अलग-अलग तरीकों से डेटा का विश्लेषण और संसाधित करने की आवश्यकता की भी उम्मीद कर सकते हैं। समय-श्रृंखला डेटा आमतौर पर केवल जोड़ा जाता है - यह काफी संभावना नहीं है कि आप पुराने डेटा को अपडेट कर रहे होंगे। आप आमतौर पर विशेष पंक्तियों को नहीं हटाते हैं, दूसरी ओर, आप समय के साथ डेटा के किसी प्रकार का एकत्रीकरण चाहते हैं। हम न केवल यह संग्रहीत करना चाहते हैं कि हमारा डेटा समय के साथ कैसे बदलता है, बल्कि इसका विश्लेषण और उससे सीखना भी है।
नए प्रकार के डेटाबेस सिस्टम के साथ समस्या यह है कि वे आमतौर पर अपनी स्वयं की क्वेरी भाषा का उपयोग करते हैं। उपयोगकर्ताओं को नई भाषा सीखने में समय लगता है। TimescaleDB और अन्य लोकप्रिय समय श्रृंखला डेटाबेस के बीच सबसे बड़ा अंतर SQL के लिए समर्थन है। TimescaleDB समय-आधारित समुच्चय, जॉइन, सबक्वेरी, विंडो फ़ंक्शंस और सेकेंडरी इंडेक्स सहित SQL कार्यक्षमता की पूरी श्रृंखला का समर्थन करता है। इसके अलावा, यदि आपका एप्लिकेशन पहले से ही PostgreSQL का उपयोग कर रहा है, तो क्लाइंट कोड में किसी बदलाव की आवश्यकता नहीं है।
वास्तुकला की मूल बातें
TimescaleDB को PostgreSQL पर एक एक्सटेंशन के रूप में लागू किया गया है, जिसका अर्थ है कि एक टाइम-स्केल डेटाबेस एक समग्र PostgreSQL उदाहरण के भीतर चलता है। विस्तार मॉडल डेटाबेस को PostgreSQL की कई विशेषताओं जैसे विश्वसनीयता, सुरक्षा और तीसरे पक्ष के उपकरणों की एक विस्तृत श्रृंखला के लिए कनेक्टिविटी का लाभ उठाने की अनुमति देता है। उसी समय, TimescaleDB PostgreSQL के क्वेरी प्लानर, डेटा मॉडल और निष्पादन इंजन में गहराई से हुक जोड़कर एक्सटेंशन के लिए उपलब्ध उच्च स्तर के अनुकूलन का लाभ उठाता है।
TimescaleDB आर्किटेक्चरहाइपरटेबल्स
उपयोगकर्ता के दृष्टिकोण से, TimescaleDB डेटा एकवचन तालिकाओं की तरह दिखता है, जिसे हाइपरटेबल्स कहा जाता है। हाइपरटेबल्स एक अवधारणा या डेटा रखने वाली कई अलग-अलग तालिकाओं का एक निहित दृश्य है जिसे चंक्स कहा जाता है। हाइपर टेबल का डेटा या तो एक या दो आयाम हो सकता है। इसे एक समय अंतराल और एक (वैकल्पिक) "विभाजन कुंजी" मान द्वारा एकत्रित किया जा सकता है।
TimescaleDB के साथ व्यावहारिक रूप से सभी उपयोगकर्ता इंटरैक्शन हाइपरटेबल्स के साथ हैं। टेबल बनाना, इंडेक्स बनाना, टेबल बदलना, डेटा चुनना, डेटा इंसर्ट करना ... सभी हाइपरटेबल पर किए जाने चाहिए।
TimescaleDB इस व्यापक विभाजन को एकल-नोड परिनियोजन के साथ-साथ क्लस्टर परिनियोजन (विकास में) दोनों पर करता है। जबकि पारंपरिक रूप से विभाजन का उपयोग केवल कई मशीनों में स्केलिंग के लिए किया जाता है, यह हमें एकल मशीनों पर भी उच्च लेखन दर (और बेहतर समानांतर क्वेरी) तक स्केल करने की अनुमति देता है।
रिलेशनल डेटा सपोर्ट
एक रिलेशनल डेटाबेस के रूप में, इसमें SQL के लिए पूर्ण समर्थन है। TimescaleDB लचीले डेटा मॉडल का समर्थन करता है जिसे विभिन्न उपयोग के मामलों के लिए अनुकूलित किया जा सकता है। यह Timescale को अधिकांश समय-श्रृंखला डेटाबेस से कुछ अलग बनाता है। डीबीएमएस को पोस्टग्रेएसक्यूएल पर आधारित तेजी से अंतर्ग्रहण और जटिल प्रश्नों के लिए अनुकूलित किया गया है और जरूरत पड़ने पर हमारे पास मजबूत समय-श्रृंखला प्रसंस्करण तक पहुंच है।
इंस्टॉलेशन
PostgreSQL के समान TimescaleDB स्थापना के कई अलग-अलग तरीकों का समर्थन करता है, जिसमें उबंटू, डेबियन, आरएचईएल/सेंटोस, विंडोज या क्लाउड प्लेटफॉर्म पर इंस्टॉलेशन शामिल है।
TimescaleDB के साथ खेलने के सबसे सुविधाजनक तरीकों में से एक डॉकर छवि है।
नीचे दिया गया कमांड डॉकर हब से एक डॉकर छवि खींचेगा यदि इसे पहले से स्थापित नहीं किया गया है और फिर इसे चलाएँ।
docker run -d --name timescaledb -p 5432:5432 -e POSTGRES_PASSWORD=severalnines timescale/timescaledb
पहले उपयोग करें
चूंकि हमारा उदाहरण चालू है और चल रहा है, यह हमारा पहला टाइमस्केलडब डेटाबेस बनाने का समय है। जैसा कि आप नीचे देख सकते हैं, हम मानक PostgreSQL कंसोल के माध्यम से जुड़ते हैं, इसलिए यदि आपके पास PostgreSQL क्लाइंट टूल (जैसे, psql) स्थानीय रूप से स्थापित हैं, तो आप TimescaleDB docker उदाहरण तक पहुँचने के लिए उनका उपयोग कर सकते हैं।
psql -U postgres -h localhost
CREATE DATABASE severalnines;
\c severalnines
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
दैनिक संचालन
उपयोग और प्रबंधन दोनों के दृष्टिकोण से, TimescaleDB बस PostgreSQL की तरह दिखता है और महसूस करता है, और इसे प्रबंधित और क्वेरी किया जा सकता है।
दिन-प्रतिदिन के कार्यों के लिए मुख्य बुलेट पॉइंट हैं:
- एक PostgreSQL सर्वर पर अन्य TimescaleDBs और PostgreSQL डेटाबेस के साथ सह-अस्तित्व में है।
- एसक्यूएल को अपनी इंटरफ़ेस भाषा के रूप में उपयोग करता है।
- बैकअप, कंसोल आदि के लिए तृतीय-पक्ष टूल के लिए सामान्य PostgreSQL कनेक्टर का उपयोग करता है।
टाइमस्केलडीबी सेटिंग्स
PostgreSQL की आउट-ऑफ-द-बॉक्स सेटिंग्स आमतौर पर आधुनिक सर्वर और TimescaleDB के लिए बहुत रूढ़िवादी हैं। आपको यह सुनिश्चित करना चाहिए कि आपकी postgresql.conf सेटिंग्स को ट्यून किया गया है, या तो टाइमस्केलडब-ट्यून का उपयोग करके या इसे मैन्युअल रूप से करके।
$ timescaledb-tune
स्क्रिप्ट आपको परिवर्तनों की पुष्टि करने के लिए कहेगी। ये परिवर्तन तब आपके postgresql.conf पर लिखे जाते हैं और पुनरारंभ होने पर प्रभावी होंगे।
अब, TimescaleDB ट्यूटोरियल के कुछ बुनियादी कार्यों पर एक नज़र डालते हैं, जो आपको नए डेटाबेस सिस्टम के साथ काम करने का तरीका बता सकते हैं।
एक हाइपरटेबल बनाने के लिए, आप एक नियमित SQL तालिका से शुरू करते हैं और फिर इसे create_hypertable फ़ंक्शन के माध्यम से एक हाइपरटेबल में परिवर्तित करते हैं।
-- Create extension timescaledb
CREATE EXTENSION timescaledb;
Create a regular table
CREATE TABLE conditions (
time TIMESTAMPTZ NOT NULL,
location TEXT NOT NULL,
temperature DOUBLE PRECISION NULL,
humidity DOUBLE PRECISION NULL
);
इसे हाइपरटेबल में बदलना इस प्रकार सरल है:
SELECT create_hypertable('conditions', 'time');
हाइपरटेबल में डेटा सम्मिलित करना सामान्य SQL कमांड के माध्यम से किया जाता है:
INSERT INTO conditions(time, location, temperature, humidity)
VALUES (NOW(), 'office', 70.0, 50.0);
डेटा चुनना, पुराना अच्छा SQL है।
SELECT * FROM conditions ORDER BY time DESC LIMIT 10;
जैसा कि हम नीचे देख सकते हैं, हम समूह द्वारा, क्रम से, और कार्य कर सकते हैं। इसके अलावा, TimescaleDB में समय-श्रृंखला विश्लेषण के लिए फ़ंक्शन शामिल हैं जो वेनिला पोस्टग्रेएसक्यूएल में मौजूद नहीं हैं।
SELECT time_bucket('15 minutes', time) AS fifteen_min,
location, COUNT(*),
MAX(temperature) AS max_temp,
MAX(humidity) AS max_hum
FROM conditions
WHERE time > NOW() - interval '3 hours'
GROUP BY fifteen_min, location
ORDER BY fifteen_min DESC, max_temp DESC;