ما المقصود بالاستعلامات المخصصة (Ad hoc SQL queries)؟
الاستعلامات المخصصة هي عبارة عن شفرات SQL برمجية يقوم المبرمج او المطور او مدير قواعد البيانات بكتابتها وتنفيذها لغرض معين و لا يتم تخزين هذه الشفرات ضمن SQL Server لذلك تكون من مسؤولية الشخص الذي يكتب هذه الشفرات حفظها بشكل منظم (كملفات بامتداد .sql) واخذ النسخ الاحتياطي لها بشكل يدوي وبشكل دوري وذلك لحفظها من الضياع او التلف.
لكي نفهم اكثر عن الاستعلامات المخصصة سوف نأخذ الامثلة التالية
من الامثلة العملية عن الاستعلامات المخصصة : يقوم مدير قواعد البيانات (Database Administrator DBA) بكتابة وتنفيذ استعلام لمعرفة ماهي اكثر خمس عمليات استهلاكا لموارد النظام (I/O , Memory) ثم يقوم بمشاركة هذه العمليات مع فريق التطوير لمراجعتها وتحيسن كفاءة الشفرة البرمجية. ان الاستعلام (َQuery) الذي سوف يكتبه (DBA) باستخدام Microsoft SQL Management Studio سوف يقوم بتخزينه على شكل ملف ذو امتداد .sql في مجلد المستندات في windows server الذي تم تنصيب SQL Server عليه او يمكن ان يخزنه محليا ضمن الحاسبة التي يستخدمها للوصول وتشغيل Microsoft SQL Management Studio.
مثال اخر يقوم المبرمج الذي من واجباته تقديم الدعم لتطبيق مبيعات باستلام المشاكل من المستخدمين الذين يشكون من عدم تطابق سعر المنتج مع السعر الجديد الذي يظهره النظام ضمن طلبات المبيعات. سوف يقوم المبرمج بكتابة الاستعلام (َQuery) لمعرفة متى تم تحديث الاسعار ( سوف يتسخدم جدول اسعار المواد مثلا) ثم بكتابة الاستعلام (َQuery) لمعرفة متى تمت عملية ادخال طلبات المبيعات التي يعتقد ان الاسعار فيها غير صحيحة (سوف يتسخدم جدول تفاصيل الطلبيات مثلا) ثم يقارن تاريخ تحديث السعر مع تاريخ ادخال الطللبات فأذا كان تاريخ ادخال الطلبات قبل تاريخ تحديث السعر فلا توجد مشكلة ويمكن ان يخبر المستخدمين من التحقق من تاريخ ادخال الطلبات. ولكن اذا كانت النتيجة العكس فهذا يدل على وجود خلل في النظام ويجب اصلاحه. الاستعلامات المخصصة التي كتبها المبرمج من الافضل ان يخزنها شكل ملف ذو امتداد .sql لانه قد يواجه هذه المشكلة في المستبقل ويمكن ان يستفاد من هذه الشفرة الجاهزة.
مثال اخر يقوم مبرمج بتطوير تطبيق مبيعات وضمن هذا التطبيق توجد نافذة تعيد قائمة بكل الزبائن فيمكن ان يكتب الاستعلام (َsql Query ) ثم يقوم باستخدام شفرات( #C) ثم يمرر البيانات الى النافذة. رغم ان هذه الطريقة ممكنة ولكنها غير مفضلة لان في مرحلة معين قد يحتاج الى تغيير المنطق البرمجي لاتسعلام قاعدة البيانات فهنا سوف يضطر الى تغير شفرة ( #C) ايضا وهذا غير مقبول عمليا في التطبيقات الكبيرة التي تمتلك العديد من النوافذ والوظائف.
من الناحية الاخرى تتيح لنا الاجراءات المخزنة التعامل برمجيا مع البيانات المخزنة ضمن قاعدة البيانات.
ما المقصود بالاجراءات المخزنة ؟
الاجراءات المخزنة هي عبارة عن شفرات برمجية مكتوبة بلغة SQL وتكون هذه الشفرات مخزنة ضمن قاعدة البيانات وهذه ميزة اساسية مقارنة بالاستعلامات المخصصة. حيث ان تخزين لاجراءات المخزنة ضمن قاعدة البيانات سوف يحافظ على الشفرات البرمجية من الضياع وكذلك سوف يتم النسخ الاحتياطي ضمنيا عندما يتم اخذ النسخ الاحتياطي لقاعدة البيانات.
من الميزات الاخرى للاجراءات المخزنة يمكن للمبرمج ان يستخدمها لتطبيق قواعد العمل (Business Rules) وهذا يعطي امكانية ومرونة لاجراء التغييرات على مستوى قواعد البيانات بدون الحاجة الى اجراء تغييرات على التطبيق ( الذي قد يكون عبارة عن موقع ويب او تطبيق وندوز الخ...) وبتالي يعطي امكانية كبيرة بحل المشاكل بدون التأثير على المستخدمين.
من الميزات الاخرى للاجراءات المخزنة هي ان هذه الشفرة البرمجية تكون مخزنة في SQL Server لذلك عند معالجة البيانات الضخمة سوف تتم عملية المعالجة ضمن السرفر وتقوم فقط بأرسال نتائج المعالجة الى التطبيق الذي استدعى الاجراء المخزن. وهذا سوف يعمل على رفع كفاءة التطبيق مقارنة بالاستعلامات المخصصة والتي قد تظطر في بعض الاحيان الى نقل كمية كبيرة من البيانات عبر الشبكة ثم تقوم بمعالجتها داخل التطبيق مما يزيد من الحمل على الشبكة وكذلك قد تؤدي معالجة البيانات الضخمة داخل التطبيق الى خفض كفاء التطبيق وضهور مشاكل البطىء.
الاجراءات المخزنة تتيح للمبرمجين تطبيق العديد من المفاهيم البرمجة ( وكذلك قسم من هذه المفاهم يمكن تطبيقها ايضا من خلال الاستعلامات المخصصة) مثل استخدام عبارات التسلسل المنطقي (مثلا عبارة IF Statement) وعبارت التفرع ( Case Switch Statement) والتعامل مع مجاميع البيانات (Dataset) عن طريق استخدام المؤشرات (Cursors)وتخزين البيانات ضمن جداول مؤقتة لغرض معالجتها و استدعاء دوال قواعد البيانات (ٍَSQL Functions) واستدعاء وتنفيذ الاجراءات المخزنة (اي يمكن تنفيذ اجراء مخزن من داخل اجراء مخزن ثاني).
في العادة تمتلك الاجراءات المخزنة بارمترات دخل ويتم استخدام القيم المدخلة لاجراء العمليات المطلوبة . ولكن ليس من الضروري ان تمتلك الاجراءات المخزنة بارمترات دخل حيث يمكن تصميم اجراء مخزن بدون بارمترات دخل. تعيد الاجراءات المخزنة النتائج بعدة طرق :
برامترات اخراج : مثلا قد تعيد برامتر يخبر التطبيق بانه تم تنفيذ الاجراء بشكل صحيح. اوتعيد قيمة معينة (مثلا عدد الزبائن في مدينة معينة) ويتم عرض هذه القيمة ضمن التطبيق.
مجاميع البيانات (Dataset) : يمكن ان يعيد الاجراء المخزن اسطر من البيانات (data rows) والتي تمرر التى التطبيق لعرضها على المستخدم ضمن تقارير او نوافذ وصفحات التطبيق.
برامترات اخراج و مجاميع البيانات (Dataset): يمكن ان يعيد الاجراء المخزن اسطر من البيانات (data rows) والتي تمرر التى التطبيق لعرضها على المستخدم ضمن تقارير او نوافذ وصفحات التطبيق وكذلك برامترات اخراج مثلا اذا كان هناك خلل في تطبيق العملية ولم تعيد اي سطر يمكن لبرامتر الاخراج ان يعيد قيمة معينة يستخدمها المبرمج لعرض رسالة خطأ للمستخدم تساعده على فهم المشكلة.
يمكن تصميم اجراء مخزن لا يعيد اي اسطر و لا يعيد كذلك برامترات اخراج. فقط ينفذ العملية المطلوبة
ليست هناك تعليقات:
إرسال تعليق