مقارنة بين MariaDB و MySQL : كل ما تحتاج إلى معرفته - صفحات

مقارنة بين MariaDB و MySQL : كل ما تحتاج إلى معرفته

MySQL هي إحدى أشهر قواعد البيانات وأكثرها استخداما في جميع أنحاء العالم. كما أنها مجانية ومفتوحة المصدر. تعد MySQL، التي طُوِّرت بلغة C/C++‎، إحدى أفضل الخيارات المتاحة في السوق.

تم تأسيس قاعدة البيانات MySQL  من قبل الشركة السويدية "MySQL AB" في عام 1995. وقد تم الاستحواذ على MySQL AB لاحقًا من قبل شركة Sun Microsystems في عام 2008. وفي وقت لاحق أيضًا، تم الاستحواذ على شركة Sun Microsystems من قبل شركة Oracle في عام 2010. منذ ذلك الحين، تُصان MySQL وتُدار من قبل Oracle.

إبّان الاستحواذ على Sun Microsystems من قبل Oracle، شعر بعض كبار المهندسين الذين كانوا يعملون على تطوير MySQL بوجود تضارب في المصالح بين MySQL، وقاعدة بيانات Oracle التجارية - Oracle Database Server. لذلك قرر هؤلاء المهندسون استنساخ شيفرة MySQL، وأسسوا منظمتهم الخاصة. وهكذا وُلدت MariaDB.

تتمتع كلا قاعدتي البيانات بشعبية كبيرة، ويستخدمهما مجتمع المطورين على نطاق واسع. تحتل MySQL المرتبة الثانية بين قواعد البيانات العلائقية (relational databases)، والمرتبة الثانية بشكل عام (المرتبة الأولى تعود إلى قاعدة بيانات Oracle). أمّا MariaDB فهي أقل شيوعًا، إذ تحتل المرتبة التاسعة بين قواعد البيانات العلائقية، و الرابعة عشرة عمومًا.

في هذه التدوينة، سنحاول مقارنة بعض ميزات كلا قاعدتي البيانات لمعرفة أيّ منها أصلح للاستخدام في عام 2019.

 

MariaDB مقابل MySQL: مقارنة الأداء

تتمتع MariaDB بالعديد من التحسينات التي تجعل أداءها أحسن مقارنةً بـ MySQL. في الحقيقة، كانت تلك هي بالضبط الرؤية المنشودة عند تأسيس MariaDB من قبل Michael Widenius، المؤسس الأصلي لكل من MySQL و MariaDB.

 

عروض قاعدة البيانات (Database Views)

هناك تحسين كبير في الأداء بخصوص "عروض" (views) قاعدة البيانات. "العروض" هي بالأساس جداول افتراضية لقاعدة البيانات يمكن الاستعلام عنها مثل الجداول العادية. في MySQL، عند الاستعلام عن عرض معيّن، سيُستعلم عن جميع الجداول المتصلة بالجدول، حتى لو لم يتطلّب الاستعلام كافة العروض. تم تحسين هذا في MariaDB، حيث يتم الاستعلام فقط عن الجداول المطلوبة (required) من الاستعلام.

 

ColumnStore

تقدم MariaDB تحسينًا مهمًا آخر للأداء في شكل ميزة "ColumnStore"، وهي عبارة عن بنية بيانات موزعة تسمح بتوسيع MariaDB بشكل كبير. يمكن أن تتوسع خطيًا لتخزين عدة بيتابايتات petabytes (بيتابايت = مليون جيجابايت) من البيانات عبر خوادم مختلفة في كتلة قاعدة البيانات.

 

أداء أفضل في التخزين الوميضي (Flash Storage)

توفر MariaDB محركَ التخزين MyRocks الذي يضيف قاعدة البيانات RocksDB إليها. RocksDB هي قاعدة بيانات صُمِّمت لتحسين أداء التخزين الوميضي (flash storage) من خلال توفير مستوى عال من ضغط البيانات.

 

ذاكرة التخزين المؤقت المفتاحية (Segmented Key Cache)

تقدم MariaDB تحسينًا آخر في الأداء عبر ذاكرة التخزين المؤقت المفتاحية (Segmented Key Cache). في ذاكرة التخزين المؤقت النموذجية، تتنافس عدة مهام فرعية (threads) لقفل مدخل المخزن المؤقت (cached entry). وتسمى هذه الأقفال mutexes. عندما تتنافس عدة مهام فرعية على كائن mutex، فقط واحد منها سيكون قادرًا على الحصول عليه، بينما يتعيّن على الأخرى انتظار فتح القفل قبل إنجاز العملية. هذا يؤدي إلى تأخير تنفيذ المهام الفرعية، مما يؤدي إلى إبطاء قاعدة البيانات. في حالة ذاكرة التخزين المؤقت المفتاحية، لا تحتاج المهمة الفرعية إلى قفل الصفحة بأكملها، ولكن يمكنها الاكتفاء بقفل الجزء المعين الذي تنتمي إليه الصفحة. يمكّن هذا من أن تعمل عدة مهام فرعية توازيًا، وبالتالي زيادة التوازي في التطبيق، مما يؤدي إلى تحسين أداء قاعدة البيانات.

 

