x32x01
أدارة أكتب كود
- بواسطة x32x01 ||
ما لا يسع المبرمج جهله عن Database Scaling بطريقة سهلة ومبسطة
لو البيزنس بتاعك بيكبر وعدد المستخدمين بيزيد، الـ setup بتاع سيرفر واحد مش هيقدر يشيل الضغط. عشان كده لازم نتعلم إزاي نوسع قاعدة البيانات (Database Scaling) ونوزع الضغط بشكل صحيح.
1. Relational Databases (RDBMS):
- دي قواعد بيانات منظمة في شكل جداول (Tables) مكونة من صفوف وأعمدة.
- أمثلة: MySQL, PostgreSQL, Oracle Database.
2. Non-Relational Databases (NoSQL):
- دي قواعد مرنة وسريعة للتعامل مع بيانات ضخمة وغير منظمة.
- أمثلة: MongoDB (Document Stores), Redis (Key-Value Stores), Cassandra (Wide-Column Stores), Neo4j (Graph Databases).
- Example Use Case: لو عندك تطبيق e-commerce ممكن تستخدمها لتخزين بيانات العملاء والطلبات في جداول منفصلة.
مميزاتها:
1. تقدر تعمل عمليات Join معقدة على أكتر من جدول.
2. بتوفر Data Consistency عالية وبتضمن سلامة البيانات.
- مناسبة جدًا للبيانات الديناميكية أو غير المنظمة.
أنواعها:
1. Document Stores (e.g., MongoDB):
- البيانات بتتخزن كـ JSON-like Documents.
- Example: لو بتخزن User Profiles، كل Document ممكن يكون ليه Attributes مختلفة.
2. Key-Value Stores (e.g., Redis):
- البيانات بتتخزن في شكل Key-Value Pairs.
- Example: تخزين الجلسات (Sessions)، حيث الـ Key هو Session ID والـ Value هو بيانات المستخدم.
3. Wide-Column Stores (e.g., Cassandra):
- البيانات بتتخزن في Tables، Rows وColumns ديناميكية.
- Example: تطبيق بيقيس أداء سيرفرات Cloud Infrastructure بمرور الوقت.
4. Graph Databases (e.g., Neo4j):
- بتركز على العلاقات بين البيانات. بتخزنها كـ Nodes (Entities) وEdges (Relationships).
- Example: تتبع الطلبات في e-commerce حيث Nodes تمثل العملاء والطلبات، وEdges تمثل علاقاتهم.
مميزاتها:
1. بتتعامل مع بيانات ضخمة ومتغيرة.
2. مصممة للتوسيع الأفقي (Horizontal Scalability).
1. لو البيانات منظمة وليها علاقات واضحة (زي العملاء والطلبات).
2. لو الـ Data Consistency مهمة جدًا (زي البنوك).
- Non-Relational Databases:
1. لو التطبيق محتاج استجابات سريعة ومرونة في التعامل مع البيانات.
2. لو عندك بيانات ضخمة وغير منظمة (زي منصات السوشيال ميديا).
2. Relational Databases مناسبة للبيانات المنظمة اللي فيها علاقات واضحة.
3. Non-Relational Databases مناسبة للبيانات المرنة أو الضخمة اللي محتاجة استجابات سريعة.
لو البيزنس بتاعك بيكبر وعدد المستخدمين بيزيد، الـ setup بتاع سيرفر واحد مش هيقدر يشيل الضغط. عشان كده لازم نتعلم إزاي نوسع قاعدة البيانات (Database Scaling) ونوزع الضغط بشكل صحيح.
أول خطوة: فصل الـ Web Tier عن الـ Data Tier
في الأول بنفصل الـ Web Tier (المسؤول عن الـ Web والـ Mobile Traffic) عن الـ Data Tier (المسؤول عن إدارة database). الفكرة هنا إنك تقدر توسّع كل جزء بشكل مستقل بناءً على احتياجاته.اختيار نوع الـ Database المناسب
ده قرار مصيري لإنه بيأثر على تخزين البيانات، استدعائها، وكمان طريقة التوسيع. بنقسمهم لنوعين رئيسيين:1. Relational Databases (RDBMS):
- دي قواعد بيانات منظمة في شكل جداول (Tables) مكونة من صفوف وأعمدة.
- أمثلة: MySQL, PostgreSQL, Oracle Database.
2. Non-Relational Databases (NoSQL):
- دي قواعد مرنة وسريعة للتعامل مع بيانات ضخمة وغير منظمة.
- أمثلة: MongoDB (Document Stores), Redis (Key-Value Stores), Cassandra (Wide-Column Stores), Neo4j (Graph Databases).
1. Relational Databases
- Structure: البيانات بتتخزن في شكل جداول شبه ملفات Excel.- Example Use Case: لو عندك تطبيق e-commerce ممكن تستخدمها لتخزين بيانات العملاء والطلبات في جداول منفصلة.
مميزاتها:
1. تقدر تعمل عمليات Join معقدة على أكتر من جدول.
2. بتوفر Data Consistency عالية وبتضمن سلامة البيانات.
2. Non-Relational Databases
- Flexible Schema: مش بتحتاج يكون عندك Schema ثابت للبيانات.- مناسبة جدًا للبيانات الديناميكية أو غير المنظمة.
أنواعها:
1. Document Stores (e.g., MongoDB):
- البيانات بتتخزن كـ JSON-like Documents.
- Example: لو بتخزن User Profiles، كل Document ممكن يكون ليه Attributes مختلفة.
2. Key-Value Stores (e.g., Redis):
- البيانات بتتخزن في شكل Key-Value Pairs.
- Example: تخزين الجلسات (Sessions)، حيث الـ Key هو Session ID والـ Value هو بيانات المستخدم.
3. Wide-Column Stores (e.g., Cassandra):
- البيانات بتتخزن في Tables، Rows وColumns ديناميكية.
- Example: تطبيق بيقيس أداء سيرفرات Cloud Infrastructure بمرور الوقت.
4. Graph Databases (e.g., Neo4j):
- بتركز على العلاقات بين البيانات. بتخزنها كـ Nodes (Entities) وEdges (Relationships).
- Example: تتبع الطلبات في e-commerce حيث Nodes تمثل العملاء والطلبات، وEdges تمثل علاقاتهم.
مميزاتها:
1. بتتعامل مع بيانات ضخمة ومتغيرة.
2. مصممة للتوسيع الأفقي (Horizontal Scalability).
إمتى تستخدم Relational أو Non-Relational Databases؟
- Relational Databases:1. لو البيانات منظمة وليها علاقات واضحة (زي العملاء والطلبات).
2. لو الـ Data Consistency مهمة جدًا (زي البنوك).
- Non-Relational Databases:
1. لو التطبيق محتاج استجابات سريعة ومرونة في التعامل مع البيانات.
2. لو عندك بيانات ضخمة وغير منظمة (زي منصات السوشيال ميديا).
النقاط الأساسية:
1. فصل الـ Web Tier عن الـ Data Tier بيخليك توسّع كل جزء بشكل مستقل.2. Relational Databases مناسبة للبيانات المنظمة اللي فيها علاقات واضحة.
3. Non-Relational Databases مناسبة للبيانات المرنة أو الضخمة اللي محتاجة استجابات سريعة.