السلام عليكم ورحمة الله وبركاته



مقدمة الى قواعد البيانات المركزية
منقول

قبل ان ابدء الشرح عن
SQL Server

اريد التحدث قليلا عن قواعد البيانات عامة وعن الفرق بينها وبين قواعد البيانات المركزية ، فكما يعلم البعض نظام ال
SQL Server
هو عبارة عن قاعدة بيانات مركزية تقوم بادارة قواعد البيانات وتوزيعها عبر شبكة الكومبيوتر

لقد بدء ظهور قواعد البيانات المركزية بشكل مكثف في نهاية الثمانينات ، طبعا هي موجودة بطريقة او باخرى منذ فترة اطول ولكن استخدامها اقتصر الى بعض المؤسسات الضخمة فقط

لقد كان الجميع قبل ذلك يستخدم البرامج التي صنعت بلغات البرمجة العادية والتي كانت تخزن بياناتها في ملفات خاصة بها ، والمشكلة الاساسية في تلك البرامج كانت محدودية استخدام البيانات ، اعني انك لا تستطيع الاستعلام عن البيانات بطريقة اخرى غير الطريقة التي صمم بها البرنامج

كمثال : لنفترض بانك تستخدم برنامج صمم بواسطة لغة برمجة ما ليخزن بياناته في ملفات خاصة به وليس في قواعد البيانات ، وكان احد فروع برنامجك هو الاستعلام عن البضائع ، مهما تتعب في تصميم هذا الاستعلام ، فقد تجد دوما من ياتي لك بفكرة جديدة لاستعلام ما
فقد يطلب الشخص كل البضائع التي تم استلامها في تاريخ معين ، من مورد معين وتم بيعها في تاريخ معين الى زبون معين ، قد يكون برنامج قادر على القيام بذلك ، ولكنه قد يعقد الاستعلام ويضاف الى الاستعلام السابق ترتيب البضائع حسب تاريخ الاستلام مثلا
فقد لا تكون وضعت تلك المميزة في برنامجك عند تصميمه ، ولذلك فلن يتمكن المستخدم النهائي الحصول على طلبه بالضبط

ومن هنا بدئت فكرة قواعد البيانات عامةً ، وكانت الفكرة ايجاد طريقة موحدة لحفظ البيانات ، وايجاد برنامج قادر على جميع انواع الاستعلامات من قاعدة البيانات ، فلو فشل برنامج السابق ، فبامكان المستخدم فتح ملف البيانات عن طريق برنامج الاستعلام الرئيسي الذي ياتي مع قاعدة البيانات واجراء كل الاستعلامات التي يحلم بها

ومن هنا ظهرت قواعد البيانات وظهرت ايضا لغة
SQL
المخصصة للاستعلام في قواعد البيانات ، وبدئت تتطور وانتقلت العديد من الشركات لاستخدامها ، نظرا لسهولة التعامل معها وسرعة برمجتها

ولكن مع زيادة حجم المؤسسات وبداية ظهور شبكات الكومبيوتر ، اصبحت قواعد البيانات بحاجة الى ان تعمل على اكثر من جهاز في نفس الوقت ، فتطورت برامج ادارة قواعد البيانات واصبحت قادرة على فتح نفس الملفات المخزنة في الجهاز المركزي من عدة اجهزة كومبيوتر في نفس الوقت ومن امثلتها
DBase
Paradox
وغيرهما

ولقد حل السابق بعض المشاكل ولكن ليس كلها ، لان مع زيادة حجم البيانات وزيادة عدد الاجهزة المتصلين بالشبكة اصبح صعب ادارة ملفات قاعدة البيانات المخزنة على الجهاز المركزي ، كما ان امنها كان معرض للخطر دائما ، فبامكان الجميع الوصول الى الملف المركزي الذي يحتوي على البيانات ويعبث به ، او حتى ان يصل الى بيانات لا صلاحية له باستخدامها

كما ان الاستعلامات المتزايدة على قواعد البيانات زادت من الضغط على الشبكة فكما تعلم يتطلب الاستعلام عن شخص ما ، يتطلب البحث في كل قاعدة البيانات حتى ايجاده بها

فعلى سبيل المثال : لو كان لديك جدول في قاعدة البيانات وبه معلومات عن عشرة الاف نوع من البضائع وطلبت ان من جهازك كل البضائع التي استلمت في تاريخ معين ، فعليا سيقوم جهازك باحضار العشرة الاف سجل في قاعدة البيانات الى جهاز وذلك عبر الشبكة وسيفلترهم ويفرز البيانات المطلوبة

ولكنه ضغط على الشبكة بالحصول على كل تلك المعلومات معا ، طبعا الشبكة قد تتحمل طلب او طلبين معا ، ولكن ماذا بالنسبة للبنوك مثلا ، هناك الاف السجلات وعشرات العمليات في نفس الوقت

