بتـــــاريخ : 1/24/2011 12:50:00 AM
الفــــــــئة
  • الحـــــــــــاسب
  • التعليقات المشاهدات التقييمات
    0 1644 0


    قواعد بيانات لم تسمع عنها

    الناقل : elmasry | العمر :42 | الكاتب الأصلى : الشمري | المصدر : www.arabteam2000-forum.com

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

    السلام عليكم ،

    كنت أريدها مقالة قصيرة علمية رصينة ، ولكن لظروف قاهرة [كسل رهيب ] جعلت المقالة ترفع شعار " للاطلاع فقط " ، ولم أتمكن من تمحيصها جيداً ، حيث انشغلت البارحة بمتابعة Ice Age للمرة الرابعة عشر، ولكن لنبدأ بالعصر الحجري للكمبيوتر ، حيث كانت الأفكار في ذلك الوقت تحاول أن تتخيّل الكمبيوتر وتحاول توجد الأدوات التي من خلالها نصنع البرنامج ولم أسبر أغوار تلك الفترة جيداً لذلك سأنتقل للعصر الجليدي - أواخر السبعينات - حيث CIA كانت تريد من شركة Ampex ، التي كان يعمل فيها " Ellison" ، تطوير قاعدة بيانات أسماها فيما بعد بـOracle والتي ظهرت كقاعدة بيانات علائقية - مبنية على فكرة الجداول - ومن الجيد أن اذكر أني قرأت في مكان ما أن أوّل نسختين من Oracle تم تطويرها باستخدام Assembly قبل أن ينتقلوا للغة السي ، وهذا يفتح باب لسؤال مهم : أيهم أقوى ، السي أم الاسمبلي ؟ تباً ..هل دار بخلدك هذا السؤال الآن ؟!

    على مدار تطوّر Oracle وتقدمها ، بدايةً من اعتمادها على معمارية Client/Server ثم 3-tier ، واخراج لغة مثل PLSQL وما إلى ذلك .. إلا أن الفكرة كانت واحدة وهي الاعتماد على " الجداول " كمبدأ أساسي في تخزين البيانات وتنفيذ الاستعلامات باستخدام لغة SQL . خلال هذه الفترة ، لم تكن Oracle تعيش بسلام ، فكونها ماموثة العصر الجليدي ، لم يمنع الغير من المنافسة فكانت IBM بمنتجها DB2 تزاحم Oracle ، ودخول Microsoft على الخط بشراءها لأحد المنتجات الذي تحوّل إلى SQL Server ، أشعل المنافسة .

    وفي العصر الجليدي لابد من ظهور بعض الطفيليات .. حتى في جو قارص ، فكانت 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 and value ) ، فحين تستخدم Javascript قاعدة بياناتها الخاصة بأسلوبها الذي تفهمه ، يجعل الأمور تختلف وقواعد اللعبة تختلف ، بل ويخالجك شعور ، أنك وصلت لعصر متقدّم جداً ، خذ
    DovetailDB بطريقك !

    المنتجات كثيرة ، فقاعدة بيانات
    MongoDB الساحرة ، CoucheDB، HyperTable و أخيراً لا ننسى الشاب Redis لنضمّه للقافلة تشجيعاً له ، كلها دليل على أن الأمور تغيّرت ، وأن Oracle كماموثة للعصر الجليدي قد تنقرض يوماً ما .. فالكل يستطيع أن ينتج والكل يستطيع أن يصنع قاعدة بياناته بيده لا بيد عمرو ، أما موضة " الجداول " و " الكويريات " الكلاسيكية ، انتهت .

    أن تكتب" كويري وقح " ، كهذا :

    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 )))



    ليس كما تكتب " استعلام ألطف " كهذا :

      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-Oriented Databse ذُكرت ، من الجيد ان نقول أن هذا يشمل أي قاعدة بيانات مبنية على XML أو JSON .


    مع كل هذه الثورة ، وكل هذه الأعداد الهائلة من DBMSs التي وردت في هذا المقال ، يحق لنا أن نتساءل ...

    ألم يمت " الكسلان " بعد ؟

     

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

    تعليقات الزوار ()