Layered design in software engineering

2-DBMS: The Big Picture -Introduction

 ما هو الـ Database Management System?

فى المقالة السابقه فهمنا الـ Database و استخدمنا ال csv علشان نحفظ الـ database  واتكلمنا  ان فى برنامج من خلاله يتم التعامل مع الـ database  والتحديات التى سوف نقابلها لو قررنا نطور البرنامج بنفسنا .
البرنامج أو الـ Software اللى من خلاله يتم التعامل مع الـ Database  هو : Database Management System.


ممكن نلخص المهام الرئيسيه لـ DBMS في التالي:

"DBMS is designed to allow the definition, creation, querying, update, and administration of databases"

الملخص هو أن الـ DBMS  عبارة عن Software من خلاله يتم التعامل مع الـ database والأستعلام على البيانات المحفوظة في الـ  database وممكن نحدث البيانات او نعملها delete .

المرحلة الأولى لـ DBMS

-فى هذه المرحلة نقدر نقول ان مكنش فى تعريف محدد  لـ DBMS  مثل وقتنا الحالى, بمعنى ان لو فى شركة بطور برنامج .
-جزء من تطوير البرنامج ان   المبرمجين يطوروا الكود الخاص بالتعامل مع ال Database.
-بمعنى تانى نقدر نقول ان مكنش فى حاجه اسمها DBMS بس فى كود المبرمجين بيكتبوه علشان يتم التعامل مع ال database.
-يعنى نقدر نقول ان البرنامج عبارة عن = الكود الخاص بالبرنامج + الكود الخاص بالتعامل مع الـ Database.

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


Ted Code 

 -Ted قالك احنا هنفصل تماماً بين الـ البرنامج الذي يتم تطويره وبين ال code الخاص بال database و هيبقى فى برنامج DBMS مسؤول عن التعامل مع الـ database و منفصل تماماً عن اي برنامج يتم تطويره وده هنستفاد منه :
 
1-أن دلوقتى تم الفصل بين البرنامج  الذي يتم تطويره وبين الكود الخاص  بال Database.
2-ممكن نستخدم الـ database مع اى تطبيق تانى بسهوله.
3-عملية تطوير البرامج هتاخد وقت أقل لأن بقى عندنا برنامج خاص بال database ممكن نستخدمه على طول.


ازاى بيتم التواصل بين الـ DBMS والتطبيقات ؟

 -Ted قال ان احنا هيبقى عندنا DBMS  مسؤول عن الـ database بس , تمام كلام حلو وجميل ,بس ازاى انا كتطبيق هقدر اوصل للمعلومات اللى موجوده فى ال database ازاى اقدر احدثها وهكذا.
-Ted قالك ان لغة التواصل بين اى تطبيق وبين الـ  DBMS هتبقى عن طريق ال Data Model.
انت كمبرمج أو تطبيق مبقاش يهمك بقى ازى ال data متخزنه فعلياً على ال storage , ولا ايه ال format اللي محفوظه بيه البيانات,ولا ايه الخطوات اللى لازم تتم عشان  تستعلم عن البيانات أو تحفظ بيانات وهكذا.

ما هو الـ Data Model? 

- قلت ان الـ data model هو لغة التواصل بين اى تطبيق وال DBMS.
-الـ  data model من خلاله ال DBMS بيعرفنا الـ Structure المحفوظ بيه البيانات , بس فعلياً الـبيانات مش محفوظة كدا , تقدر تعتبره format وهمى عن ازاى البيانات  محفوظة ومرتبه فى ال database.

"الـ DBMS هو المسؤول عن حفظ الداتا ب STRUCTURE معين على ال PHYSICAL STORAGE"

"انا كمستخدم لـ DBMS  بتعامل مع ال Data Model"

انواع ال Data Model?

1-Relational
معظم الـ DBMS بستخدم ال Relational Data model

2-Key/Value
3-Graph
4-Document
5-Column-family

يتم استخدام ال models مع ال NoSQL DBMS

6-Column-family
بيتم استخدامه مع ال Machine  learning

7-Hierarchical 
8-Network
مفيش استخدام ليهم فعلياً دلوقتى مع DBMS












تعليقات