ولذلك بدئت الحاجة الى تطوير قواعد البيانات العادية ، ومن هنا ظهرت قواعد البيانات المركزية ، فهي عبارة عن برنامج يعمل بداخل الجهاز المركزي ويخز البيانات فيه ايضا ولكن الاختلاف بينها وبين السابق ذكره ان طلب البيانات لا يتم الا من خلال البرنامج الذي يعمل في الجهاز المركزي والذي يسمى محرك قواعد البيانات المركزية ، وبذلك يكون قد تم فصل المستخدم النهائي عن الملف الرئيسي لقواعد البيانات

فلو كنت بحاجة الى استعلام معين ، فسيقوم برنامجك بطبل ذلك الاستعلام من محرك قواعد البيانات المركزية الموجود في الجهاز المركزي ، حيث بدوره سيقوم هو بالاستعلام ومن ثم يعطي النتيجة فقط للجهاز العادي الذي طلب الاستعلام وبذلك يكون قد انهى كابوس اغراق الشبكة بالبيانات

كما ان محرك قواعد البيانات الرئيسية مسؤول عن حماية البيانات ، فم قبل كان الجميع يستطيع الوصول الى كل البيانات المخزنة ، ولكن باستخدام النظام الجديد ، اصبح فقط من لديهم صلاحية الوصول قادرين على ذلك ، كما اصبح بامكان مدير الشبكة اعطاء صلاحيات مختلفة للمستخدمين ، فقد يمنع مستخدم من اضافة بضاعة جديدة على جدول البضاعة ويسمح له بالنظر عليها فقط ، وقد يمنعة نهائيا من الوصول الى جدول الموردين مثلا ، او فقط على جزء من جدول الموردين مثل عناوينهم او ارقام هواتفهم مثلا

كما ان محرك قواعد البيانات المركزية اصبح يقوم بعمليات النسخ الاحتياطي والحفاظ على البيانات من التلف اتوماتيكيا ، وذلك بفحصها باستمرار ونسخها على اشرطة النسخ الاحتياطي واعلام مدير النظام باية مشاكل صغيرة بداخلها

وهكذا استمر تطور قواعد البيانات المركزية الى يومنا هذا وظهر العديد منها في السوق مثل

Oracle 8
SQL Server 7
IBM DB2
SYbase
Informix
Borland IntraBase

مقارنة بينMicrosoft SQL ServerوبينOracle


عندما قررت قبل ثلاثة سنوات اعتماد نظام قواعد بيانات مركزية لاستخدمها في عملي ، كان يجب أن اختار بين اشهر الأنظمة المتوفرة في الأسواق ، وكانت في تلك الفترة
Microsoft SQL Server
و
Oracle
طبعا الخيار كان صعبا ، خصوصا لانه يتطلب وقتا كبيرا لتتقن استخدام نظام قواعد بيانات مركزية ، ولا يوجد لدي وقت لاتقن استخدام نظامين معا ، ولذلك كان على الاختيار بعناية

واليوم أجد صعوبة في شرحي لماذا اخترت هذا النظام عن ذاك ، نظرا لوجود شرط أساسي في اتفاقية التركيب لكل من البرنامجين السابقين ، حيث تمنعك الاتفاقية من أجراء اية مقارنات بدون مراجعة الشركة المصنعة لتلك الأنظمة ، ولهذا السبب يتعذر وجود مقارنات تفصيلية بين النظامين السابقين في إنترنت

لقد كانت معظم المقارنات سابقا تتعلق بسرعة اداء محرك قاعدة البيانات المركزية والحجم البيانات الاقصى الممكن ان تستوعبه ، ولكن مع تطور التكنولوجيا المستخدمة بها ، أصبحت الفروق في السرعة بين النظم المختلفة ضئيلة للغاية ، كما ان حجم التخزين وصل الى الحدود القصوى لسعة التخزين في جهازك ، أي بمعنى اخر تستطيع تخزين بيانات في قاعدة البيانات حتى يتملئ القرص الصلب او الأقراص الصلبة الموجودة في جهازك مهما كانت سعتها
ذلك لان النظم الجديدة تستخدم تكنولوجيا معقدة لحفظ واسترجاع البيانات ، حيث تستغل المعالج ووسائط التخزين لاقصى حد ممكن

ومع ذلك فهناك العديد من النقاط التي جعلتني افضل أحدهما عن الاخر ومن اهمها

سهولة تعلم استخدام النظام ودرجة تعقيده وسرعة بناء و إدارة قواعد البيانات به

تلكفة النظام ( تلكفة الشراء ، التركيب ، الصيانة ، الاستخدام عبر الشبكة ، وغيرهما)

سهولة تعلم استخدام النظام ودرجة تعقيده وسرعة بناء وادارة قواعد البيانات به

