الأربعاء، 16 نوفمبر 2011

مدخل الى قواعد البيانات الموزعه

نظم قواعد البيانات الموزعة Distributed Database Systems

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

ومن جهة أخرى تهتم تكنولوجيا شبكات الحاسوب بالتحكم الموزع (غير المركزي non-central)،

أما نظم قواعد البيانات فيبدو انها تهتم بالمركزية أساسا، على عكس النظم الشبكية التي تهتم بالتوزيع.

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

وقبل أن نبدأ بالحديث عن هذا الموضوع، دعونا نجيب عن بعض التساؤلات التمهيدية:

ما هي المعالجة الموزعة What is Distributed Processing؟

المعالجة الموزعة تعني أشياء كثيرة لأشخاص/مستخدمين كثيرين، ومن ذلك: الوظائف الموزعة Distributed function ( برنامج وحيد يوزع على معالجات متعددة)، أو الحوسبة الموزعة Distributed computing (خدمات مستقلة موزعة على الشبكة)، أو شبكات الحاسوب أو تعدد المعالجات (أكثر من وحدة معالجة مركزية CPU في نفس جهاز الحاسوب)...وغير ذلك من الأمثلة.

لقد تعلمنا عند دراسة مفاهيم نظم التشغيل، أنه في أي جهاز حاسوب يوجد شكل من أشكال المعالجة الموزعة، مثلا وظائف المعالج وأجهزة الإدخال والإخراج.

نحن إذا نحتاج إلى تعريف أفضل للحوسبة الموزعة لفهم حوسبة قواعد البيانات الموزعة.

ما هو نظام الحوسبة الموزع Distributed Computing System؟

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

وفي هذا النظام يمكن توزيع أشياء كثيرة، هي:

1. منطق المعالجة Processing logic:

يتم توزيع الآلية التي تتم بها معالجة العمليات المختلفة.

2. الوظائف Function:

يتم توزيع الخدمات والعمليات الحاسوبية نفسها على شكل إجراءات ودوال محددة.

3. البيانات Data

يتم توزيع البيانات بتخزينها في مواقع مختلفة.

4. التحكم Control:

يتم توزيع عمليات السيطرة والتحكم بالبيانات والخدمات الحاسوبية المختلفة.

وفي سياق الحوسبة الموزعة نحن نقصد توزيع كل ما سبق.

درجة الاقتران Degrees of Coupling

يوجد مقياس مستخدم في نظم الحوسبة الموزعة هو درجة الإقتران، ويعرف بأنه نسبة تبادل البيانات إلى كمية المعالجة المحلية المنجزة، ويوجد نوعين رئيسين من الإقتران هما:

الاقتران الضعيف Loose coupling: وهو اقتران يتصف بـ:

- تبادل بيانات قليل نسبيا.

- معالجات تقوم بأغلب عملها بشكل مستقل.

ومن أمثلة ذلك: نظم الاستشعار الحراري.

الاقتران القوي Strong coupling: : وهو اقتران يتصف بـ:

- تبادل بيانات بأحجام كبيرة نسبيا.

- المعالجات تتطلب معلومات كثيرة من بعضها البعض مرات كثيرة.

ومن أمثلة ذلك: الخوارزمية شديدة التوازي.

لماذا نوزع النظم Why Distribute Systems؟

نقوم بالتوزيع من أجل أن تكون النظم أكثر تعويلا reliable، وأكثر استجابة responsive للمستخدم، وهكذا يسير العالم في جميع مناحيه، مثل:

المؤسسات التجارية Organizational enterprises

التجارة الإلكترونية E-commerce

مزارع/حقول المخدمات Server farms

تطبيقات الوسائط المتعددة Multimedia applications

نظم التحكم الصناعي Manufacturing control systems

نقوم بالتوزيع أيضا لدعم تكامل البيانات التي قد تكون معقدة بطرق لا تكون مدعومة بنظام وحيد، ولتزويد المؤسسات التجارية بإستقلالية وتحكم ذاتي عبر النظم التي تتجاوب معها، واخيرا نوزع لتقليل تكلفة البرمجيات، فما يخدم موقعا واحدا يمكنه خدمة أكثر من موقع.

