السلام عليكم،
تنبيه: الرجاء عدم ترك تعليقات مثل “مَن أفضل” ومقارنات لامكان لها هنا.
إذاً المشروع السري الجديد اسمه الفهرس، بعض الأصدقاء ممن التقيتهم قبل عدة أسابيع أخذتهم بجولة سريعة في هذا المشروع، بكل بساطة المشروع هو “مكتبة عربية بنكهة عصرية” كلمات بسيطة لتعبر عنه، وأثناء حديثي أخبرتهم بمعاناتي من حجم وأداء MySQL بتخزين المعلومات الضخمة للكتب (النصوص) خصوصاً الكتب التي تكون عادة مجلدات وهي مطبوعة ويكون حجمها بعشرات الميغات بالحالة الرقمية، بحسبة بسيطة سنرى أن المشروع حتى في مرحلته الأولية سيعاني من الحجم والأداء. حسناً في وقتنا الحاضر الحجم لم يعد مشكلة كبيرة ولكن الأداء هو المهم.
اقترح الصديق خالد حبش علي أن أقوم بتجربة MongoDB ولمن لا يعرفها فهي عبارة عن قاعدة بيانات تنتمي لحركة تسمى NoSQL حيث يقول القائمون عليها بأن SQL لغة أكل عليها الدهر وشرب، وعندما بُرمجت كان أداء الأجهزة وسعتها محدود للغاية، بالإضافة إلى تعقيدها وتعقيد تعليماتها (أوافقهم بعض الشيء) لذلك الآن حان وقت استخدام نظام أحدث فأسسوا قاعدة بيانات جديدة اسموها MongoDB وهي عبارة عن قاعدة بيانات مفتوحة المصدر، عالية الأداء، لاتحتاج لتعريف بنية قاعدة بيانات (schema) ووفروا لها دعم (drivers) في أغلب اللغات المشهورة.
لهذه التجربة استخدمت Apache AB على مشروع الفهرس المبني على دروبال 7، والتجربة تمت على قاعدة بيانات MySQL (بدون كاش ثم مع كاش) (الكاش المضمن في دروبال) ومن ثم على قاعدة بيانات MongoDB للجدول الذي يحمل النصوص وهو أكبر جدول (بدون كاش ثم مع كاش).
نتائج التجربة جاءت لمصلحة MongoDB بشكل كبير، حيث تلاحظون الخط الأزرق والزهري هما للمونغو (اﻷزرق بدون كاش والزهري مع كاش)، أما عن المحورين فالمحور اﻷفقي هو عدد الطلبات (requests) وكان عدد بسيط حتى لا أتعب جهازي المسكين، 50 طلب بشكل ثنائي (أي كل طلبين سوياً) والمحور العمودي هو الزمن بالميللي ثانية. للحيادية بالتجربة سنأخذ فقط النتائج بدون الكاش، حيث الكاش المضمن في دروبال سيخزن في قاعدة بيانات MySQL لذلك من غير المنطقي المقارنة بينهم، ستلاحظون أن المونغو كانت طوال التجربة بحدود الواحد ثانية أما MySQL فبحدود 3 ثانية.
الفرق شاسع وكبير، وهنا تتألق المونغو بأدائها، طبعاً لا داعي للتذكير بأن لكل مشروع أدواته الأنسب له، لاتنسوا أن الفيسبوك تستخدم MySQL بشكل كبير.
من ناحية حجم البيانات تشابهت قاعدتي البيانات بشكل كبير حيث كان الحجم شبه متساوي.
يبدو أني سأستخدم المونغو بالإضافة لل MySQL في المرحلة الحالية، ومستقبلاً يمكن اللجوء لحلول أكثر احترافية وتعقيداً مثل memcached و varnish.
سأقوم بنشر عدة تدوينات خلال مرحلة التطوير للفهرس وفي المرحلة المقبلة سأنشر تدوينات عن واجهة المستخدم وقابلية الاستخدام (usability) (زمنياً خلال التطوير هي تسبق مرحلة قاعدة البيانات هذه) ولاحقاً البحث (اللغة العربية و solr).










