उन दिनों में जब किसी ने MySQL कहा था, केवल MySQL था। आप विभिन्न संस्करण (4.0, 4.1) चुन सकते हैं लेकिन विक्रेता वही था। यह MySQL 5.0/5.1 के आसपास बदल गया जब Percona ने MySQL - Percona Server के अपने स्वयं के स्वाद को जारी करने का निर्णय लिया। थोड़ी देर बाद, MariaDB, MariaDB 5.1 के साथ जुड़ गई और मज़ा (या भ्रम) बढ़ गया। मुझे किस संस्करण का उपयोग करना चाहिए? MySQL 5.1, Percona Server 5.1 और MariaDB 5.1 में क्या अंतर है? कौन सा तेज है? कौन सा अधिक स्थिर है? किसकी बेहतर कार्यक्षमता है? समय के साथ, यह खराब हो गया क्योंकि प्रत्येक स्वाद में अधिक से अधिक परिवर्तन पेश किए गए थे। यह ब्लॉग पोस्ट उन प्रमुख विशेषताओं को संक्षेप में प्रस्तुत करने का हमारा प्रयास होगा जो उन्हें अलग करती हैं। हम आपको कुछ सुझाव देने का भी प्रयास करेंगे कि किसी दिए गए प्रकार के प्रोजेक्ट के लिए कौन सा स्वाद सबसे अच्छा हो सकता है। आइए शुरू करें।
Oracle MySQL
यह MySQL हुआ करता था, अब यह अपस्ट्रीम है। अधिकांश विकास यहां शुरू होता है, 5.6 से शुरू होने वाला प्रत्येक संस्करण कुछ आंतरिक विवादों को हल करता है और बेहतर प्रदर्शन लाता है। नियमित आधार पर नई सुविधाएँ भी जोड़ी जा रही हैं। MySQL 5.6 हमें (दूसरों के बीच) GTID और समानांतर प्रतिकृति का प्रारंभिक कार्यान्वयन लाया। इसने हमें अधिकांश ALTER को ऑनलाइन तरीके से निष्पादित करने की क्षमता भी प्रदान की। आइए नवीनतम MySQL संस्करण की विशेषताओं पर एक नज़र डालें - MySQL 5.7
MySQL 5.7 की विशेषताएं
प्रमुख परिवर्तनों में से एक परिनियोजन प्रक्रिया में परिवर्तन हैं - विभिन्न लिपियों के बजाय, आप MySQL को खरोंच से सेट करने के लिए बस mysqld --initialize चला सकते हैं। एक और बहुत महत्वपूर्ण परिवर्तन - तार्किक घड़ी पर आधारित समानांतर प्रतिकृति। अंत में, हम सभी मामलों में समानांतर प्रतिकृति का उपयोग कर सकते हैं - चाहे आप एकाधिक स्कीमा का उपयोग करें या नहीं। एक और प्रतिकृति सुधार बहु-स्रोत प्रतिकृति है - एक 5.7 दास में कई स्वामी हो सकते हैं - यदि आप एक एकत्रीकरण दास बनाना चाहते हैं और मान लें, एकाधिक, अलग-अलग समूहों से डेटा संयोजित करना चाहते हैं तो यह बहुत अच्छी विशेषता है।
InnoDB ने स्थानिक प्रकारों का समर्थन करना शुरू किया, InnoDB बफर पूल को अंततः रनटाइम पर आकार दिया जा सकता है, विभाजन और नो-ऑप ALTERs जैसे अधिक मामलों का समर्थन करने के लिए ऑनलाइन ALTER में सुधार किया गया है।
MySQL ने कई नए कार्यों के साथ मूल रूप से JSON डेटा प्रकारों का समर्थन करना शुरू कर दिया है जो JSON के आसपास कार्यक्षमता जोड़ने पर केंद्रित हैं। आपके डेटा की सुरक्षा इन दिनों बहुत महत्वपूर्ण है, MySQL 5.7 फ़ाइल-प्रति-टेबल टेबलस्पेस के लिए डेटा-एट-रेस्ट एन्क्रिप्शन का समर्थन करता है। एसएसएल समर्थन में कुछ सुधार भी जोड़े गए हैं (यदि कुंजी जगह में हैं तो एसएसएल कॉन्फ़िगर किया जाएगा, एक स्क्रिप्ट शामिल है जिसका उपयोग प्रमाण पत्र बनाने के लिए किया जा सकता है)। उपयोगकर्ता प्रबंधन के दृष्टिकोण से, पासवर्ड लाइफटाइम सेटअप जोड़ा गया है जिससे पासवर्ड समाप्ति नीतियों का डिज़ाइन थोड़ा आसान हो जाना चाहिए।
एक अन्य विशेषता जिसका उद्देश्य डीबीए की सहायता करना है, वह है 'sys' स्कीमा, प्रदर्शन स्कीमा का उपयोग करना आसान बनाने के लिए डिज़ाइन किए गए दृश्यों का एक सेट। इसे डिफ़ॉल्ट रूप से MySQL 5.7 में शामिल किया गया है।
अंत में, MySQL समूह प्रतिकृति (और अंततः MySQL InnoDB क्लस्टर) को MySQL 5.7 में जोड़ा गया है। यह एक प्लगइन के रूप में काम करता है और 5.7 शाखा के हाल के संस्करणों में शामिल है, लेकिन यह स्वयं का विषय है। संक्षेप में, समूह प्रतिकृति आपको "वस्तुतः" समकालिक क्लस्टर बनाने की अनुमति देता है।
यह निश्चित रूप से सुविधाओं की पूरी सूची नहीं है - यदि आप उन सभी में रुचि रखते हैं, तो आप MySQL 5.7 प्रलेखन से परामर्श करना चाह सकते हैं।
पेरकोना सर्वर
शुरुआत में, MySQL स्रोत कोड पर लागू करने के लिए पैच का एक सेट था जिसने कुछ प्रदर्शन सुधार और कार्यक्षमता को जोड़ा। कुछ बिंदु पर, Percona ने MySQL के अपने स्वयं के निर्माण को जारी करने का निर्णय लिया जिसमें ये पैच शामिल थे। समय के साथ, अधिक विकास संसाधन उपलब्ध हो गए, इसलिए अधिक से अधिक सुविधाएँ जोड़ी गई हैं।
सामान्य तौर पर, आप पेरकोना सर्वर को कई पैच/सुधारों के साथ नवीनतम MySQL संस्करण के रूप में देख सकते हैं। समय के साथ, कुछ Percona सर्वर सुविधा सुधारों को अपस्ट्रीम से सुविधाओं द्वारा प्रतिस्थापित किया जाता है - जब भी Oracle एक ऐसी सुविधा विकसित करता है जो Percona सर्वर में जोड़े गए कार्यात्मकताओं में से एक का स्थान लेती है। जब तक कार्यान्वयन बराबर होता है, पेरकोना अपस्ट्रीम से कोड के पक्ष में अपना कोड हटा देता है। यह Percona सर्वर को मूल रूप से Oracle के MySQL के लिए एक ड्रॉप-इन प्रतिस्थापन बनाता है। जिन क्षेत्रों में प्रमुख प्रदर्शन सुधार किए गए हैं उनमें से एक InnoDB है। इसे XtraDB के रूप में ब्रांड करने के लिए पर्याप्त रूप से संशोधित किया गया है। वर्तमान में यह पूरी तरह से InnoDB के साथ संगत है लेकिन यह हमेशा से ऐसा नहीं रहा है। उदाहरण के लिए, Percona Server 5.5 में कुछ विशेषताएं MySQL 5.5 के साथ संगत नहीं थीं। यह हाल के Percona सर्वर संस्करणों के लिए भी सही है। महत्वपूर्ण बात यह है कि, डिफ़ॉल्ट रूप से, Percona सर्वर अक्षम सभी असंगत सुविधाओं के साथ आता है - यदि आवश्यक हो तो इसका परीक्षण करना और Oracle के MySQL पर वापस रोल करना आसान हो जाता है। उपरोक्त सभी बातों को ध्यान में रखते हुए, परकोना सर्वर से MySQL में माइग्रेट करने की योजना बनाते समय आपको अभी भी सावधानी बरतनी चाहिए - हो सकता है कि किसी ने असंगत सुविधाओं में से एक को सक्षम किया हो।
हाइलाइट करने योग्य बात यह है कि पेरकोना अपस्ट्रीम की उद्यम सुविधाओं को फिर से लागू करने का प्रयास करता है। MySQL के मामले में, उदाहरण थ्रेड पूल या PAM प्रमाणीकरण प्लगइन का कार्यान्वयन हैं। आइए पेरकोना सर्वर की कुछ विशेषताओं पर एक नज़र डालते हैं।
पेरकोना सर्वर 5.7 की विशेषताएं
XtraDB की मुख्य विशेषताओं में से एक बेहतर बफर पूल स्केलेबिलिटी है - भले ही Oracle के प्रत्येक MySQL संस्करण पर काम करने के कारण कम और कम विवाद हो, Percona की इंजीनियरिंग टीम प्रदर्शन को और भी आगे बढ़ाने और अतिरिक्त म्यूटेक्स को हटाने का प्रयास करती है जो प्रदर्शन को सीमित कर सकते हैं। इसके अतिरिक्त, InnoDB के भीतर विवादों के संबंध में InnoDB मॉनिटर (शो इंजन INNODB STATUS के माध्यम से सुलभ) में अधिक डेटा लिखा जाता है - उदाहरण के लिए, सेमाफोर पर एक अनुभाग जोड़ा गया है।
I/O के क्षेत्र में एक और सुधार किया गया है। InnoDB में, आप केवल InnoDB टेबलस्पेस के लिए फ्लश विधि सेट कर सकते हैं और यह InnoDB रीडो लॉग के लिए डबल-बफ़रिंग का कारण बनता है। XtraDB उन फ़ाइलों के लिए भी O_DIRECT का उपयोग करना संभव बनाता है। यह SHOW ENGINE INNODB STATUS के आउटपुट में चेकपॉइंटिंग के संबंध में अधिक डेटा भी जोड़ता है। इसके अतिरिक्त, InnoDB के भीतर I/O संचालन में विवाद को कम करने के लिए समानांतर डबलराइट बफर और मल्टी-थ्रेडेड LRU फ्लशर को लागू किया गया है।
थ्रेड पूल पेरकोना सर्वर द्वारा उपलब्ध कराई गई एक अन्य विशेषता है। Oracle MySQL में यह केवल एंटरप्राइज़ संस्करण में उपलब्ध है। यहां आप पेरकोना के कार्यान्वयन का मुफ्त में उपयोग कर सकते हैं। सामान्य तौर पर, डेटाबेस से मौजूदा कनेक्शन का पुन:उपयोग करके एप्लिकेशन से कनेक्शन की उच्च संख्या की सेवा करते समय थ्रेड पूल विवाद को कम करता है।
MySQL के एंटरप्राइज़ संस्करण से सुविधाओं का प्रत्यक्ष प्रतिस्थापन दो और सुविधाएँ हैं। उनमें से एक PAM प्रमाणीकरण प्लगइन है जिसे Percona द्वारा विकसित किया गया है और इसे LDAP, RSA SecurID या PAM द्वारा समर्थित किसी अन्य तरीके जैसे विभिन्न प्रमाणीकरण विकल्पों के उपयोग की अनुमति देने के लिए डिज़ाइन किया गया है। दूसरी विशेषता सुरक्षा से भी संबंधित है - ऑडिट लॉग प्लगइन। यह डेटाबेस सर्वर पर की गई कार्रवाइयों के रिकॉर्ड के साथ एक फाइल बनाएगा।
समय-समय पर, Percona अन्य स्टोरेज इंजनों में महत्वपूर्ण सुधार पेश करता है जैसे कि MEMORY इंजन में किए गए परिवर्तन जो VARCHAR या BLOB प्रकार के डेटा का उपयोग करने की अनुमति देते हैं।
बैकअप लॉक का परिचय भी एक महत्वपूर्ण सुधार था। Oracle और MariaDB में लगातार बैकअप प्राप्त करने के लिए तालिका को लॉक करने का एकमात्र तरीका फ्लश टेबल्स विद रीड लॉक (FTWRL) का उपयोग करना था। यह बल्कि भारी है और यह MySQL को सभी खुली हुई तालिकाओं को बंद करने के लिए मजबूर करता है। दूसरी ओर, बैकअप लॉक मेटाडेटा लॉक के अधिक हल्के दृष्टिकोण का उपयोग करते हैं। कई मामलों में भारी लोड वाले सर्वर को चलाने में FTWRL को व्यवहार्य माने जाने में बहुत अधिक समय लगता है (और सर्वर को बहुत लंबे समय तक लॉक कर देता है) जबकि बैकअप लॉक से mysqldump या xtrabackup का उपयोग करके बैकअप लेना संभव हो जाता है।
Percona अन्य विक्रेताओं से सुविधाओं को पोर्ट करने पर भी खुला है। ऐसा ही एक उदाहरण मारियाडीबी का पोर्ट है जो लगातार स्नैपशॉट के साथ शुरू होता है। यह सुविधा बैकअप से भी संबंधित है - इसकी मदद से, आप फ्लश टेबल के साथ रीड लॉक को चलाए बिना लगातार तार्किक बैकअप (mysqldump का उपयोग करके) ले सकते हैं।
अंत में, तीन विशेषताएं जो अवलोकन क्षमता में सुधार करती हैं - पहला:उपयोगकर्ता आंकड़े। यह काफी हल्का वजन वाला फीचर है जो यूजर्स, इंडेक्स, टेबल और थ्रेड्स के बारे में डेटा एकत्र करता है। यह आपको अप्रयुक्त अनुक्रमणिका खोजने या यह निर्धारित करने की अनुमति देता है कि सर्वर पर लोड के लिए कौन सा उपयोगकर्ता जिम्मेदार है। वर्तमान में यह performance_schema के लिए आंशिक रूप से बेमानी है, लेकिन यह थोड़ा हल्का है और इसे MySQL 5.0 - 5.1 के दिनों में बनाया गया था, जहाँ किसी ने भी performance_schema के बारे में सपने में भी नहीं सोचा था।
दूसरा - वर्धित धीमी क्वेरी लॉग। दोबारा, इसे ऐसे समय में जोड़ा गया था जब long_query_time की उच्चतम ग्रैन्युलैरिटी 1 सेकंड थी। इस अतिरिक्त के साथ आपके पास माइक्रोसेकंड ग्रैन्युलैरिटी और प्रति क्वेरी InnoDB आँकड़ों या इसकी समग्र प्रदर्शन विशेषताओं के बारे में अतिरिक्त डेटा का एक गुच्छा था। क्या इसने एक अस्थायी तालिका बनाई? क्या यह एक सूचकांक का उपयोग करता था? क्या इसे MySQL क्वेरी कैश में कैश किया गया है?
तीसरी विशेषता जिसका हमने ऊपर दो बार उल्लेख किया है - पेरकोना सर्वर अपस्ट्रीम की तुलना में SHOW ENGINE INNODB STATUS में काफी अधिक डेटा को उजागर करता है। यह निश्चित रूप से कार्यभार को और अधिक समझने और अधिक मुद्दों को सामने आने से पहले पकड़ने में मदद करता है।
बेशक, यह पूरी सूची नहीं है - यदि आप अधिक विवरण में रुचि रखते हैं, तो आप पेरकोना सर्वर के दस्तावेज़ीकरण की जांच कर सकते हैं।
मारियाडीबी
मारियाडीबी ने MySQL के एक कांटे के रूप में शुरुआत की, लेकिन मूल MySQL विकास टीम के मारियाडीबी में शामिल होने के साथ, इसने जल्दी से सुविधाओं को जोड़ने पर ध्यान केंद्रित किया। मारियाडीबी 5.3 में, ऑप्टिमाइज़र में बहुत सारी सुविधाएँ जोड़ी गई थीं:बैच की एक्सेस, मल्टीरेंज रीड, इंडेक्स कंडीशन पुशडाउन कुछ नाम रखने के लिए। इसने मारियाडीबी को कुछ कार्यभार में उत्कृष्टता प्राप्त करने की अनुमति दी जहां MySQL या Percona सर्वर संघर्ष करेगा। अब तक, उन सुविधाओं में से कुछ को MySQL में जोड़ा गया है (ज्यादातर MySQL 5.6 में) लेकिन कुछ अभी भी मारियाडीबी के लिए अद्वितीय हैं।
एक अन्य महत्वपूर्ण विशेषता जो मारियाडीबी द्वारा पेश की गई थी, वह थी ग्लोबल ट्रांजैक्शन आईडी। बहुत बाद में ओरेकल ने अपना कार्यान्वयन जारी नहीं किया लेकिन मारियाडीबी ने इसे सबसे पहले प्राप्त किया। इसी तरह की कहानी एक और प्रतिकृति सुविधा के साथ है - मल्टीसोर्स प्रतिकृति:मारियाडीबी के पास ओरेकल से पहले थी। अब, हाल ही में जारी मारियाडीबी 10.2 में ऐसी विशेषताएं भी शामिल हैं जो MySQL 8.0 में उपलब्ध कराई जाएंगी, जो अभी भी विकास के अधीन है। हम बात कर रहे हैं, उदाहरण के लिए, रिकर्सिव कॉमन टेबल एक्सप्रेशन या विंडो फ़ंक्शंस।
मारियाडीबी 10.2 की विशेषताएं
जैसा कि हमने उल्लेख किया है, मारियाडीबी 10.2 विंडो फ़ंक्शंस और पुनरावर्ती सामान्य तालिका अभिव्यक्तियों को प्रस्तुत करता है - एसक्यूएल में एन्हांसमेंट जो डेवलपर्स को अधिक कुशल एसक्यूएल क्वेरी लिखने में मदद करनी चाहिए।
बहुत महत्वपूर्ण परिवर्तन यह है कि MariaDB 10.2 InnoDB का उपयोग करता है। 10.1 तक, XtraDB को डिफ़ॉल्ट संग्रहण के रूप में उपयोग किया गया है। दुर्भाग्य से, यह नवीनतम XtraDB में जोड़ी गई सुविधाओं को MariaDB 10.2 उपयोगकर्ताओं के लिए अनुपलब्ध बनाता है।
वर्चुअल कॉलम में सुधार किए गए हैं - 10.2 में और सीमाएं हटा दी गई हैं।
अंत में, एक ही ईवेंट के लिए कई ट्रिगर के लिए समर्थन जोड़ा गया है - अब आप एक ही टेबल पर कई ट्रिगर बना सकते हैं, उदाहरण के लिए, ON UPDATE ट्रिगर।
डेवलपर्स को जेएसओएन समर्थन से कुछ कार्यों के साथ लाभ उठाना चाहिए जो इससे संबंधित हैं। उन्हें नए फ़ंक्शन भी पसंद आने चाहिए जो उन्हें स्थानिक डेटा को GeoJSON प्रारूप में निर्यात करने की अनुमति देते हैं। JSON की बात करें तो EXPLAIN FORMAT=JSON आउटपुट में सुधार किए गए हैं - अधिक डेटा दिखाया गया है।
सुरक्षा के मोर्चे पर, ओपनएसएसएल 1.1 और लिब्रेएसएसएल के लिए समर्थन जोड़ा गया है।
बेशक, यह सूची पूरी नहीं है और यदि आप MySQL 10.2 में जो कुछ जोड़ा गया है उसमें रुचि रखते हैं, तो आप दस्तावेज़ीकरण से परामर्श लेना चाहेंगे।
नई सुविधाओं के अतिरिक्त मारियाडीबी 10.2 पिछले संस्करणों में लागू सुविधाओं से लाभान्वित होता है। हम सबसे महत्वपूर्ण के माध्यम से जाएंगे।
MariaDB 10.1 की सबसे महत्वपूर्ण विशेषताएं
सबसे पहले, मारियाडीबी 10.1 से गैलेरा क्लस्टर के साथ आता है - अतिरिक्त पुस्तकालयों को स्थापित करने की कोई आवश्यकता नहीं है, सब कुछ उपयोग के लिए तैयार है।
मारियाडीबी 10.1 डेटा-एट-रेस्ट एन्क्रिप्शन का कार्यान्वयन लाया। Oracle के MySQL में लागू की गई सुविधा की तुलना में, MariaDB ने इसे और अधिक विस्तारित किया है। यह न केवल टेबलस्पेस को एन्क्रिप्ट करता है बल्कि यह रीडो लॉग्स, अस्थायी फाइलों और बाइनरी लॉग को भी एन्क्रिप्ट करता है। यह कुछ मुद्दों के साथ आता है - mysqldump या xtrabackup जैसे CLI उपकरण बाइनरी लॉग तक नहीं पहुंच सकते हैं और एन्क्रिप्टेड इंस्टेंस का बैकअप लेने में समस्या हो सकती है (यह विशेष रूप से xtrabackup के लिए सच है - हाल ही में MariaDB ने मारियाडीबी बैकअप नामक xtrabackup कांटा बनाया है जो डेटा-एट-रेस्ट का समर्थन करता है एन्क्रिप्शन)।
ठीक है, तो मुझे किस स्वाद का उपयोग करना चाहिए?
जैसा कि आमतौर पर होता है, सही उत्तर होगा:"यह निर्भर करता है" :-)। हम अपनी कुछ टिप्पणियों को साझा करेंगे जो आपको निर्णय लेने में मदद कर सकती हैं या नहीं भी कर सकती हैं, लेकिन अंत में, बेंचमार्क चलाने और आपके पर्यावरण और एप्लिकेशन के लिए सबसे अच्छा विकल्प खोजने के लिए आप पर निर्भर है।
सबसे पहले, प्रवाह के बारे में बात करते हैं। Oracle ने नया संस्करण जारी किया - मान लें कि MySQL 5.7. प्रदर्शन के लिहाज से, उस समय, यह बाजार पर सबसे तेज MySQL फ्लेवर है। ऐसा इसलिए है क्योंकि केवल Oracle के पास उस हद तक InnoDB को बेहतर बनाने के लिए काम करने के लिए पर्याप्त संसाधन हैं। कुछ महीनों के भीतर (5.7 के मामले में, यह 4 महीने का था) Percona अपने सुधारों के सेट के साथ Percona Server 5.7 को रिलीज़ करता है - कार्यभार के प्रकार के आधार पर, यह अपस्ट्रीम से भी बेहतर प्रदर्शन प्रदान कर सकता है। अंत में, MariaDB नया अपस्ट्रीम संस्करण अपनाती है और इसके ऊपर अपना नया संस्करण बनाती है।
कैलेंडर में यह ऐसा दिखता था (हम अभी भी MySQL 5.7 के बारे में बात कर रहे हैं)।
MySQL 5.7 GA:21 अक्टूबर 2015
Percona सर्वर 5.7 GA:23 फरवरी, 2016
मारियाडीबी 10.2 जीए:23 मई, 2017
कृपया ध्यान दें कि MySQL 5.7 पर आधारित संस्करण को जारी करने में मारियाडीबी को कितना समय लगा - पिछले सभी संस्करण MySQL 5.6 पर आधारित हैं और जाहिर है, MySQL 5.7 से कम प्रदर्शन दिया। दूसरी ओर, मारियाडीबी 10.2 को एक्स्ट्राडीबी की जगह इनो डीबी के साथ जारी किया गया है। हालांकि यह सच है कि Oracle ने ज्यादातर MySQL और Percona सर्वर के बीच प्रदर्शन अंतर को बंद कर दिया है, यह अभी भी "ज्यादातर" है। नतीजतन, मारियाडीबी 10.2 कुछ मामलों में पेरकोना सर्वर की तुलना में कम प्रदर्शन दे सकता है (और कुछ अन्य मामलों में बेहतर - मारियाडीबी 5.3 में किए गए ऑप्टिमाइज़र कार्य के कारण, जिनमें से कुछ को अभी तक MySQL में फिर से नहीं बनाया गया है)।पी>
फ़ीचर-वार, यह अधिक जटिल है। MariaDB बहुत सारी सुविधाएँ जोड़ रहा है, इसलिए यदि आप उनमें से कुछ में रुचि रखते हैं, तो आप निश्चित रूप से MariaDB का उपयोग करने पर विचार कर सकते हैं। इसका एक नकारात्मक पहलू भी है। Percona सर्वर में अपस्ट्रीम MySQL से इसे अलग करने वाली बहुत सी विशेषताएं थीं, लेकिन जब Oracle ने उन्हें MySQL में लागू करना शुरू किया, तो Percona ने अपस्ट्रीम से कार्यान्वयन का उपयोग करने के पक्ष में उनके कार्यान्वयन को कम करने का निर्णय लिया। इसने MySQL और Percona सर्वर के बीच भिन्न कोड की मात्रा को कम कर दिया, Percona Server के कोड को बनाए रखना आसान बना दिया और, जो सबसे महत्वपूर्ण है, Percona Server को MySQL के साथ 100% संगत बनाता है।
यह दुर्भाग्य से, मारियाडीबी के लिए सच नहीं है। MariaDB ने पहले GTID को पेश किया, यह सच है, लेकिन Oracle द्वारा GTID के अपने संस्करण को विकसित करने के बाद, MariaDB ने अपने स्वयं के कार्यान्वयन पर टिके रहने का निर्णय लिया। यह ब्लॉग यह तय करने का स्थान नहीं है कि कौन सा कार्यान्वयन बेहतर है, लेकिन इसके परिणामस्वरूप हमें दो अलग-अलग, असंगत GTID सिस्टम का प्रबंधन करना पड़ता है - यह किसी भी उपकरण पर बोझ जोड़ता है जो प्रतिकृति का प्रबंधन करता है और इंटरऑपरेबिलिटी को कम करता है। प्रतिकृति के लिए चिपके रहना - समूह प्रतिबद्ध और समानांतर प्रतिकृति:Oracle और MariaDB दोनों का अपना कार्यान्वयन है और यदि आप उन दोनों के साथ काम करते हैं, तो आपको आवश्यक ट्यूनिंग लागू करने के लिए उन दोनों को सीखने की आवश्यकता है - नॉब्स अलग हैं और एक अलग तरीके से काम करते हैं। इसी तरह का मामला वर्चुअल कॉलम सपोर्ट के साथ है - दो अलग, 100% संगत कार्यान्वयन नहीं, जिसके परिणामस्वरूप, मारियाडीबी से डेटा को आसानी से डंप करना और ओरेकल के MySQL (और इसके विपरीत) में लोड करना संभव नहीं है क्योंकि सिंटैक्स थोड़ा अलग है। तो, क्या आपको कुछ नई सुविधा के लिए मारियाडीबी के एक संस्करण का उपयोग करने का निर्णय लेना चाहिए, आप इसके साथ फंस सकते हैं, भले ही आप ओरेकल के कार्यान्वयन का उपयोग करने के लिए MySQL पर वापस माइग्रेट करना चाहते हों। सबसे अच्छा, प्रवासन को निष्पादित करने के लिए और अधिक प्रयास की आवश्यकता होगी। बेशक, यदि आप हर समय एक ही वातावरण में रहते हैं, तो यह आपको गंभीर रूप से प्रभावित नहीं कर सकता है। लेकिन फिर भी, संगतता की कमी आपके लिए ध्यान देने योग्य होगी, यदि केवल जब आप इंटरनेट पर ब्लॉग पढ़ते हैं और ऐसे समाधान ढूंढते हैं जो वास्तव में आपके MySQL के स्वाद पर लागू नहीं होते हैं।
तो, संक्षेप में - यदि आप MySQL के साथ संगतता बनाए रखने में रुचि रखते हैं, तो Percona Server (या MySQL स्वयं, निश्चित रूप से) शायद जाने का रास्ता होगा। यदि आप प्रदर्शन में रुचि रखते हैं, जब तक कि नवीनतम MySQL के शीर्ष पर पेरकोना सर्वर बनाया गया है, यह जाने का रास्ता हो सकता है। बेशक, आप मारियाडीबी को बेंचमार्क कर सकते हैं और देख सकते हैं कि क्या आपका कार्यभार कुछ अनुकूलन से लाभान्वित नहीं हो सकता है जो अभी भी मारियाडीबी के लिए अद्वितीय हैं। परिचालन-वार, किसी एक वातावरण (Oracle/Percona या MariaDB) से चिपके रहना शायद अच्छा है, जो भी आपके लिए बेहतर काम करेगा। MySQL या Percona सर्वर का इस तरह से एक फायदा है कि उनका अधिक सामान्य रूप से उपयोग किया जाता है और उन्हें बाहरी उपकरणों के साथ एकीकृत करना थोड़ा आसान होता है (क्योंकि सभी उपकरण सभी MariaDB सुविधाओं का समर्थन नहीं करते हैं)। यदि आप एक नई और चमकदार सुविधा से लाभान्वित होते हैं जिसे अभी-अभी मारियाडीबी में लागू किया गया है, तो आपको किसी भी संभावित संगतता मुद्दों और संभावित कम प्रदर्शन को ध्यान में रखते हुए इस पर विचार करना चाहिए।
हमें उम्मीद है कि इस ब्लॉग पोस्ट ने आपको MySQL दुनिया में हमारे पास मौजूद विभिन्न विकल्पों और विभिन्न कोणों के बारे में कुछ विचार दिए हैं जिनसे आप उनकी तुलना कर सकते हैं। दिन के अंत में, यह तय करना आपका काम होगा कि आपके सेटअप के लिए सबसे अच्छा क्या है। यह आसान नहीं हो सकता है लेकिन फिर भी हमें आभारी होना चाहिए कि हमारे पास एक विकल्प है और हम वह चुन सकते हैं जो हमारे लिए सबसे अच्छा काम करता है।