كنت أريدها مقالة قصيرة علمية رصينة ، ولكن لظروف قاهرة
[كسل رهيب ]جعلت المقالة ترفع شعار " للاطلاع فقط " ، ولم أتمكن من تمحيصها جيداً ،حيث انشغلت البارحة بمتابعة Ice Age للمرة الرابعة عشر، ولكن لنبدأ بالعصرالحجري للكمبيوتر ، حيث كانت الأفكار في ذلك الوقت تحاول أن تتخيّلالكمبيوتر وتحاول توجد الأدوات التي من خلالها نصنع البرنامج ولم أسبرأغوار تلك الفترة جيداً لذلك سأنتقل للعصر الجليدي - أواخر السبعينات -حيث CIA كانت تريد من شركة Ampex ، التي كان يعمل فيها " Ellison" ، تطويرقاعدة بيانات أسماها فيما بعد بـOracle والتي ظهرت كقاعدة بيانات علائقية- مبنية على فكرة الجداول - ومن الجيد أن اذكر أني قرأت في مكان ما أنأوّل نسختين من Oracle تم تطويرها باستخدام Assembly قبل أن ينتقلوا للغةالسي ، وهذا يفتح باب لسؤال مهم : أيهم أقوى ، السي أم الاسمبلي ؟
تباً ..هل دار بخلدك هذا السؤال الآن ؟!على مدار تطوّر Oracle وتقدمها ، بدايةً من اعتمادها على معماريةClient/Server ثم 3-tier ، واخراج لغة مثل PLSQL وما إلى ذلك .. إلا أنالفكرة كانت واحدة وهي الاعتماد على " الجداول " كمبدأ أساسي في تخزينالبيانات وتنفيذ الاستعلامات باستخدام لغة SQL . خلال هذه الفترة ، لم تكنOracle تعيش بسلام ، فكونها
ماموثة العصرالجليدي ، لم يمنع الغير من المنافسة فكانت IBM بمنتجها DB2 تزاحم Oracle، ودخول Microsoft على الخط بشراءها لأحد المنتجات الذي تحوّل إلى SQLServer ، أشعل المنافسة .
وفي العصر الجليدي لابد من ظهور بعض الطفيليات .. حتى في جو قارص ، فكانت SQLight هي تلك ، فصارت هي (
سنجاب )العصر الجليدي الذي يلاحق (حبّة الفسدق) ليحصل على شيء من الوجبة .SQLight يسير على نفس النمط .. جداول مع sql ، ولكن بتطويرات تتمثل بـميزةالحجم الصغير ، قدرة على العمل في بيئة لاتحوي على " سيرفر " .. فكلماتحتاجه هو " بضعة بايتات " من جهازك لتستخدم SQLlight في برنامجك ، وهذاما جعل Mozilla تختار SQLight بل وتدعمها وتستخدمها في أعز ما تملك -Firefox - ، فهي الخيار المفضل للبرامج التي تعمل على Client فقط ، ومابين السنجاب SQLight و الماموثة Oracle لابد ان يظهر (
الكسلان ) وهو الـ Access ليشير بذيله : أنا موجود .
MySQL و postgreSQL و " عد و اغلط " ، كلها قواعد بيانات تسير على نفس النمط .. جداول مع sql ، ولكن بحذف عيب وإضافة ميزة. وتستطيع أن تضم محبوبة Sun - عليها الرحمة - ، المسمّاة بـ
Apache Derby، ضمن " الجوقة " .. قد يكون الاختلاف هنا ، أنك أمام قاعدة بيانات مكتوبةبلغة أخرى ، لغة الشمس .. لغة Java ، كانت Sun تحب Apache Derby كثيراً:-( .
مع ظهور الانترنت وانتشاره ، ظهرت
XML (هل هناك ربط بينهما ؟ لا أعرف ) ، XML أثارت ضجة وحركت المياه الراكدة فيأواخر القرن الماضي ، جعلت بيل جيتس يقرر أن كل شيء تنتجه Microsoft ،يُبنى على XML كوسيلة لتخزين وتبادل البيانات . صدق وهو الصدوق عند محبيهالكذوب عند البطاريق ، فكانت أوامره قد وصلت لفريق Microsoft Officeلينفذوا ذلك ، فكل شيء يخزن على هيئة XML ، وفتح هذا مجالاً واسعاً لتبادلمستندات MS Office عبر الويب ، وعبر التطبيقات المختلفة . وكان هذا حالكثير من التطبيقات التي انتقلت إلى XML لتخزين بيانتها بدلاً من أسلوبالعصر الحجري الأزلي ، Binary Files . قد تكون ضخامة المساحة على القرصالصلب هي من دفعت بـ XML للازدهار .. ولكن من يقف وراء XML ما اكتفى بهذا، بل أنتج
XSLT و
XPath ، ليجعل من XML أداة جاهزة وطيّعة لتحل كبديل لقواعد البيانات العلائقية Relational database .. والأمور لم تتوقف عند هذا ، بل ظهرت
XQuery لتكون بمثابة SQL لـ XML .
موضة " المواصفات القياسية " التي أخرجتها W3 ، لم تمنع Google من أنتنتفض وتنتج أسلوبها الخاص في تخزين بياناتها " الضخمة جداً جداً " ، فكان
BigTable المبني على
GFS ،هذا المنتج لازال قابعاً في شركة Google حسب ما قرأت. المنتج لايسير علىنفس نهج وطريقة " قواعد البيانات السابقة ، فموضة Client/Server البائدةوموضة 3-tier الحالية ، يبدو أنها لا تكفي .. لا أعلم عن تفاصيل هذاالمنتج ، ولكن تستطيع تشبيهه بمنتج Facebook ذو الاسم الحسن و الوجه الحسن
Cassandra الذي أتاحوه لـ Apache لتكمل المهمة .. كاسندرا ، ترفع شعار " رنان " ، وهو
NoSQL ،صدّقني ستسمع هذا كثيراً في كوابيسك ... NoSQL ... NoSQL ... ، الميزةالتي يتكلمون عنها ، أنك أمام قاعدة بيانات يمكن أن تطوّرها بمجرد إضافةمزيد من Hardware دون الحاجة لتدخل سوفتويري .. ثورة Google و Facebook ثم
لحاق Digg بهم ونظرها للمستقبل بعيون كاسندرا لا بعيون MySQL، بل وحتى ثورة Amazon على الأساليب التقليدية في تخزين البيانات ، جاءبسبب أنك أمام أعداد مهولة منتشرة بأصقاع الأرض ، تريد الحصول على مواردكresources ، وبالتالي بدا أن Oracle لوحدها ، ليست هي ذاك الحل المثالي ،فالعملاء تغيروا ، فأنت لست أمام " بنك " أو " فندق " ، أنت أمام Google وFacebook ، وأضف عليهما Twitter .
وبمناسبة ذكر Amazon ، كلنا يعرف أن Amazon خدمتناسنين طويلة "بكتبها " ..لكن أضف لمعلوماتك أن Amazon تنوي قطع أرزاق بعض قرّاءنا الأعزاء ، بفكرةواقعية جداً : لماذا أقوم بتوظيف DBA وأخسر راتب شهري 30 ألف ريال ، بينمايمكنني قطع رزق ذاك الموظف بـطريقة Simple ؟ استطاعوا بالفعل أن يوجدواطريقة لقطع رزق DBAs من خلال
SimpleDB، والأرزاق بيد الله - نسيت أن اخبرك ان SimpleDB أيضاً ترفع شعار NoSQL . وبمناسبة NoSQL ، من الجيد أن تعرف
من يرفع هذا الشعار لتأمن شره أو تنضم للقافلة وتكون ممن ينادي لا " إس كيو ال " .
يكفي ان تتخيّل أن JSON دخلت على الخط ، فهناك قاعدة بيانات تقوم على فكرةJSON أيضاً .. الفكرة يبدو أنها ثورية ، بالرغم من بساطتها ( key andvalue ) ، فحين تستخدم Javascript قاعدة بياناتها الخاصة بأسلوبها الذيتفهمه ، يجعل الأمور تختلف وقواعد اللعبة تختلف ، بل ويخالجك شعور ، أنكوصلت لعصر متقدّم جداً ، خذ
DovetailDB بطريقك !
المنتجات كثيرة ، فقاعدة بيانات
MongoDB الساحرة ،
CoucheDB،
HyperTable و أخيراً لا ننسى الشاب
Redis لنضمّه للقافلة تشجيعاً له ، كلها دليل على أن الأمور تغيّرت ، وأن Oracle
كماموثةللعصر الجليدي قد تنقرض يوماً ما .. فالكل يستطيع أن ينتج والكل يستطيع أنيصنع قاعدة بياناته بيده لا بيد عمرو ، أما موضة " الجداول " و "الكويريات " الكلاسيكية ، انتهت .
أن تكتب" كويري وقح " ، كهذا :
expand |plain text - الكود:
-
SELECT emp.ename, dept.dname, sg.grade
FROM emp
JOIN dept ON emp.deptno = dept.deptno
JOIN salgrade sg
ON ((emp.sal BETWEEN sg.losal AND sg.hisal)
AND (emp.sal NOT IN (
SELECT losal
FROM salgrade))
AND (emp.sal NOT IN (
SELECT hisal
FROM salgrade )))
ليس كما تكتب " استعلام ألطف " كهذا :
expand |plain text - الكود:
-
db.users.find({last_name: 'Smith'}, {'ssn': 1});
الاستعلامين مختلفين .. صحيح ، لكن القصد هو اختلاف المبدأ الذي يقوم عليه الاثنان .
هذه الثورة ، بدأت في أواخر التسعينات من القرن الماضي ، وازدادت هيجاناًمع بداية الألفية و انتشار تطبيقات Web 2.0 و الحوسبة السحابية و لغاتالبرمجة الكائنية و ظهور لغات برمجة متوازية مثل
Erlangيمكنها أن تكون الاختيار الأفضل لبناء DBMS بدلاً من لغة السي أو الاسمبلي( هل حسمت أمرك بعد وعرفت من الأقوى ؟ .. لا ؟ تباً ) ، فهنا أصبحت قواعدالبيانات موجهة لبيئة معينة ، مثل تطبيقات الويب التي يزورها يومياًالبلايين ، وليس للتطبيقات الكلاسيكية ، الموجهة للفنادق و المطاعم الفخمة، والتي لو جمعت روّادها لن يتعدوا عدد أطراف "
دودة أم 44 " .
أغلب RDBMS مثل Oracle فهمت قواعد اللعبة ، وصارت تحاول أن تغطي جميعالاتجاهات الممكنة بما فيها Document-oriented Database ، ولكن وصمةRelational و لعنة SQL لا زالت تلاحقها . وليت SQL Server يرفع شعار NoSQLأو حتى YesStanardSQL بدلاً من SQL ممسوخ ، وبما أن Document-OrientedDatabse ذُكرت ، من الجيد ان نقول أن هذا يشمل أي قاعدة بيانات مبنية علىXML أو JSON .
مع كل هذه الثورة ، وكل هذه الأعداد الهائلة من DBMSs التي وردت في هذا المقال ، يحق لنا أن نتساءل ...
ألم يمت "
الكسلان " بعد ؟