صباح الخير
ايش الفرق بين قواعد البيانات SQL و NoSQL
في هذي التغريدة راح اذكر الفروقات الاساسية بينهم وايش عيوب ومزايا كل وحدة منهم وايش الافضل لمشروعنا
@PrograminLovers
#أكادمية_ترميز
#برمجة
#حزب_المبرمجين
ايش الفرق بين قواعد البيانات SQL و NoSQL
في هذي التغريدة راح اذكر الفروقات الاساسية بينهم وايش عيوب ومزايا كل وحدة منهم وايش الافضل لمشروعنا
@PrograminLovers
#أكادمية_ترميز
#برمجة
#حزب_المبرمجين
اولا SQL
هي عبارة عن Structured Query Language
بمعنى أنها تستخدم لغة موحدة لها معايير محددة للتعامل مع البيانات
كمثال بسيط
SELECT * FROM customers
هذي اللغه عادة تكون موحدة بين جميع أنظمة قواعد البيانات
والتي تسمى
Relational Database Management Systems (RDMS)
هي عبارة عن Structured Query Language
بمعنى أنها تستخدم لغة موحدة لها معايير محددة للتعامل مع البيانات
كمثال بسيط
SELECT * FROM customers
هذي اللغه عادة تكون موحدة بين جميع أنظمة قواعد البيانات
والتي تسمى
Relational Database Management Systems (RDMS)
* أمثلة للأنظمة المشهورة
- MySQL (الأشهر بينهم)
- Postgress
- SQL Server
- Oracle
* نظرة عامة
الSQL تتعامل مع البيانات على أساس جداول (Tables) بمعنى ان البيانات تتخزن على شكل أعمدة (Columns) وصفوف (Rows)
الأعمدة تمثل نوع البيانات
الاسم، الرقم، كلمة المرور...الخ
- MySQL (الأشهر بينهم)
- Postgress
- SQL Server
- Oracle
* نظرة عامة
الSQL تتعامل مع البيانات على أساس جداول (Tables) بمعنى ان البيانات تتخزن على شكل أعمدة (Columns) وصفوف (Rows)
الأعمدة تمثل نوع البيانات
الاسم، الرقم، كلمة المرور...الخ
الصفوف تمثل الداتا الفعلية
محمد، 10، 1234...الخ
* أهم مميزات الSQL
1- القيود (Constraints) بمعنى أن الSQL تضيف معايير وقيود على الColumns
مثال
انا عندي عمود اسمه رقم الجوال (mobile_number)، ووضعت شرط لهذا العمود انه ما يقبل الا أرقام
محمد، 10، 1234...الخ
* أهم مميزات الSQL
1- القيود (Constraints) بمعنى أن الSQL تضيف معايير وقيود على الColumns
مثال
انا عندي عمود اسمه رقم الجوال (mobile_number)، ووضعت شرط لهذا العمود انه ما يقبل الا أرقام
اذا لمن أحاول ادخل قيمة من نوع text، قاعدة البيانات راح ترفض هذا الشيء والعملية مارح تتم
اذا هذي ميزة جميلة جدا في حالة انك تحب تخلي قيود معينة لكل الأعمدة الي عندك
2- العلاقات بين الجداول (Relational)
والمعنى ان قواد البيانات SQL تفيد في حالة عندك علاقات بين الجداول
اذا هذي ميزة جميلة جدا في حالة انك تحب تخلي قيود معينة لكل الأعمدة الي عندك
2- العلاقات بين الجداول (Relational)
والمعنى ان قواد البيانات SQL تفيد في حالة عندك علاقات بين الجداول
كمثال بسيط
انا عندي جدول للطلبات (Orders) وكل طلب احتاج فيه المستخدم، فأنا في النهاية لازم يكون عندي جدول للمستخدمين اسمه (Users)
وعن طريق جدول الطلبات اقدر اوصل لكل المستخدمين عن طريق خاصية الPrimary Key والForeign Key
3- سريعة جدا في عملية الUpdate and Delete
مثال
انا عندي جدول للطلبات (Orders) وكل طلب احتاج فيه المستخدم، فأنا في النهاية لازم يكون عندي جدول للمستخدمين اسمه (Users)
وعن طريق جدول الطلبات اقدر اوصل لكل المستخدمين عن طريق خاصية الPrimary Key والForeign Key
3- سريعة جدا في عملية الUpdate and Delete
مثال
انا عندي جدول الطلبات
وكما ذكرنا سابقا ان عن طريق جدول الطلبات أقدر اوصل لكل المستخدمين، لأن في جدول الطلبات راح نخزن الUser_Id فقط. فإذا حدث المستخدم مثلا رقم جواله خلاص راح تتم العملية في جدول المستخدمين فقط
وكما ذكرنا سابقا ان عن طريق جدول الطلبات أقدر اوصل لكل المستخدمين، لأن في جدول الطلبات راح نخزن الUser_Id فقط. فإذا حدث المستخدم مثلا رقم جواله خلاص راح تتم العملية في جدول المستخدمين فقط
أما في حالة الNoSQL، ف راح يتم تخزين رقم الجوال في جدول المستخدمين وأيضا في جدول الطلبات. ف لمن نحدث رقم الجوال، راح نحدثه في جدول المستخدمين وأيضا في الطلبات وهذي عملية طويلة جدا
* أهم عيوب الSQL
* أهم عيوب الSQL
1- بطيئة في عملية الReading
لأن عمليات القراءة تحتاج إلى Query والQuery تحتاج إلى لغة محددة
ولأن هناك علاقات بين الجداول فالعملية راح تكون أطول من NoSQL
2- تستهلك موارد أكثر
3- تستعمل الـتوسع العمودي (Vertical Scaling)
لأن عمليات القراءة تحتاج إلى Query والQuery تحتاج إلى لغة محددة
ولأن هناك علاقات بين الجداول فالعملية راح تكون أطول من NoSQL
2- تستهلك موارد أكثر
3- تستعمل الـتوسع العمودي (Vertical Scaling)
وهنا لازم نشرح مفهوم الVertical Scaling والHorizontal Scaling بشكل مختصر
الVertical Scaling أو التوسع العمودي، هو أنو لمن تكبر قاعدة البيانات ونحتاج موارد أكبر
هنا لازم نزيد في موارد السيرفر نفسه، بمعنى نزيد في حجم الرام، الذاكرة، المعالج..الخ
الVertical Scaling أو التوسع العمودي، هو أنو لمن تكبر قاعدة البيانات ونحتاج موارد أكبر
هنا لازم نزيد في موارد السيرفر نفسه، بمعنى نزيد في حجم الرام، الذاكرة، المعالج..الخ
أما التوسع الأفقي، هو الزيادة في عدد السيرفرات
طبعا التوسع العمودي مكلف اكثر وله حد معين ما تقدر بعده تزيد بعكس التوسع الافقي.
ثانيا NoSQL
NoSQL is a non-relational database that stores and access the data using key-value pairs
طبعا التوسع العمودي مكلف اكثر وله حد معين ما تقدر بعده تزيد بعكس التوسع الافقي.
ثانيا NoSQL
NoSQL is a non-relational database that stores and access the data using key-value pairs
بمعنى أنها قاعدة بيانات لا تستعمل العلاقات مثل (SQL) ويتم تخزين البيانات فيها عن طريق المفتاح والقيمة
كمثال
name: mohamed
email: m@gmail.com
وهكذا
* أمثلة للأنظمة المشهورة
1- MongoDB
2- Redis
* أهم مميزاتها
1- لا وجود للقيود والمعايير
كمثال
name: mohamed
email: m@gmail.com
وهكذا
* أمثلة للأنظمة المشهورة
1- MongoDB
2- Redis
* أهم مميزاتها
1- لا وجود للقيود والمعايير
بمعنى لا يوجد قيود على القيم وتقدر تدخل أي قيمة وأي مفتاح طالما أنها على نفس صيغة الKey:value
2- سريعة جدا في عملية القراءة (وهذا سبب شهرتها)
لانها تلقائيا بتروح وتجيب القيمة عكس الSQL الي راح تكون فيها علاقات بين الجداول ولازم لغة محددة وهكذا
2- سريعة جدا في عملية القراءة (وهذا سبب شهرتها)
لانها تلقائيا بتروح وتجيب القيمة عكس الSQL الي راح تكون فيها علاقات بين الجداول ولازم لغة محددة وهكذا
3- التوسع فيها يكون بشكل أفقي عكس الSQL
ف القيم تقدر تكون مقسمة على أكثر من سيرفر ونقدر نوصل لها بكل سهولة
وهذا برضو سبب من أسباب شهرتها لان التوسع الافقي أسهل وأفضل وليس له حدود بعكس العمودي
4- تستهلك موارد أقل
* أهم عيوبها
1- فوضى وغير مرتبة (Messy)
ف القيم تقدر تكون مقسمة على أكثر من سيرفر ونقدر نوصل لها بكل سهولة
وهذا برضو سبب من أسباب شهرتها لان التوسع الافقي أسهل وأفضل وليس له حدود بعكس العمودي
4- تستهلك موارد أقل
* أهم عيوبها
1- فوضى وغير مرتبة (Messy)
بمعنى ان في تكرار عجيب في البيانات ونفس البيانات ممكن تكون مكررة في أكثر من مكان
2- بطيئة في عمليات الUpdate والDelete
3- ما عندها لغة محددة تمشي عليها
* متى نستخدم الSQL
1- عادة تستخدم لمن يكون عندنا Complex Queries وتحتاج دقة عالية جدا في البيانات
2- بطيئة في عمليات الUpdate والDelete
3- ما عندها لغة محددة تمشي عليها
* متى نستخدم الSQL
1- عادة تستخدم لمن يكون عندنا Complex Queries وتحتاج دقة عالية جدا في البيانات
2- لمن نحتاج انو يكون في قيود معينة ومعايير لكل جدول يمشي عليها
* متى نستخدم الNoSQL
1- لمن يكون المشروع كبير جدا وعملية السرعة فيه مهمة بشكل كبير
الخلاصة
يفضل عادة ان الشخص يبدأ بالSQL
وعندما يحتاج عملية التوسع (Scale) يقوم بالتحويل على الNoSQL
* متى نستخدم الNoSQL
1- لمن يكون المشروع كبير جدا وعملية السرعة فيه مهمة بشكل كبير
الخلاصة
يفضل عادة ان الشخص يبدأ بالSQL
وعندما يحتاج عملية التوسع (Scale) يقوم بالتحويل على الNoSQL
والشركات الكبيرة عندها نمط معين تمشي فيه وهو انها تستعمل النوعين
تستعمل الSQL، وعندما تحتاج عملية القراءة، تصدر البيانات للNoSQL
وفي عمليات الUpdate والDelete تكون من الSQL
أتمنى يكون الشرح مفيد وسهل
بالتوفيق
@PrograminLovers
#أكادمية_ترميز
#برمجة
#حزب_المبرمجين
تستعمل الSQL، وعندما تحتاج عملية القراءة، تصدر البيانات للNoSQL
وفي عمليات الUpdate والDelete تكون من الSQL
أتمنى يكون الشرح مفيد وسهل
بالتوفيق
@PrograminLovers
#أكادمية_ترميز
#برمجة
#حزب_المبرمجين
Loading suggestions...