إذا، ما هو نظام قواعد البيانات الموزع What is a Distributed Database System

هو مجموعة من قواعد البيانات المتعددة والمترابطة منطقيا، الموزعة عبر شبكات الحاسوب.

أما نظام إدارة قواعد البيانات الموزعة Distributed Database Management System (DDBMS) فهو:

حزمة الأنظمة البرمجية التي تدير قواعد البيانات الموزعة، وتجعل التوزيع شفافا للمستخدم transparent to the user. وهذا المواضيع سوف تغطي الأسس النظرية لتنفيذ الـ DDBMS's.

أشياء ليست من قواعد البيانات الموزعة:

أي مجموعة موزعة من الملفات...…a distributed collection of files.لا تعتبر قواعد بيانات موزعة، لأنه يجب ان يكون هناك ترابط منطقي بين بياناتها، فهي تحتاج إلى الكثير من التركيب للوصول إليها ودمجها.

ورغم أن ملفات الـ XML ليست ملفات مشوشة ولا غامضة، إلا نسبة الترابط المنطقي فيها غير كافية، حيث تخزن في ملفات متفرقة، كما بنيتها شبه تركيبية semi-structured، بمعنى أنها غير تركيبية تماما مثل قواعد البيانات العلائقية مثلا.

ولهذا فهناك تصور لجعلها اكثر تركيبية وعمل لغة تسمى لغة الاستعلام في الـ XML (xmlql)، وبمجرد تطورها فيمكن أن تكون اكثر تركيبية وقابلة لتحويلها إلى نظم قواعد بيانات موزعة.

أهمية التوزيع الفيزيائي/المادي Physical Distribution

من المهم التركيز على مسألة التوزيع الفيزيائي للبيانات الموزعة منطقيا، حيث أنها قد تكون موزعة في نظم مختلفة different systems، وإذا كانت لدينا قاعدتي بيانات في نفس النظام وكانتا تداران بواسطة نفس نظام إدارة قاعدة البيانات (تجانس)، فيمكن أن تكونا قاعدة بيانات وحيدة single database.

أما لو كان لدينا قاعدتي بيانات في نفس النظام، وكانتا تداران بنظامي إدارة مختلفين (تغاير)، فلا يمكن عندئذ دمجهما في قاعدة بيانات وحيدة، ولكن هذا يضع أمامنا مجموعة من الإشكالات كقضايا الشبكات، وكمون البيانات Latency، وقضايا التغاير heterogeneity (سنأتي لها لاحقا)، وغيرها...الخ.

نظام إدارة قواعد البيانات الموزعة DDBMS ليس نظام متعدد المعالجة multiprocessing system

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

عندما تكون البيانات في الذاكرة المخبأة cache لنظام متعدد المعالجات، تكون لدينا ميزة الوصول السريع Fast access، ولكن هذا سيكون لها تكلفة أكبر Expensive، بسبب ارتفاع ثمن تكنولوجيا التخزين الرئيسي، مما يؤدي إلى مساحات تخزين محدودة، وضرورة استخدام تقنيات معينة في إدارة الذاكرة والمعالج مثل حذف بيانات بعض وحدات الذاكرة، واستخدام خوارزمية LRU least recently used، وغيرها.

أما عندما تكون البيانات في أقراص التخزين Disks، فالوصول على العكس يكون بطيئا Slow access، ولكن تكلفة هذا النوع من التخزين الثانوي يكون رخيصا Cheap، ولكننا نملك مساحات كبيرة منه.

لدينا إذا في حالة المعالجات المتعددة خيارات ثلاثة:

1. مشاركة الذاكرة Shared Memory (Cache)

2. مشاركة القرص فقط Shared Disk (Secondary Memory)

3. عدم مشاركة أي شيء Shared Nothing

مشاركة الذاكرة Shared Memory (Cache):

كما في الشكل أدناه، تكون لدينا مشاركة في الذاكرتين الأساسية والثانوية، وهذا يعني كفاءة المعالجة عندما تستخدم المعالجات نفس البيانات، ولكن ندخل (عنق الزجاجة Bottleneck)، في حالة كان كل معالج يتطلب بياناته فريدة كل مرة، وهذا يؤدي إلى كثرة التبديل في مواقع الذاكرة much swapping.


