ما هو تقاسم قاعدة البيانات؟

تجزئة قاعدة البيانات هي تقنية لتحقيق قابلية التوسع الأفقي في الأنظمة واسعة النطاق.

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

للتخفيف من هذه التأثيرات وتحسين أداء النظام ، هناك مناهج مثل نسخ قاعدة البيانات وتجزئة قاعدة البيانات. في هذا الدليل ، سنستكشف أولاً تقنيات لتحسين أداء النظام ، بما في ذلك:

  • توسيع نطاق خادم قاعدة البيانات
  • تكرار قاعدة البيانات
  • التقسيم الأفقي

بعد مناقشة هذه الأساليب ، سننتقل إلى معرفة كيفية عمل تجزئة قاعدة البيانات وأيضًا إلقاء نظرة على مزايا وقيود هذا النهج.

هيا نبدأ!

تقنيات لتحسين أداء النظام

لنبدأ بمناقشة تقنيات تحسين أداء النظام عندما تكون هناك اختناقات بسبب خادم قاعدة البيانات:

# 1. توسيع نطاق خادم قاعدة البيانات

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

ومع ذلك ، تأتي هذه التقنية مع القيود التالية. لا يمكن أن يكون لدينا خادم بسعة تخزين لا نهائية وقوة معالجة. وبعد حد معين ، نحصل على عوائد متناقصة.

# 2. نسخ قاعدة البيانات

عندما يحدث التحميل الزائد لمثيل خادم قاعدة البيانات بسبب الطلبات الواردة ، يمكننا النظر في نسخ قاعدة البيانات.

تحت نسخ قاعدة البيانات ، لدينا عقدة رئيسية واحدة تستقبل طلبات الكتابة عادةً. هناك نسخ متماثلة متعددة للقراءة.

  يمنع الوصول إلى التطبيقات المشتتة للانتباه على هاتفك حتى تتمكن من العمل

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

لكن هذا يطرح مشكلة أخرى. يمكن لطلبات الكتابة إلى العقدة الرئيسية تغيير البيانات ، ويتم نشر هذه التحديثات بشكل دوري إلى النسخ المتماثلة المقروءة.

افترض أن هناك طلب قراءة لإحدى النسخ المتماثلة للقراءة في نفس الوقت الذي تكون فيه عملية الكتابة قيد التقدم في العقدة الرئيسية.

لن يتم نشر التغييرات في العقدة الرئيسية إلى النسخ المتماثلة المقروءة حتى الآن. في هذه الحالة ، قد نقرأ بيانات قديمة ، وهو أمر غير مرغوب فيه.

# 3. التقسيم الأفقي

التقسيم الأفقي هو أسلوب آخر لتحسين أداء النظام. قد يكون لدينا جدول كبير واحد به مليارات الصفوف (مثل جدول العملاء وبيانات المعاملات).

عمليات القراءة من جدول قاعدة البيانات هذا تكون أبطأ. ولكن باستخدام التقسيم الأفقي ، يتم الآن تقسيم الجدول الكبير الفردي إلى أقسام متعددة (أو جداول أصغر) يمكننا القراءة منها. تدعم قواعد البيانات العلائقية مثل PostgreSQL التقسيم أصلاً.

ومع ذلك ، لا تزال جميع الأقسام داخل مثيل خادم قاعدة بيانات واحد. الاختلاف الوحيد هو أنه يمكننا الآن القراءة من الأقسام بدلاً من الجدول الكبير الفردي.

لذلك ، عندما يكون هناك زيادة في عدد الطلبات الواردة ، قد لا يتمكن الخادم من دعم الطلب المتزايد.

كيف تعمل مشاركة قاعدة البيانات؟

الآن بعد أن ناقشنا طرق تحسين أداء النظام وقيودها ، دعونا نفهم كيفية عمل تقسيم قاعدة البيانات.

في التجزئة ، قمنا بتقسيم قاعدة البيانات الكبيرة المفردة إلى عدة قواعد بيانات أصغر ، كل منها يعمل على مثيل خادم قاعدة البيانات. كل قاعدة بيانات أصغر تسمى جزء. ويحتوي كل جزء على مجموعة فرعية فريدة من البيانات.

