شرح SQL-Server FileGroups بالعربي

قواعد-بياناتSQL-Server · تاريخ النشر 2017-02-06 · قراءة في 10 دقيقة
Blazor

في هذا المقال سيتم شرح ما هي ال FileGroups وما الحاجة اليها وكيف الاستفادة منها ولكن لن يتم التركيز على كتابة ال Syntax الخاص بانشاء ال FileGroups حيث ال Syntax يمكن ايجاده في اماكن كثيرة ولكن سيتم التركيز في هذا المقال على المفاهيم.

انواع الملفات في SQL Server

قواعد بيانات ال SQL Server يتم تخزين بياناتها في نوعين ملفات اساسيين
  • Data File
  • Log File

Primary Data File

هو الملف الذي تخزن فيه البيانات الفعلية ويكون بامتداد MDF

Transaction LOG File

وهذا الملف له عدة وظائف ولكن اشهرها انه ملف مرحلي يتم فيه تخزين البيانات مؤقتا الى ان تنتقل الى ملف ال Data File ويكون بامتداد LDF

تخيل معي انك تقوم باعداد برنامج للقيام بادخال فاتورة مبيعات وهذه الفاتورة بياناتها على جدولين في قاعدة البيانات مثلا (الفاتورة و اصناف الفاتورة) تخيل انه تم نجاح الادخال في الجدول الاول ولم ينجح في الثاني , سينتج عن ذلك وجود فواتير بدون اصناف مثلا ولحل هذه المشكلة تجد اهمية استخدام ال Transaction LOG File حيث يتم كتابة البيانات فيه, فاذا نجحت كل العمليات , يتم نقلها الى ال Data File اما اذا حدث خطأ في اي مرحلة , يتم الغاء العملية كأن لم تكن.

File Groups

الوضع الافتراضي لل SQL Server انه يوجد Data File واحد , LOG File واحد وهذان الملفان داخل FileGroup باسم Primary. فال FileGroup هي عبارة عن وعاء لملفات ال SQL Server فقد تحتوي قاعدة البيانات على اكثر من FileGroup وداخل ال FileGroup الواحدة ممكن اضافة اكثر من ملف.

كل جدول او Index داخل قاعدة البيانات يمكن تحديد ال FileGroup الخاصة به وبذلك تكون بيانات هذا الجدول او ال Index متضمنة داخل ملفات ال FileGroup.

ملفات ال FileGroups تكون بامتداد (NDF (Secondary Data File فكل قاعدة بيانات لابد ان تحتوي على ملف MDF واحد فقط وممكن على اكثر من NDF او لا يوجد.

ولكن ما هي الحاجة لوجود اكثر من FileGroup واكثر من ملف داخل ال FileGroup ؟

احتياجات خاصة بمساحة التخزين

تخيل معي ان لديك قاعدة بيانات كبيرة وتريد توزيع ملفاتها على اكثر من درايف لاغراض المساحة المتاحة , فاذا كانت قاعدة البيانات في ملف واحد لن تستطيع توزيعها في اكثر من مكان بينما اذا قمت بعمل اكثر من FileGroup وكل FileGroup تكون لها ملفاتها الخاصة تكون لديك مرونة في توزيع قاعدة البيانات على المساحة المتاحة.

احتياجات خاصة بتحسين الاداء

من اكثر التحديات التي تواجه اداء قواعد البيانات هي سرعة عمليات الIO (القراءة والكتابة في ال Hard Disk). ولتحسين سرعة القراءة والكتابة يقوم مديروا قواعد البيانات بفصل الجداول الكبيرة والتي يوجد علاقات بينها في اكثر من FileGroup ومن ثم توزيع ملفات ال FileGroup على Hard Disks مختلفة, ونتيجة لذلك يؤدي الى جعل عملية الكتابة والقراءة على ملفات قاعدة البيانات تزامنية Asynchronous الى حد ما مما يؤدي الى تحسين الاداء.

احتياجات خاصة بالنسخ الاحتياطية

تتيح ال SQL Server اجراء نسخ احتياطي لل FileGroups وتستخدم هذه الميزة في تسريع عملية النسخ الاحتياطي لقواعد البيانات العملاقة فمثلا اذا كان لديك قاعدة بيانات كبيرة تحتوي على جداول ارشيفية لبيانات قديمة فاذا قمت باخذ نسخة احتياطية لكل قاعدة البيانات تاخذ وقت طويل بينما يمكنك ان تفصل هذه الجداول في FileGroups وبالتالي تاخذ نسخة احتياطية للبيانات الحالية بدون البيانات الارشيفية مرة يوميا بصورة اسرع وتأخذ نسخة احتياطية لكامل قاعدة البيانات بما فيها البيانات الارشيفية مرة كل اسبوع مثلا.

File Groups and Log Files

يمكن اضافة اكثر من LOG File على اكثر من FileGroup ولكن الحاجة لذلك تكون محدودة فقط اذا كانت هناك مشكلة في التخزين ومطلوب الاحتفاظ بال Log file القديم.

فالحاجة الى الاحتفاظ ببيانات ال Log File تكون قليلة حيث ان هذا الملف مرحلي ولا يحتفظ ببيانات فعلية وعند اخذ نسخة احتياطية منه يتم تفريغ بياناته وبعد ذلك من الممكن عمل Shrink له لتقليل مساحته ولكن في بعض الاحيان اذا كانت قاعدة البيانات مفعل عليها بعض الخصائص مثل ال Mirroring اوخصائص اخرى لا يمكن عمل Shirink.

كما ان ملف ال Log File طبيعة الكتابة عليه تكون Sequential دائما , فاضافة اكثر من ملف على اكثر من Hard Disk مثلا لن يؤثر في سرعة الكتابة حيث انه سيتم الكتابة في الملف الاول الى ان يمتلىء ثم يتم الكتابة في الملف الثاني.

المراجع

لا تنسونا من صالح دعائكم والدعاء لوالدي بالشفاء

An error has occurred. This application may no longer respond until reloaded. Reload 🗙