مشاركة القرص فقط Shared Disk (Secondary Memory)

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


عدم المشاركة Shared Nothing:

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

ولكن عدم الفاعلية يظهر عندما يتجه المعالج إلى استخدام البيانات العامة و/أو البيانات الموزعة common data and/or distributed data.



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


إذا، ما هو شكل قواعد البيانات الموزعة حسب التعريف السابق

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

لدينا هنا قواعد بيانات مستقلة (ذاتيا)، في نقاط/مواقع موزعة.


قضايا الشفافية Transparency Issues
نعرف الشفافية بأنها عدم تأثير توزيع قواعد البيانات على وظائف المستخدم التقليدية، بحيث يعمل المستخدم على قواعد البيانات الموزعة، دون أن يشعر بمشقة كون قواعد البيانات موزعة، وهذا يجعلنا ندرس الشفافية وفق مجموعة قضايا هي:
شفافية توزيع البيانات Distribution of data وتكرارها Replication of data
شفافية استقلالية البيانات Data independence
شفافية الشبكة Network
شفافية التقسيم Fragmentation

إدارة الشفافية لتوزيع وتكرار البيانات
Transparent Management of Distributed and Replicated Data
على افتراض كان لدينا الجداول التالية لقاعدة بيانات ما:
CUST(cust_no, cust_name, cust_address)
PART(part_no, part_name, manufacturer, cost)
ORDER(cust_no, part_no, quantity)
MFG(manufacturer, state)CUSTORDERPARTMFG
وكانت العلاقة بينها على الشكل التالي:

فإن المستخدم حين يستعلم عن بيانات معينة، فهو يكتب كود الـ SQL التالي دون يكون لديه أي شك في صحة هذا الإستعلام، نجاح هذا الإستعلام يعني نجاح إدارة الشفافية رغم توزيع قواعد البيانات، كما أوضحنا سابقا.
SELECT cust_name, part_name, quantity FROM CUST, PART, ORDER, MFG
WHERE CUST.cust_no= ORDER.cust_no AND ORDER.part_no = PART.part_no AND PART.manufacturer = MFG.manufacturer AND
MFG.state = 'MD'
دون أن يكون لعمليات المستخدم علاقة بالتوزيع الفعلي التالي لقواعد البيانات:

استقلالية البيانات Data Independence
يتحتم علينا عند توزيع قواعد البيانات أن نمنع تطبيقات المستخدم user applications من أن تغير البيانات بما يتعارض مع استقلالية البيانات المنطقية والفيزيائية.
الاستقلالية المنطقية Logical independence:
وتتمثل بمنع التغيير فالمخطط المنطقي (كإضافة عمود مثلا)، و منع تغيير آلية التوزيع المصممة مسبقا.
الاستقلالية الفيزيائية Physical independence:
أما هذه فتتمثل بمنع التغيير على المخطط الفيزيائي لقاعدة البيانات، وذلك بإخفاء تفاصيل معينة عن بنية تخزين البيانات، وكذلك استقلالية مخطط الفهرسة، وهذا يتحتم استقلالية وسائط التخزين نفسها، وذلك لمنح مرونة في تغيير أي من مخططات الفهرسة ووسائط التخزين دون التأثير على الشفافية، ومن أجل رفع الأداء.
شفافية الشبكة Network Transparency
تحتاج الشبكة إلى أن تحجب عن المستخدمين ما أمكن، وذلك من حيث وجود أمور مهمة كالسرعة وتحميل الشبكة، من الصعب أن يضعها المستخدم في اعتباره عند التعامل مع قواعد البيانات، وكذلك مخطط الشبكة حيث أن له تأثيرا واضحا على إستراتيجية الاستعلام.
أما من وجهة نظر الخدمات Services perspective التي تقدمها الشبكة، فلا حاجة لمعرفة مواقع هذه الخدمات مادامت تؤدي عملها جيدا، كما أن الوصول إلى الخدمات يجب أن يكون موحدا لمن لديهم صلاحية الوصول إليها.
أما من وجهة نظر نظام إدارة البيانات DBMS perspective، فمن المهم عدم ضرورة معرفة موقع البيانات التي يتعامل معها المستخدم، واستقلالية الموقع يعتمد على شفافية التسمية Naming transparency بحيث يطلق المسمى على مواقع مختلفة باعتبار البنية المنطقية لقواعد البيانات لا الفيزيائية.
شفافية التكرار Replication Transparency
يحصل تكرار (وليس ازدواج) مسيطر عليه للبيانات من أجل:
الاستفادة من المرجعية المحلية لبعض البيانات Locality of reference، وهي سمة مستمرة لقواعد البيانات الموزعة، وكذلك من أجل الموثوقية Reliability في البيانات، وايضا من أجل الاحتفاظ بنسخ احتياطية Backup للبيانات.
هل يجب أن يكون التطبيق شفافا؟
يجب بالطبع أن تكون هناك شفافية للتطبيق من جهة المستخدم، أما من جهة النظام ككل، فهناك ضرورة بالنسبة لإدارة المعاملات transaction management أن تكون أبسط عندما يتعامل معها المستخدم، ولكن هذا يؤثر على مرونة الاستخدام لأنه يقلل من استقلالية البيانات، حيث يقوم المستخدم بالتحكم بعدد نسخ البيانات، وكذلك بالتحكم بمواقع البيانات المكررة، وهذا يتعارض مع استقلالية البيانات، كما أسلفنا.
شفافية التقسيم Fragmentation Transparency
ما يحصل لقواعد البيانات هو توزيع، أما ما يحصل للجداول نفسها في قاعدة البيانات الموزعة، فنسميه بالتقسيم، حيث تقسم وتوزع على قواعد بيانات مختلفة من أجل رفع كفاءة الاستعلام، وهناك ثلاثة أنواع من التقسيم:
التقسيم الأفقي Horizontal
التقسيم العمودي Vertical
التقسيم الهجين بين العمودي والأفقي Hybrid of horizontal and vertical
ما يحدث في الغالب هو التقسيم الهجين، ولكننا سنأخذ كل واحد على حده حتى نفهم التقسيم الهجين جيدا، وذلك عند حديثنا عن تصميم قواعد البيانات الموزعة.

من الذي يجب ان يقدم الشفافية Who Should Provide Transparency؟
من الواضح وجود تعارض بين سهولة الاستخدام وتعقيد التصميم ، فمن ناحية لغة البرمجة تكون هناك مسئولية للشفافية متعلقة بالمترجم المستخدم، حيث أنه لا يمكن فرض شروط الشفافية في المستوى الأدنى.
أما من جهة نظام التشغيل Operating System فمشغلات الأقراص تقدم بعض مستويات الشفافية كخدمات للنظام، وأما من جهة نظام إدارة قاعدة البيانات DBMS فهو يقدم طبقة ربط بين المستخدم/التطبيق ونظام التشغيل، ولكن هذا غير كاف في البيئة الموزعة، ومع هذا فسنكتفي في هذا المقرر بالتركيز على الفوائد التي يقدمها نظام التشغيل لنظام إدارة قواعد البيانات الموزعة DDBMS.
الموثوقية أو المعولية Reliability
تتلخص المعولية في أربع مواضيع أساسية هي:
المعولية في توزيع المعاملات Distributed transactions
المعولية في تجانس البيانات Consistency
المعولية في تطور الأداء Performance improvements
المعولية في مواجهة التناقضات Complications

المعولية في توزيع المعاملات
Reliability Through Distributed Transactions
تهتم إدارة المعاملات في قاعدة البيانات بضمان أن مجموعة من العمليات البسيطة فيها تنفذ بصورة متتامة أو ترفض كلها، وذلك وفق شروط أو خصائص ACID properties وهي:

