MariaDB सर्वर मूल रूप से MySQL से लिया गया था और इसलिए इसे इसके प्लग करने योग्य स्टोरेज इंजन आर्किटेक्चर विरासत में मिला है। विभिन्न भंडारण इंजनों में प्रदर्शन के मामले में अलग-अलग विशेषताएं होती हैं, लेकिन साथ ही विशेषताएं और संभावनाएं भी होती हैं। यह उपयोगकर्ताओं को एक ही स्टोरेज इंजन का उपयोग करने के बजाय नौकरी के लिए सही उपकरण चुनने की अनुमति देता है, चाहे डेटा का उद्देश्य क्या हो, डेटा स्टोरेज के संबंध में क्या आवश्यकताएं हैं और डेटा को कैसे एक्सेस किया जाना चाहिए। इस ब्लॉग पोस्ट में हम मारियाडीबी में उपलब्ध विकल्पों को देखना चाहते हैं और उपलब्ध विभिन्न स्टोरेज इंजनों के संभावित उपयोग के मामलों पर चर्चा करना चाहते हैं।
स्टोरेज इंजन क्या है?
सबसे पहले, आइए एक नजर डालते हैं कि स्टोरेज इंजन क्या है? मारियाडीबी में कई परतें होती हैं जो एक साथ काम करती हैं। एसक्यूएल उनमें से एक द्वारा पार्स किया जाता है, फिर मारियाडीबी एक सामान्य एपीआई का उपयोग करके डेटा के लिए पहुंचता है। हुड के तहत एक स्टोरेज इंजन होता है जिसमें डेटा होता है और यह डेटा के अनुरोधों पर प्रतिक्रिया करता है, डेटा निकालता है और इसे मारियाडीबी को उपलब्ध कराता है।
संक्षेप में, मारियाडीबी एक पंक्ति के लिए एक अनुरोध भेजता है और इसे पुनर्प्राप्त करने और इसे वापस भेजने के लिए स्टोरेज इंजन पर निर्भर है। मारियाडीबी को परवाह नहीं है कि पंक्ति को कैसे संग्रहीत किया जाता है या इसे कैसे पुनर्प्राप्त किया जा रहा है, यह भंडारण इंजन के भीतर कार्यान्वयन पर निर्भर है। भंडारण इंजन भी विभिन्न सुविधाओं को लागू कर सकते हैं। लेन-देन भी पूरी तरह से स्टोरेज इंजन की तरफ से किया जा रहा है। इसलिए कुछ समर्थन लेनदेन और कुछ नहीं करते हैं। इस वास्तुकला के साथ विभिन्न समस्याओं को हल करने के लिए समर्पित विभिन्न भंडारण इंजन लिखना संभव है।
MariaDB सर्वर में स्टोरेज इंजन
MariaDB स्टोरेज इंजन के एक सेट के साथ आता है। आप एक साधारण कमांड के माध्यम से जांच सकते हैं कि कौन से उपलब्ध हैं:
MariaDB [(none)]> SHOW STORAGE ENGINES;
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
| MRG_MyISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | Stores tables as CSV files | NO | NO | NO |
| Aria | YES | Crash-safe tables with MyISAM heritage. Used for internal temporary tables and privilege tables | NO | NO | NO |
| SEQUENCE | YES | Generated tables filled with sequential values | YES | NO | YES |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| MyISAM | YES | Non-transactional engine with good performance and small data footprint | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, foreign keys and encryption for tables | YES | YES | YES |
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
8 rows in set (0.000 sec)
जैसा कि आप देख सकते हैं, उनमें से कई हैं, हम सबसे महत्वपूर्ण को कवर करेंगे।
InnoDB
InnoDB, जाहिर है, स्टोरेज इंजन है। OLTP ट्रैफ़िक से निपटने के लिए बनाया गया लेन-देन, वास्तव में शानदार प्रदर्शन प्रदान कर सकता है। यह मारियाडीबी में उपयोग किया जाने वाला डिफ़ॉल्ट इंजन है और, जब तक आप नहीं जानते कि आप क्या कर रहे हैं, आप शायद अपने डेटाबेस के लिए इससे चिपके रहना चाहते हैं।
MyISAM
MyISAM, MySQL और फिर MariaDB में उपलब्ध "मूल" स्टोरेज इंजनों में से एक है। यह लेन-देन नहीं है, यह प्रतिकृति सेटअप के लिए आदर्श नहीं है और, ठीक है, अधिकांश अन्य वातावरण भी। यह अभी भी बहुत तेज़ इंजन है, विशेष रूप से इंडेक्स एक्सेस के संबंध में, इसे केवल-पढ़ने के लिए काम के बोझ के लिए उपयुक्त बनाता है जो INSERTs के लॉक होने और MyISAM की समग्र नाजुकता से प्रभावित नहीं होंगे।
एरिया
Aria MyISAM के प्रतिस्थापन के रूप में MariaDB के लिए बनाया गया एक इंजन है। यह लेन-देन संबंधी नहीं है, लेकिन यह क्रैश-सुरक्षित है और इसे और अधिक विश्वसनीय बनाता है। वर्तमान में इसका उपयोग सिस्टम और अस्थायी तालिकाओं के लिए किया जाता है, लेकिन इसका उपयोग MyISAM के बजाय डेटा तक तेज़, केवल-पढ़ने के लिए उपयोग किए जाने वाले कार्यभार के लिए भी किया जा सकता है।
स्मृति
यह एक संपूर्ण मेमोरी इंजन है जो आमतौर पर अस्थायी इन-मेमोरी टेबल के लिए उपयोग किया जाता है। यह स्थायी नहीं है, लेकिन कुछ केवल-पढ़ने के लिए कार्यभार के लिए काम कर सकता है।
सीएसवी
इस स्टोरेज इंजन को एक फ़ाइल में डेटा को अल्पविराम से अलग किए गए मानों के रूप में संग्रहीत करने के लिए डिज़ाइन किया गया है। यह सबसे अधिक उपयोग किया जाने वाला स्टोरेज इंजन नहीं है, यह बहुत विशिष्ट है लेकिन इसका उपयोग अभी भी मारियाडीबी से डेटा को किसी अन्य डेटाबेस सॉफ़्टवेयर के साथ-साथ एक्सेल या इसी तरह के सॉफ़्टवेयर में आसानी से निकालने के लिए किया जा सकता है।
MariaDB Enterprise Server में स्टोरेज इंजन
MariaDB Enterprise Server कुछ अतिरिक्त स्टोरेज इंजन के साथ आता है जो सामुदायिक संस्करण में उपलब्ध है। आइए उन पर भी एक नज़र डालते हैं।
ColumnStore
यह विश्लेषणात्मक कार्यभार के लिए एक समर्पित भंडारण इंजन है। डेटा को संग्रहीत करने के विशिष्ट तरीके के लिए धन्यवाद, यह बड़ी मात्रा में डेटा पुनर्प्राप्त करने के लिए तेज़ बनाता है, जिसे अक्सर रिपोर्टिंग के लिए आवश्यक होता है। यह OLAP (ऑनलाइन एनालिटिकल प्रोसेसिंग) वर्कलोड के लिए आपकी पसंद का स्टोरेज इंजन हो सकता है।
S3
S3 इंजन आपको S3 में स्थित डेटा तक पहुंचने की अनुमति देता है। यह एक गैर-लेनदेन इंजन है जिसका उद्देश्य उपयोगकर्ताओं को S3 में डेटा संग्रह करने का विकल्प देना है। टेबल बनने के बाद रीड ओनली एक्सेस उपलब्ध है।
मकड़ी
स्पाइडर इंजन आपको एक शार्प स्टोरेज बनाते हुए पूरे नेटवर्क में कई मारियाडीबी डेटाबेस कनेक्ट करने देता है। यह लेन-देन संबंधी है और यह उपयोगकर्ताओं के लिए कई मारियाडीबी एंटरप्राइज सर्वरों में डेटा को विभाजित करके, उनके बीच ट्रैफ़िक और कार्यभार वितरित करके स्केल आउट करना आसान बनाता है।
माईरॉक्स
MyRocks फेसबुक में विकसित एक स्टोरेज इंजन है, इसका उद्देश्य राइट एम्पलीफिकेशन को कम करना और SSD ड्राइव के खराब होने को कम करना है। यह एक ट्रांजेक्शनल इंजन है जिसे OLTP वर्कलोड को काफी अच्छी तरह से हैंडल करना चाहिए, विशेष रूप से सोशल मीडिया वेबसाइटों के लिए विशिष्ट वर्कलोड। MyRocks काफी अच्छे कंप्रेशन के साथ आता है, जो कि InnoDB से बेहतर है, जो स्टोरेज पर खर्च को काफी कम करने में मदद कर सकता है यदि डेटासेट InnoDB को ठीक से संभालने के लिए बहुत बड़ा हो जाता है।
निष्कर्ष
जैसा कि आप देख सकते हैं, मारियाडीबी एंटरप्राइज और कम्युनिटी सर्वर दोनों द्वारा डेटा को स्टोर करने के तरीके के बारे में कई विकल्प उपलब्ध कराए गए हैं। ऐसे स्टोरेज इंजन हैं जो केवल-पढ़ने के लिए वर्कलोड, OLAP या बड़े डेटासेट में उत्कृष्टता प्राप्त करते हैं। यह उपयोगकर्ता पर निर्भर है कि वह एक अच्छा फिट चुने। कृपया ध्यान रखें कि, जब संदेह हो, तो आप हमेशा InnoDB से चिपके रह सकते हैं, जो सामान्य रूप से काफी अच्छा प्रदर्शन प्रदान करता है और अधिकांश मामलों के लिए पर्याप्त से अधिक होना चाहिए। यह उन किनारे के मामलों के लिए है जहां आपको कुछ अधिक उपयुक्त देखने की आवश्यकता हो सकती है।