एक-डेटाबेस-फिट-सभी दृष्टिकोण के दिन लंबे समय से चले गए हैं।
वेग, प्रदर्शन और चपलता पर बढ़ती आवश्यकताओं के साथ, कई डेटास्टोर उभरे, जिनका उद्देश्य एक विशेष समस्या को हल करना है। हमारे पास संबंधपरक डेटाबेस, दस्तावेज़ स्टोर, समय-श्रृंखला डेटाबेस, स्तंभ डेटाबेस, पूर्ण पाठ खोज इंजन हैं।
एक ही वातावरण में कई डेटास्टोर को एक साथ काम करते देखना काफी आम है।
तो मारियाडीबी एएक्स तस्वीर में कैसे फिट बैठता है? यह मारियाडीबी TX से कैसे तुलना करता है और यह किस समस्या का समाधान करता है?
इस ब्लॉग पोस्ट में, हम MariaDB AX पर एक नज़र डालेंगे, और देखेंगे कि आप इसका उपयोग क्यों करना चाहते हैं।
MariaDB AX क्या है?
सबसे पहले चीज़ें, तो MariaDB AX क्या है?
यह एक कॉलम स्टोर है, और यह अपने डेटा को ... कॉलम द्वारा स्टोर करता है! इसे मारियाडीबी 10.3 डेटाबेस में एक अलग इंजन के रूप में लागू किया गया है।
जैसा कि आप जानते हैं, MySQL और MariaDB को प्लग करने योग्य स्टोरेज इंजन का उपयोग करने के लिए डिज़ाइन किया गया है। हर स्टोरेज इंजन, चाहे वह InnoDB, Aria, MyRocks, स्पाइडर या कोई अन्य इंजन प्लगइन्स हों।
उसी तरह, MariaDB AX ColumnStore इंजन का उपयोग करता है:
MariaDB [(none)]> SHOW ENGINES\G
*************************** 1. row ***************************
Engine: Columnstore
Support: YES
Comment: Columnstore storage engine
Transactions: YES
XA: NO
Savepoints: NO
यह एक दिलचस्प संयोजन का परिणाम है। SQL पार्सिंग मारियाडीबी द्वारा की जाती है, इस प्रकार आप क्वेरी सिंटैक्स के साथ काम करने की उम्मीद कर सकते हैं जो कि मारियाडीबी में आपके द्वारा उपयोग किए जाने के समान है। इससे एक ही एप्लिकेशन में MariaDB AX और MariaDB TX दोनों तक पहुंच को संयोजित करना भी आसान हो जाता है। दो डेटास्टोर से जुड़ने के लिए किसी विशिष्ट कनेक्टर या लाइब्रेरी की आवश्यकता नहीं है। सब कुछ MySQL या MariaDB क्लाइंट लाइब्रेरी का उपयोग करके किया जा सकता है। आप दोनों डेटास्टोर के लिए MaxScale का भी उपयोग कर सकते हैं, जो MariaDB AX के लिए उच्च उपलब्धता बनाने में मदद कर सकता है।
हमें स्तंभकार डेटास्टोर का उपयोग क्यों करना चाहिए?
आइए कॉलमर डेटास्टोर्स के पीछे के विचार का संक्षिप्त परिचय दें।
मारियाडीबी एएक्स को मारियाडीबी TX से अलग क्या बनाता है?
मुख्य अंतर यह है कि डेटा कैसे संरचित किया जाता है। सामान्य डेटाबेस में डेटा को पंक्तियों के रूप में संग्रहीत किया जाता है।
Id, Product, Price, Code, Warehouse
1, Door, 10, 12334, EU1
2, Window, 9, 9523, EU1
3, Glass, 12, 97643, EU2
जैसा कि आप देख सकते हैं, हमारे पास तीन पंक्तियाँ हैं, प्रत्येक में उत्पाद प्रविष्टि के बारे में सभी डेटा हैं।
समस्या यह है कि जब आप इस डेटा का केवल एक सबसेट प्राप्त करना चाहते हैं तो डेटा संग्रहीत करने का यह तरीका वास्तव में कुशल नहीं है। मान लें कि आप केवल "उत्पाद" और "मूल्य" कॉलम प्राप्त करना चाहते हैं - ऐसा करने के लिए आपको पूरी पंक्तियों, सभी डेटा को पढ़ना होगा और फिर अनावश्यक कॉलम को त्यागना होगा। डेटा को सॉर्ट करना भी मुश्किल है। यदि आप डेटासेट को सबसे महंगे से सबसे सस्ते उत्पाद में सॉर्ट करना चाहते हैं तो आपको सब कुछ पढ़ना होगा और फिर सॉर्ट करना होगा।
हम सभी जानते हैं कि डेटाबेस एक्सेस को तेज करने के लिए इंडेक्स का उपयोग करते हैं। एक इंडेक्स को इस तरह से संरचित किया जाता है कि इसमें अनुक्रमित कॉलम की सामग्री के साथ-साथ पूरी पंक्ति के लिए एक पॉइंटर भी होता है (इनो डीबी में यह प्राथमिक कुंजी है)। उदाहरण के लिए, "उत्पाद" कॉलम पर एक इंडेक्स, यह मानते हुए कि "आईडी" प्राथमिक कुंजी है, इस तरह दिख सकता है:
Product, Id
Door, 1
Window, 2
Glass, 3
यह डेटा तक पहुंच को गति देता है क्योंकि "उत्पाद" कॉलम में मान खोजने के लिए पूरी पंक्ति को पढ़ने की कोई आवश्यकता नहीं है। एक बार जब डेटाबेस इसे ढूंढ लेता है, तो यह पॉइंटर का अनुसरण करके शेष पंक्ति (यदि आवश्यक हो) को पढ़ सकता है।
एक कॉलम स्टोर में, चीजें अलग होती हैं। डेटा को पंक्तियों के रूप में नहीं बल्कि स्तंभों के रूप में संरचित किया जाता है। कुछ विस्तार के लिए यह सूचकांक के समान है। कॉलमर डेटास्टोर में हमारी तालिका इस तरह दिख सकती है:
Id: 1, 2, 3
Product: Door, Window, Glass
Price: 10, 9, 12
Code: 12334, 9523, 97643
Warehouse: EU1, EU1, EU2
मारियाडीबी एएक्स में, कॉलम अलग-अलग फाइलों में संग्रहीत होते हैं, किसी दिए गए "पंक्ति" के लिए प्रत्येक प्रविष्टि एक ही ऑफ़सेट पर शुरू होती है।
यहां मुख्य लाभ यह है कि यदि आप एक क्वेरी चलाना चाहते हैं जो डेटा के केवल एक सबसेट के साथ काम करेगी, तो आपको केवल उन कॉलम से डेटा पढ़ने की जरूरत है जो क्वेरी के लिए प्रासंगिक हैं।
पहले हमारे उदाहरण में, हम पूरे डेटासेट को पढ़ने के बजाय, केवल 'उत्पाद' और 'कीमत' कॉलम के लिए डेटा लोड कर सकते हैं। यह डिस्क पर पहुंचने के लिए आवश्यक डेटा को कम करता है और प्रक्रिया को गति देता है।
क्या महत्वपूर्ण है, स्तंभों में डेटा संग्रहीत करना उन्हें कम विशिष्ट बनाता है जिससे यह बेहतर तरीके से संपीड़ित होता है। उदाहरण के लिए, हमारे "वेयरहाउस" कॉलम में हमारे पास केवल दो प्रकार की प्रविष्टियां हैं। वास्तविक दुनिया के परिदृश्य में भी यह बहुत संभावना है कि हम उत्पादों की संख्या की तुलना में कम संख्या में गोदामों के साथ समाप्त होंगे। यह "वेयरहाउस" कॉलम को संपीड़न के लिए बहुत अच्छा लक्ष्य बनाता है।
इस सब के परिणामस्वरूप, कॉलमर डेटास्टोर बड़े डेटासेट को बेहतर तरीके से संभाल सकते हैं और इसे "मानक" OLTP-केंद्रित डेटाबेस की तुलना में अधिक कुशल तरीके से क्वेरी कर सकते हैं।
मुझे MariaDB AX का उपयोग क्यों करना चाहिए?
डेटाबेस में डिस्क एक्सेस एक प्रमुख अड़चन है। एक कॉलमर डेटास्टोर डिस्क से पढ़ने के लिए आवश्यक डेटा की मात्रा को कम करके प्रदर्शन में सुधार करता है। यह केवल क्वेरी का उत्तर देने के लिए आवश्यक डेटा पढ़ता है।
बेशक, मारियाडीबी एएक्स वहां एकमात्र स्तंभ डेटास्टोर नहीं है। कई अन्य हैं, उदाहरण के लिए, क्लिकहाउस या अपाचे HBase।
सच्चाई यह है कि अन्य विकल्पों में से कोई भी पूर्ण SQL सिंटैक्स का समर्थन नहीं करता है जो MySQL करता है। उन्हें अलग-अलग कनेक्टर्स की आवश्यकता होती है, डेटा को क्वेरी करने के लिए अलग-अलग दृष्टिकोण, जबकि मारियाडीबी एएक्स को वैसे ही पूछताछ की जा सकती है जैसे आप 'सामान्य' मारियाडीबी से पूछेंगे।
यह भी महत्वपूर्ण है, यह देखते हुए कि मारियाडीबी एएक्स कॉलमस्टोर इंजन का उपयोग करता है, इसे अन्य इंजनों के साथ मिलाना बिल्कुल ठीक है। आप बिना किसी समस्या के InnoDB और ColumnStore तालिकाओं को एक ही क्वेरी में मिला सकते हैं और जोड़ सकते हैं।
इसके शीर्ष पर, मैक्सस्केल की तरह मारियाडीबी TX के साथ आने वाले उपकरण, मारियाडीबी एएक्स के साथ ठीक काम करेंगे, जिससे एक एकीकृत, उपयोग में आसान वातावरण बनाना आसान हो जाएगा। इसलिए जब आप मारियाडीबी 10.3 और मैक्सस्केल के साथ क्लस्टर कंट्रोल चला रहे हैं, तो आप आसानी से मारियाडीबी एएक्स को मिक्स में जोड़ सकते हैं और यह सेटअप के अन्य हिस्सों के साथ काम करेगा।
मारियाडीबी एएक्स उन उपकरणों के साथ आता है जिनका उद्देश्य अन्य स्रोतों से डेटा स्थानांतरित करने में मदद करना है। यदि आप काफ्का या स्पार्क का उपयोग करते हैं, तो मारियाडीबी एएक्स में उन स्रोतों से डेटा आयात करते समय उपयोग करने के लिए कनेक्टर हैं।
इसके अतिरिक्त, भले ही MariaDB TX (InnoDB) और MariaDB AX (ColumnStore) के बीच नियमित प्रतिकृति कॉलमस्टोर की सीमाओं के कारण अच्छा प्रदर्शन नहीं कर रही है (एकल इंसर्ट की तुलना में कॉलमर डेटास्टोर्स में बैच इंसर्ट करना हमेशा बेहतर होता है, जैसा कि प्रतिकृति पर किया जाता है), यह है एक पाइपलाइन बनाना संभव है जिसमें मैक्सस्केल को बिनलॉग सर्वर और एवरो सीडीसी राउटर, मैक्सस्केल सीडीसी डेटा एडेप्टर और मारियाडीबी एएक्स के रूप में कॉन्फ़िगर किया जाएगा, जो लगभग वास्तविक समय में एडेप्टर से डेटा प्राप्त करेगा।
हमें उम्मीद है कि यह ब्लॉग पोस्ट आपको मारियाडीबी एएक्स क्या है और क्लस्टर कंट्रोल द्वारा तैनात और प्रबंधित मारियाडीबी TX पर्यावरण के साथ इसका उपयोग कैसे किया जा सकता है (इसे मुफ्त में डाउनलोड करें!) के बारे में कुछ अंतर्दृष्टि प्रदान करेगा।