الأعمدة الافتراضية (Virtual Columns)

من الميزات الحسنة التي تدعمها MariaDB ميزةُ الأعمدة الافتراضية (virtual columns). هذه الأعمدة قادرة على إجراء العمليات الحسابية على مستوى قاعدة البيانات. يعد هذا مفيدًا للغاية عندما تعمل العديد من التطبيقات على نفس العمود، وبالتالي، ليست هناك حاجة لكتابة الحسابات في كل تطبيق - يمكن لقاعدة البيانات القيام بذلك نيابة عنك. هذه الميزة غير متوفرة في MySQL.

 

التنفيذ المتوازي للاستعلامات

يسمح الإصدار MariaDB 10.0 بتنفيذ عدة استعلامات بالتوازي. والفكرة هي أنّ بعض الاستعلامات من القاعدة الرئيسية (Master) يمكن تكرارها في القاعدة الفرعية (slave)، وبالتالي، يمكن تنفيذها بالتوازي. هذا التوازي في تنفيذ الاستعلامات يعطي الأفضلية لقاعدة البيانات MariaDB على أختها MySQL.

 

تجميع المهام الفرعية (Thread Pooling)

قدمت MariaDB مفهومًا جديدًا يسمى تجميع المهام الفرعية (Thread Pooling). في السابق، كنت إن احتجت إلى ربط عدة اتصالات بقاعدة البيانات مضطرًّا إلى فتح مهمة فرعية لكل اتصال (connection)، مما كان يؤدي إلى هيكلة قائمة على "مهمة فرعية لكل اتصال" (one thread per connection). باستخدام "تجميع المهام الفرعية"، ستكون هناك مجموعة من المهام الفرعية المفتوحة التي يمكن لأي اتصال جديد أن يرتبط بها ويستعلم عن قاعدة البيانات. بهذه الطريقة، لا يلزم فتح مهمة فرعية جديدة لكل طلبية اتصال (connection request) جديد، وهو ما أدى إلى جعل نتائج الاستعلام أسرع. تتوفر هذه الميزة في الإصدار التجاري (Enterprise edition) من MySQL، ولكنها للأسف غير متوفرة في الإصدار المجاني (Community edition).

 

محركات التخزين (Storage Engines)

توفر MariaDB العديد من محركات التخزين القوية التي لا توفرها MySQL، مثل، XtraDB و Aria إلخ. لإعداد محركات التخزين هذه لأجل MySQL، تحتاج إلى تثبيتها يدويًا، وهو أمر غير يسير.

 

التوافقية

يحرص فريق MariaDB على أن تكون MariaDB قادرة على استبدال MySQL بسلاسة في التطبيقات الحالية. في الواقع، لكل إصدار من MySQL، يطلقون إصدارًا بنفس الرقم من MariaDB للإشارة إلى أنّ MariaDB متوافقة بشكل عام مع إصدار MySQL المقابل. هذا يفتح إمكانية التبديل إلى MariaDB بسلاسة دون الحاجة إلى أي تعديلات في شيفرة التطبيق.

 

قاعدة البيانات مفتوحة المصدر أم قاعدة البيانات المملوكة

MySQL هي مشروع كبير، وتديره واحدة من أكبر المؤسسات في العالم، وهي Oracle. هذا له إيجابيات وسلبيات. واحدة من أكبر السلبيات هو أنّ إطلاق ميزات جديدة في المؤسسات الكبيرة يستغرق الكثير من الوقت. من ناحية أخرى، MariaDB مفتوحة المصدر بالكامل، وفريق مطوريها يقبلون المساهمات الخارجية بسرعة، مما يؤدي إلى إدماج ميزات وتحسينات جديدة فيها. هذه نقطة يجب مراعاتها أثناء الاختيار بين MySQL و MariaDB.

 

خلاصة

MariaDB هي أداة قوية للغاية، وتوفر العديد من الميزات المفيدة التي لا تدعمها MySQL. مثلُ هذه الميزات تجعل MariaDB خيارًا ممتازًا لاستخدامها كقاعدة بيانات للواجهة الخلفية الأساسية. بشكل عام، لا تحتاج المؤسسات التي اشترت بالفعل تراخيص Oracle إلى الاستثمار في MariaDB. أما أولئك الذين لا يزالون في البداية، فلا شك أنّ MariaDB هي الخيار الأفضل لهم.

 

ترجمة - وبتصرف - للمقال MariaDB vs MySQL: [2019] Everything You Need to Know لصاحبها Aman Goel.

التعليقات

يجب تسجيل الدخول أو التسجيل لتتمكّن من التعليق