كتاب تمهيدي لفهم تقسيم قاعدة البيانات

نشرت: 2022-11-05

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

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

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

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

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

توضيح لشرح تقسيم قاعدة البيانات.
مثال على التجزئة. (مصدر الصورة: Analytics Vidhya)

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

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

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

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

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

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

تحسين القياس الأفقي

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

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

أوقات استجابة أسرع للاستعلام

تحتوي القطع على عدد قليل من الصفوف والأعمدة. لهذا السبب ، تستغرق معالجة استعلامات قاعدة البيانات وقتًا أقل. في المقابل ، قد يتطلب استعلام قاعدة بيانات غير مجزأة البحث في مئات - أو حتى آلاف - الصفوف.

زيادة الموثوقية في حالات الانقطاع

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

عيوب التقاسم

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

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

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

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

معماريات التقاسم

يمكنك تنفيذ التجزئة باستخدام ثلاث بنيات:

  • التجزئة على أساس مفتاح
  • التجزئة على أساس النطاق
  • التجزئة المستندة إلى الدليل

تعتمد البنية التي تختارها على حالة الاستخدام الخاصة بك.

التقاسم المستند إلى المفتاح

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

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

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

التقاسم على أساس النطاق

تتضمن التجزئة المستندة إلى النطاق تجزئة قاعدة البيانات بناءً على نطاق محدد من القيم.

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

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

يمكن أن تتسبب التجزئة المستندة إلى النطاق في نقاط فعالة لقاعدة البيانات. ضع في اعتبارك قاعدة بيانات المستخدم التي تقع فيها معظم معرفات المستخدم الخاصة بك بين 2001 و 4000. تقوم العملية بتعيينهم لقطعة واحدة ، مما يؤدي إلى عدم توازن بمرور الوقت. وبالتالي ، فإن التجزئة المستندة إلى النطاق تعمل بشكل أفضل مع البيانات الموزعة بشكل متساوٍ.

التقاسم المستند إلى الدليل

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

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

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

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

توفر معظم محركات قواعد البيانات الحديثة دعمًا لتقسيم قاعدة البيانات. أحد محركات قواعد البيانات هذه هو MariaDB ، وهو شوكة MySQL مدعومة تجاريًا. إنه نظام قاعدة بيانات مفتوح المصدر عالي الأداء تتبناه شركات مثل IBM و GitHub و Wikimedia. وهو أيضًا جزء من مجموعة الخوادم عالية الأداء في Kinsta.

تقدم MariaDB ميزات تجزئة مدمجة من خلال محرك تخزين العنكبوت. محرك تخزين العنكبوت هو محرك تشكيل الكتلة الذي يدعم معاملات التقسيم والبنية الموسعة (XA). يسمح لك بمعالجة الجداول البعيدة من حالات مختلفة كما لو كانت في نفس الحالة. بمجرد إنشاء جدول في محرك تخزين العنكبوت ، يرتبط الجدول بجدول آخر في خادم MariaDB البعيد. بمجرد إنشاء الاتصال ، يشارك محرك التخزين الارتباط مع جميع الجداول التي تشكل جزءًا من المعاملة نفسها.

ملخص

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

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

سواء كان عملك مؤسسة غير ربحية أو على مستوى المؤسسة ، فإن حلول Kinsta الخبيرة يمكن أن تزيل مخاوف استضافة موقعك ، مما يتيح لك التركيز على ما هو أكثر أهمية.