0Pricing
SQL Academy · درس

استراتيجيات التقسيم: النطاق والتجزئة والدليل

قارن بين التقسيم حسب النطاق والتجزئة والدليل، واختر مفتاح تقسيم يوازن الحمل ويحافظ على استقراره

استراتيجيات التقسيم: النطاق والتجزئة والدليل درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.

ما المقصود بالتجزئة؟

تقسيم قاعدة بيانات منطقية واحدة عبر عدة خوادم فعلية، تسمى الأجزاء، يحتفظ كل منها بمجموعة فرعية من البيانات. يُلجأ إلى ذلك عندما يعجز خادم واحد عن التعامل مع حمل العمل.

التجزئة ≠ النسخ المتماثل

  • النسخ المتماثل — البيانات نفسها على عدة خوادم (للتوافر العالي وتوسيع نطاق القراءة)
  • التجزئة — بيانات مختلفة على خوادم مختلفة (لتوسيع نطاق الكتابة والسعة)

غالبًا ما تجمع بينهما: إذ تُنسخ كل قطعة متماثلًا لتحقيق التوافر العالي.

ثلاث استراتيجيات للتجزئة

  • النطاق — التجزئة حسب نطاق القيم (المعرّفات من 1 إلى 1M في الجزء A، ومن 1M إلى 2M في الجزء B)
  • التجزئة الهاشية — تجزئة مفتاح الجزء، ثم حساب باقي القسمة على N
  • الدليل — جدول منفصل يربط المفتاح بالجزء

التجزئة حسب النطاق

بسيطة وتعمل جيدًا مع السلاسل الزمنية والمعرّفات المرتبة. الخطر هو ظهور أجزاء ساخنة إذا استحوذت البيانات الحديثة على معظم حركة المرور.

-- Conceptually:
-- Shard A: user_id 1 - 1,000,000
-- Shard B: user_id 1,000,001 - 2,000,000
-- Shard C: user_id 2,000,001 - 3,000,000

التجزئة الهاشية

توفّر توزيعًا متوازنًا افتراضيًا. لكن إضافة أجزاء جديدة صعبة، إذ تؤدي إعادة التجزئة إلى نقل جميع المفاتيح:

-- shard_id = hash(user_id) % N
-- N=4: any user_id evenly distributed across 4 shards

التجزئة باستخدام الدليل

يربط جدول بحث كل مفتاح بالجزء الخاص به:

CREATE TABLE shard_routing (
  user_id BIGINT PRIMARY KEY,
  shard_id INT NOT NULL
);

-- Looking up a user costs a directory query first; cache it.

التجزئة المتسقة

تكون التجزئة باستخدام باقي القسمة هشة عند إضافة أجزاء جديدة. أما التجزئة المتسقة فتقلل عدد المفاتيح التي يلزم نقلها:

-- Each shard owns a ring segment.
-- Adding a new shard moves only ~1/N of the keys.

اختيار مفتاح الجزء

يحدد مفتاح الجزء كل شيء. ومن خصائص مفاتيح الأجزاء الجيدة أنها:

  • توزّع البيانات بالتساوي
  • تظهر في معظم الاستعلامات (لتجنب التوزيع على أجزاء متعددة)
  • غير قابلة للتغيير (أو نادرًا ما تتغير)
<p>Common picks: user_id, tenant_id, customer_id. Avoid: timestamps for write-heavy workloads (creates hot shards).</p>

مستأجر لكل جزء

في البرمجيات السحابية متعددة المستأجرين: يوضع كل مستأجر في جزء مخصص. هذا يسهل فهمه، كما يسهل عزل المستأجرين ذوي الحمل المرتفع.

تصميم قابل لإعادة التجزئة

صمّم النظام مع مراعاة إعادة التجزئة مستقبلًا:

  • استخدم أجزاء افتراضية (مثلًا: 1024 جزءًا منطقيًا مرتبطة بأجزاء فعلية)
  • اجعل نقل جزء منطقي إلى خادم فعلي آخر أمرًا سهلًا
  • تجنب كتابة شيفرة في التطبيق تفترض عددًا ثابتًا للأجزاء

الاستعلامات عبر الأجزاء

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

المعاملات عبر الأجزاء

تحتاج المعاملات الذرية عبر الأجزاء إلى الالتزام ذي المرحلتين (2PC) أو إلى أنماط saga. والنصيحة المعتادة هي تصميم النظام بحيث تبقى المعاملات ضمن جزء واحد.

مراجعة

هناك ثلاث استراتيجيات؛ اختر ما يناسب نمط حركة المرور لديك.

  • النطاق — بسيط، مع خطر ظهور أجزاء ساخنة
  • التجزئة الهاشية — متوازنة لكنها جامدة
  • الدليل — مرنة لكنها تضيف زمن استجابة
  • التجزئة المتسقة لإعادة التجزئة بسلاسة

تحقق سريع

لديك جدول users مقسّم باستخدام hash(user_id). انتقلت من 4 أجزاء إلى 5. كم مفتاحًا يجب نقله؟

الأسئلة الشائعة

هل درس «استراتيجيات التقسيم: النطاق والتجزئة والدليل» مجاني؟

نعم — نص درس «استراتيجيات التقسيم: النطاق والتجزئة والدليل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.

ماذا ستتعلم في «استراتيجيات التقسيم: النطاق والتجزئة والدليل»؟

قارن بين التقسيم حسب النطاق والتجزئة والدليل، واختر مفتاح تقسيم يوازن الحمل ويحافظ على استقراره تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟

لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «استراتيجيات التقسيم: النطاق والتجزئة والدليل»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟

نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. استراتيجيات التقسيم: النطاق والتجزئة والدليل
  2. الاستعلامات بين الأقسام: المشكلة الصعبة
  3. Citus وPostgres الموزع
  4. متى لا تستخدم التقسيم
← العودة إلى SQL Academy