المتابعون للمدونة

الخميس، 6 أكتوبر 2016

الخادم والعميل


الخادم Server والعميل Client:

الخادم Server هو حاسوب توجد عليه قاعدة البيانات، ويعمل عليه
SQL Server، ومهمته تجهيز البيانات المطلوبة وإرسالها إلى المستخدم أو استقبال البيانات الواردة من المستخدم وحفظها في قاعدة البيانات.

بينما العميل Client هو أيّ جهاز حاسوب آخر يوجد عليه برنامج قواعد البيانات الذي كتبته أنت، ويقوم بالاتصال بخادم سيكيول لطلب البيانات أو حفظها عليه.

ويمكن أن يكون هناك آلاف العملاء Clients، كلّ منهم يحاول الاتصال بقاعدة البيانات على الخادم في نفس الوقت، وطلب البيانات منها لمعالجتها على أجهزتهم، ثمّ إرسال أيّ تعديلات تمّ إجراؤها عليها إلى الخادم مرّة أخرى، ليتمّ حفظها في قاعدة البيانات.

ويقدم لنا نموذج الخادم والعميل الميزاتٍ التالية:

- وجود قاعدة البيانات على الخادم يوفر لمستخدميها مساحة التخزين (بدلا من وضعها على أجهزة كل المستخدمين)، خاصّة حينما تكون قاعدة البيانات عملاقة.

- وجود قاعدة البيانات على الخادم يترك للجهة المسئولة عنها مهمّة تحديثها باستمرار، وهو أفضل من اضطرار كلّ مستخدم إلى شراء أو تنزيل نسخة حديثة من قاعدة البيانات كلّ فترة.

- وجود قاعدة البيانات على الخادم يضمن مشاركتها بين مئات المستخدمين، ما يضمن مساهمتهم في إضافة البيانات وقدرة كل منهم على رؤية التعديلات التي أجراها الآخر، بينما لو كانت قاعدة البيانات على جهاز كل منهم بمفرده، فلن يمكنهم العمل الجماعي عليها، وهذا لا يناسب نشاط الشركات التجارية والمؤسسات المالية.

- إجراء العمليّات على البيانات على جهاز العميل بعد الحصول عليها من الخادم، يكون أسرع بكثير من تنفيذ البرنامج على الخادم ثمّ إرسال الناتج إلى العميل، لأنّ هناك عددا ضخما من المستخدمين الذين يجرون آلاف العمليّات في نفس اللحظة.

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

- ألا يطلب برنامجك بيانات لا ضرورة لها.. فإن كنت تحتاج مثلا إلى خمسة سجلات من الجدول، ولن تتعامل إلا مع حقل أو حقلين منها، فما الداعي لأن تقرأ كل السجلات أو حتى كل حقول السجلات الخمسة؟.. اطلب فقط ما تحتاجه.

- التأكد من كتابة أقصر وأكفأ استعلامات SQL ليكون تنفيذها أسرع فلا ترهق الخادم.

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

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

كما أن هناك بعض التحدّيات التي تواجه المبرمج وهو يكتب برنامجا يتعامل مع الخادم، مثل التعارض الذي يمكن أن ينتج عندما يحذف أحد المستخدمين بعض السجلات، بينما مستخدم آخر يحدّث قيمها!.. أو عندما يحاول أكثر من مستخدم تحديث نفس السجلات بطرق مختلفة في نفس الوقت.. وسنرى كيف نواجه مثل هذا الأمر لاحقا. 

 

من كتاب: من الصفر إلى الاحتراف برمجة قواعد البيانات في فيجوال بيزيك دوت نت ADO .NET.. للتنزيل:


 

ليست هناك تعليقات:

إرسال تعليق

ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.

صفحة الشاعر