عندما حصلت على النسخ التجريبية من النظامين السابقين وركبت كل منهنا على جهازي وبدئت الاختبارات عليه ، وجدت صعوبة كبيرة في التعود على استخدام اوراكل ، فبدء بالنسبة لي كنظام ضخم ومعقد ، حتى انني واجهت مشاكل في استخدامه لاول مرة فقد طلب مني اسم المستخدم وكلمة السر والذي تطلب مني اسبوعا لإيجادهم ، اعتقد بانه كان يفترض ان توزعهم اوراكل مع النسخة التجريبية
ثم بدئت اواجه المصاعب واحدة تلو الأخرى ، فلقد بدء لى النظام غريبا ومختلف قليلا عن ويندوس ، وقد صعقت عندما فهمت انني بحاجة الى استخدام لغة
SQL
مباشرة لانشاء الجداول والتعامل مع البيانات ، بالطبع توفر اوراكل بعض البرمجيات الاضافية اليوم للقيام بذلك ، ولكنني لم اعتاد عليها بالقدر الكافي ، حتى انني لم اعلم في ذلك الوقت اين تخزن البيانات في القرص الصلب ، وكيف اصنع قاعدة بيانات جديدة والكثير من الاسئلة الاخرى التي لم استطيع ايجاد اجابة مباشرة عليها ، فانا اعلم منذ تعليمي في الجامعة ان اوراكل هو افضل نظم قواعد البيانات الموجودة ، وتذكرت عندها
Unix
والذي كان يحاول الجميع اقناعنا بانه الافضل ، هو صحيح الافضل في نظم التشغيل ، ولكنه ممتاز لدرجة انك لا تستطيع استخدامه في المؤسسات العادية
(هذه مزحة فقط)
فانت بحاجة الى كتابة الكثير للقيام بابسط العمليات ، وهكذا كان مع اوراكل ايضا ، حيث انني علمت فيما بعد انه اساسا صمم ل
Unix
ونقل بعد ذلك الى ويندوس ن ت

ولكن الامر اختلف كثيرا عندما ركبت النسخة السابقة في ذلك الوقت من
SQL Server
وكانت 6.5 ، لقد ارتحت كثيرا منذ اول تشغيل لي لذلك البرنامج ، فوجد بانني استطيع القيام بمعظم العمليات عن طريق برنامج واحد فقط ، ففرقت بسهولة بين قواعد البيانات المختلفة ومكان تخزينها وطرق النسخ الاحتياطي الخاص بها والكثير من الامور غيرها ، وعندما طورت النظام الى النسخة السابعة ورئيت التغيرات الضخمة والتسهيلات التي وجدتها به ، ازدادت سعادتي كثيرا
فانا قادر عن طريق برنامج الادارة
Microsoft SQL Server7.0 Enterprise Manager
القيام بكل العمليات التي ارغب بها بسهولة وسرعة عالية ، حيث يقدم لي كل ما احتاج لصناعة الجداول والاستعلامات والبرامج الصغيرة وغيرها ، كما انني استطيع ان اجعله بان يقوم بالعديد من الامور الاخرى اتوماتيكيا ، مثل فحص البيانات كل ليلة ونسخها احتياطيا واخباري عن ذلك يوميا عن طريق البريد الالكتروني ، وذلك في حال تواجدي في مكان بعيد ، بل اكثر من ذلك ، فباستطاعتي توجيه الأوامر اليه مباشرة عن طريق البريد الالكتروني وذلك ان كنت مسافر مثلا.

ولقد اكتشفت ايضا ان البرنامج قابل لاستخدام اللغة الإنجليزية ، فبمجرد بان تقوم بتوصيف الجداول في قواعد البيانات وشرحها للنظام ، فانت قادر على توجيه الاسئلة اليه باللغة الانجليزية مباشرة ، فتستطيع ان تسأله بلغة إنجليزية طبيعية ان يعرض لك أصناف البضائع ، او معلومات عن الموردين ، او ما يشابه ذلك ، وذلك عن طريق ال
English Query Language
المرفقة بالنظام نفسه

اما بالنسبة للوثائق التعليمية فقد ارفقت مايكروسوفت ما يزيد عن 10 الاف صفحة من الكتب مع ذلك النظام على قرص الليزر وذلك عن طريق
SQL Server Books On-Line
كما وجدت العديد من الوثائق في مواقع مايكروسوفت على انترنت مثل
support.microsoft.com
msdn.microsoft.com/library
msdn.microsoft.com/sqlserver
كل تلك الوثائق والمستندات ساعدتني بان اتغلب على اية مشكلة كانت تحدث مع
SQL-Server
دقائق بعد حدوثها ، عكس اوراكل والذي فشلت في ايجاد حل المشاكل التي واجهتني عند استخدامه عن طريق اوراكل في انترنت.