Layered design in software engineering

7-DBMS: Disk Manager

-فى المقالات السابقة وضحت مفهوم الـ data model وان هو عبارة عن abstract model بمعنى انه عبارة عن شكل وهمى من خلال بنعرف ال Structure الخاص بال database.

-بعد كده كتبت عن ال Relational data model و مقدمه بسيطه عن ال SQL.

- فى المقالات القادمة هبدأ اكتب عن ال Components الرئيسيه فى الـ DBMS  وازى  بيخزن الداتا وينظمها على ال storage وازاى يقدر يوصل ليها وهكذا.

الـ Comments الرئيسيه اللى موجوده فى معظم الـDBMS 

1-Query Planning

2-Operator Execution Engine

3-Access Methods

4-Buffer Pool Manager

5-Disk Manager




1-Disk Manager

-الـ DBMS يفترض ان ال storage التى نستخدمها  لحفظ ال database عبارة عن  non-volatile disk .
-وال DBMS Comments هي المسؤولة عن نقل البيانات بين  الـnon-volatile disk والـ volatile storage.

non-volatile storage

-عبارة عن storage بنستخدمها لحفظ البيانات البيانات وال storage بتفضل محتفظه بالداتا.
- مثل ال Hard Disk,ال Hard Disk يحتفظ بالبيانات اللى موجوده عليه حتى لو عملنا restart لل machine.

volatile storage

-عبارة عن storage   يتم استخدامها لحفظ  البيانات بس  بشكل مؤقت.
- مثل ال RAM ,البيانات الموجودة فى Ram   بيتم حذفها تلقائياً  لو عملنا restart لل machine.
 
-ال volatile storage  نقدر من خلالها نوصل  للبيانات أسرع  بس  بتبقى المساحه الخاصه بيها اقل من ال non-volatile storage .



-علشان كدا الـ DBMS يفترض ان ال storage اللى هيخزن عليها ال database هى non-volatile storage مثل ال HDD و SSD.

-طبعاً اثناء عمل process ل data بيتم نقل او نقدر نقول الـ DBMS بياخد Copy من الداتا اللى عاوزها وينقلها لل RAM علشان يسرع ال operation وبعد انتهاء  ال operation بيتم تعديل ال data اللى موجود على ال Hard لو حصل ليها تغير.

-فى الوقت الحالى بقى موجود Voltage Storage بحجم كبير  او نقدر نقول الحجم اللى نقدر نستخدمها علشان نحفظ فيه ال Database ,بالتالى بقى موجود main memory database system أو  in-memory database,بس بالتأكيد بيتم حفظ data بطريقه معينه او نقدر نقول recovery data على على non-volatile storage بحيث لو حصل مشكله وكل الداتا اللى موجوده فى ال Ram تم فقدها ,يتم استرجاع البيانات اللى تم  فقدها.


-علشان كدا فى تحدي  مهم بيقابل الـ DBMS وهو ازاى ينظم عملية نقل البيانات بين ال ram  وال Hard Disk  وخصوصاً أن عمليات القراءة والكتابة  الخاصة بال Hard Disk  بتاخد وقت وبتأثر على الأداء وال database ممكن يكون حجمها اكبر من حجم الـ ram المتاحة. 


DBMS vs OS

-دلوقتي فهمنا أن فى operation مهمة بتتعمل وهى عملية نقل البيانات بين ال Ram وال Hard Disk

1-Let OS do the dirty work for us 


-فى DBMS بيكون ال operation system هو المسؤول بس عن عملية نقل الملفات بين ال RAM وال Hard Disk.
-مثل: elasticSearch و LevelDB

-بس هذه الطريقة ممكن نقول ليها بعض العيوب لأن الـ OS بينقل المقات على حسب  اللى هو شايفه صح , هي مجرد مهمة من المهمات الكتيره اللى بيعملها ال OS.

-الـ DBMS لما يعمل ال operation بنفسه هيضيف ليها تحسينات ,لأنه هو الوحيد اللى عارف ويقدر يقرر إذا كان محتاج يحذف الـ data من ال ram  ولا لا.
-ممكن الـ DBMS بناءً على تحليل ال Query يعمل prefetching  للداتا اللى هو عاوزها ودا هيوفر وقت فى تنفيذ ال Query..

2-Partial Usage

-فى DBMS بتستعين بال OS فى ال operation  , بس فى نفس الوقت بيكون ليها implementation خاصه بيها و بتعمل control فى حالات معينة.

-مثل  Sqlite و MongoDB

3-DBMS do it

 
-فى DBMS بتبقى مسؤولة مسؤليه كامله عن ال  operation ولا يتم الأستعانه بال OS.
-مثل :SQL Server ,Oracle Db







تعليقات