ولكن كيف نقسم قاعدة البيانات إلى أجزاء؟ وكيف نحدد أيًا من الصفوف يدخل في أي من القطع؟

  كيفية الحصول على نقاط شي إن مجانًا

🔑 أدخل مفتاح التجزئة.

فهم مفتاح المشاركة

دعونا نفهم دور مفتاح التجزئة.

يجب اختيار مفتاح التجزئة ، والذي يكون عادةً عمودًا (أو مجموعة من الأعمدة) في جدول قاعدة البيانات ، بحيث يتم توزيع البيانات حتى عبر أجزاء متعددة. لأننا لا نريد أن تكون شظية معينة أكبر بكثير من القطع الأخرى.

في قاعدة البيانات التي تخزن بيانات العملاء والمعاملات ، يعتبر معرف_العميل مرشحًا جيدًا لمفتاح التجزئة.

بمجرد أن نقرر مفتاح التجزئة ، يمكننا التوصل إلى دالة تجزئة تحدد الصفوف التي تدخل في أي من الأجزاء.

في هذا المثال ، لنفترض أننا بحاجة إلى تقسيم قاعدة البيانات إلى خمسة أجزاء (الجزء رقم 0 إلى الجزء رقم 4) باستخدام معرف العميل كمفتاح التجزئة. في هذه الحالة ، دالة التجزئة البسيطة هي customer_ID٪ 5.

سيتم تعيين جميع قيم customer_ID التي تترك باقيًا من الصفر عند قسمة 5 على الجزء رقم 0. وسيتم تعيين قيم customer_ID التي تترك الباقي من 1 إلى 4 إلى الجزء رقم 1 إلى الجزء رقم 4 ، على التوالي.

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

مزايا تقاسم قاعدة البيانات

فيما يلي بعض مزايا تجزئة قاعدة البيانات:

# 1. قابلية عالية للتوسع

من الممكن دائمًا تقسيم قاعدة بيانات أكبر إلى أجزاء متعددة أصغر. لذا فإن تقسيم قاعدة البيانات يسمح لنا بالتوسع أفقيًا.

# 2. توافر عالية

عندما يكون هناك مثيل خادم قاعدة بيانات واحد يتعامل مع جميع الطلبات الواردة ، يكون لدينا نقطة فشل واحدة. إذا كان خادم قاعدة البيانات معطلاً ، فإن التطبيق بأكمله معطل.

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

  كيفية حظر المستخدمين على Google Drive؟

حدود تقاسم قاعدة البيانات

لننتقل الآن إلى بعض قيود تجزئة قاعدة البيانات:

# 1. تعقيد

على الرغم من أن التجزئة لها مزايا من حيث قابلية التوسع والتسامح مع الخطأ ، إلا أنها تقدم تعقيدًا للنظام.

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

# 2. إعادة المشاركة

قيد آخر للتجزئة هو الحاجة إلى إعادة المشاركة.

على الرغم من أننا نستخدم وظيفة التجزئة للحصول على توزيع متساوٍ لسجلات البيانات ، فمن الممكن أن تكون إحدى القطع أكبر بكثير من الأجزاء الأخرى ، وقد يتم استنفادها في وقت أقرب. في هذه الحالة ، يتعين علينا حساب إعادة المشاركة (أو إعادة التوزيع) ، وهذا يأتي بنفقات كبيرة.

# 3. تشغيل الاستعلامات المعقدة

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

خاتمة

لنختتم المناقشة بملخص لما تعلمناه.

توسيع نطاق الأجهزة ليس دائمًا هو الأمثل. لذلك لا يُنصح بتعزيز مثيل الخادم. قمنا أيضًا بمراجعة تقنيات مثل النسخ المتماثل لقاعدة البيانات والتقسيم الأفقي وقيودها.

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

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

لذلك يمكنك التفكير في التجزئة عندما تعتقد أن المزايا تفوق التعقيد الناتج عن التجزئة. بعد ذلك ، تحقق من المقارنة بين مختلف قواعد بيانات AWS العلائقية.