Atomicity –all or nothing
الجوهرية ـ إما الجميع وإما لا شيء.
Consistency –effects of a transaction must be repeatable (consistent)
التجانسية ـ يجب أن يصلح تكرار تأثير المعاملة الواحدة على كل الأطرف المتعلقة.
Isolation –transaction operates as if it is the only process interacting with the databases
العزل ـ تعمل المعاملة كأنها وحده التي تتفاعل مع قاعدة البيانات في نفس الوقت.
Durability –effects of transaction last after system crashes
المداومة ـ يجب بقاء تأثير المعاملة حتى بعد خراب النظام واستعادته.
والتكرار يكون في مكونات محددة ومعروفة مسبقا Replicated components، بحيث نضمن أن نقطة وحيدة فاشلة لا تجعل النظام كاملا بصورة غير متاحة للاستخدام، فقط تتأثر عندئذ بعض البيانات، مع ضرورة وصول المستخدم إلى البيانات المتاحة.
المعاملات تضمن التجانسية Transactions Ensure Consistency
يجب ضمان التجانس منذ البدء وحتى نهاية العمليات المختلفة لقاعدة البيانات، وهذا يتضمن العمليات المتزامنة (شفافية التزامن concurrency transparency):
حيث يقوم مجموعة من المستخدمين بتحديث نفس قيم البيانات في نفس الوقت، فيجب أن يضمن لنا مدير المعاملات ان تتصرف التطبيقات وكأن لها وصول حصري إلى نظام قواعد البيانات الموزع.
كما يضمن أن حدوث فشل معين في منتصف العملية، أن يتم تنفيذ كل المعاملة أو عدم أنجاز شيء، ومثال ذلك المحافظة على نقل حسابات الشيكات التجارية.
تجانسية المعاملة Transaction Consistency:
تتطلب تنفيذ ما يسمى ببروتوكولات التحكم بالتزامن الموزع distributed concurrency control و بروتكولات معولية التوزيع distributed reliability protocols.
النظم التجارية تقدم دجات متخلفة من الدعم لتجانسية المعاملات، مثلا:
نظام الـ Oracle يدعم المعاملات الموزعة distributed transactions، في حين يدعم نظام الـ Sybase معاملات موزعة بدائية للمستخدمين، وهكذا.....
الأداء المتحسن Improved Performance
المرجعية المحلية Locality of reference:
يتم استخدام خدمات الـ I/O والمعالجات المحلية من أجل المرجعية المحلية، وذلك من أجل تقليل التأخير الحاصل لمرور الوصول البعيد عبر الشبكة، وبخصوص تقليل ضياع الوقت للبحث عن المحتوى وتقليل الاتصال نستخدم التقسيم للجداول، وتساعد المرجعية المحلية على تحقيق قواعد البيانات الموزعة لدرجة عظمى من المنفعة من التوزيع.
أهمية التوازي Inherent parallelism:
مجموعة متعددة من الاستعلامات تنفذ بالتوازي في أجهزة مختلفة، كما أن أجزاء من نفس الاستعلام يمكن أن ينفذ هو الآخر بشكل متوازي في أجهزة مختلفة.
مواضيع الدراسة في قواعد البيانات الموزعة
تصميم قواعد البيانات الموزعة Distributed Database Design
معالجة الاستعلامات الموزعة Distributed Query Processing
إدارة الدليل الموزع Distributed Directory Management
التحكم بالتزامن الموزع Distributed Concurrency Control
إدارة الورطة الموزعة Distributed Deadlock Management
المعولية في نظم إدارة قواعد البيانات الموزعة Reliability of Distributed DBMS
دعم نظام التشغيل Operating System Support
قواعد البيانات غير المتجانسة Heterogeneous Databases

هناك 15 تعليقًا:

  1. ماهي مخاطر النظم الموزعه

    ردحذف
  2. صعبة ما اقدرتش نستوعبها

    ردحذف
  3. ارجو المساعدة مطلوب بحث ......بعنوان تقنيات التحكم في التزامن

    ردحذف
  4. ارجو المساعدة مطلوب مني بحث حول دراسة لتقييم اداء النظم الموزعة

    ردحذف
  5. شكر وتقدير لقلمك المبدع

    ردحذف
  6. مشكورين هذا ماكنت ابحث عنه الله يعطيكم العافيه ويزيدكم بسطه في العلم

    ردحذف