توصيات لتقسيم البيانات

ينطبق على توصية قائمة التحقق من موثوقية Azure Well-Architected Framework هذه:

RE:06 تنفيذ استراتيجية تحجيم في الوقت المناسب وموثوق بها على مستويات التطبيق والبيانات والبنية الأساسية.

الدليل ذو الصلة:التحجيم

يصف هذا الدليل توصيات تصميم استراتيجية تقسيم البيانات لقاعدة البيانات وتكنولوجيا تخزين البيانات التي تقوم بنشرها. تساعدك هذه الاستراتيجية على تحسين موثوقية ملكية البيانات الخاصة بك.

استراتيجيات التصميم الرئيسية

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

ملاحظة

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

لماذا تقسيم البيانات?

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

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

  • تحسين الأمان. في بعض الحالات، يمكنك فصل البيانات الحساسة وغير الهامة إلى أقسام مختلفة، وتطبيق عناصر تحكم أمان مختلفة على البيانات الحساسة.

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

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

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

تصميم الأقسام

هناك ثلاث استراتيجيات نموذجية لتقسيم البيانات:

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

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

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

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

التقسيم الأفقي - (التجزئة)

تعرض الصورة التالية مثالا على التقسيم الأفقي أو التقسيم. يقسم هذا المثال بيانات مخزون المنتج إلى أجزاء تستند إلى مفتاح المنتج. يحتفظ كل جزء بالبيانات الخاصة بمجموعة متجاورة من مفاتيح الأجزاء (A-G وH-Z)، منظمة أبجدياً. عند إجراء التقسيم، فإنه ينشر الحمل على المزيد من أجهزة الكمبيوتر، مما يقلل من المنافسة ويحسن الأداء.

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

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

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

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

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

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

لمزيد من المعلومات، راجع نمط التقسيم.

التقسيم العمودي

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

رسم تخطيطي يوضح كيفية تقسيم البيانات عموديا حسب نمط استخدامها.

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

راجع المزايا التالية للتقسيم العمودي:

  • يمكنك فصل البيانات بطيئة الحركة نسبيا (اسم المنتج والوصف والسعر) عن البيانات الأكثر ديناميكية (مستوى المخزون وتاريخ آخر طلب). تعد البيانات بطيئة الحركة مرشحا جيدا لتطبيق ما للتخزين المؤقت في الذاكرة.

  • يمكنك تخزين البيانات الحساسة في قسم منفصل مع عناصر تحكم أمان إضافية.

  • يمكن أن يقلل التقسيم العمودي من مقدار الوصول المتزامن المطلوب.

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

التقسيم الوظيفي

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

رسم تخطيطي يوضح كيفية تقسيم البيانات وظيفيا المرتبطة بالسياق أو المجال الفرعي.

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

تصميم أقسام لقابلية التوسع

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

اتبع هذه الخطوات عند تصميم أقسام لقابلية التوسع:

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

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

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

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

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

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

تصميم أقسام لأداء الاستعلام

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

اتبع هذه الخطوات عند تصميم أقسام لأداء الاستعلام:

  1. فحص متطلبات التطبيق والأداء.

    • استخدم متطلبات العمل لتحديد الاستعلامات الهامة التي يجب أن تعمل دائماً بسرعة.

    • مراقبة النظام لتحديد الاستعلامات التي تعمل ببطء.

    • حدد الاستعلامات التي تنفذ بشكل متكرر. حتى إذا كان استعلام واحد يحتوي على الحد الأدنى من التكلفة، يمكن أن يكون استهلاك الموارد التراكمي كبيرا.

  2. تقسيم البيانات التي تسبب بطء الأداء.

    • حدد حجم كل قسم بحيث يكون وقت استجابة الاستعلام ضمن الهدف.

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

    • النظر في موقع القسم. حاول الاحتفاظ بالبيانات في أقسام قريبة جغرافيا من التطبيقات والمستخدمين الذين يصلون إليها.

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

  4. تشغيل الاستعلامات بالتوازي عبر الأقسام لتحسين الأداء.

تصميم أقسام للتوفر

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

ضع في اعتبارك العوامل التالية التي تؤثر على التوافر:

تحديد أهمية البيانات. تحديد بيانات الأعمال الهامة، مثل المعاملات، والبيانات التشغيلية الأقل أهمية، مثل ملفات السجل.

  • تخزين البيانات الهامة في أقسام عالية التوفر، وإنشاء خطة نسخ احتياطي مناسبة.

  • إنشاء إجراءات إدارة ومراقبة منفصلة لمجموعات البيانات المختلفة.

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

إدارة الأقسام الفردية. تصميم أقسام لدعم الإدارة المستقلة والصيانة. توفر هذه الممارسة العديد من المزايا، على سبيل المثال:

  • في حالة فشل أحد الأقسام، يمكن استرداده بشكل مستقل بدون تطبيقات يمكنها الوصول إلى البيانات الموجودة في أقسام أخرى.

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

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

اعتبارات تصميم التطبيقات

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

  • يجب تعديل منطق الوصول إلى البيانات.

  • يجب ترحيل كميات كبيرة من البيانات الموجودة لتوزيعها عبر الأقسام.

  • تواجه تحديات لأن المستخدمين يتوقعون الاستمرار في استخدام النظام أثناء الترحيل.

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

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

ضع في اعتبارك النقاط التالية عند تصميم نظام تقسيم بيانات:

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

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

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

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

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

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

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

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

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

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

ضع في اعتبارك العوامل التالية التي تؤثر على الإدارة التشغيلية:

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

  • قم بتحميل البيانات في أقسام متعددة، وأضف بيانات جديدة تأتي من مصادر أخرى. قد لا تدعم بعض الأدوات والأدوات المساعدة عمليات البيانات المقسمة، مثل تحميل البيانات في القسم الصحيح.

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

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

إعادة توازن الأقسام

مع نضوج النظام، قد تضطر إلى ضبط نظام التقسيم. على سبيل المثال، قد تبدأ الأقسام الفردية في تلقي حجم غير متناسب من نسبة استخدام الشبكة وتصبح ساخنة، مما يؤدي إلى خلاف مفرط. أو ربما كنت قد قللت من حجم البيانات في بعض الأقسام، مما يؤدي إلى اقتراب الأقسام من حدود السعة.

يمكن لبعض مخازن البيانات، مثل Azure Cosmos DB، إعادة توازن الأقسام تلقائيا. في حالات أخرى، يمكنك إعادة توازن الأقسام على مرحلتين:

  1. تحديد استراتيجية تقسيم جديدة.

    • ما هي الأقسام التي يجب تقسيمها أو دمجها؟

    • ما هو مفتاح القسم الجديد؟

  2. ترحيل البيانات من نظام التقسيم القديم إلى مجموعة الأقسام الجديدة.

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

الترحيل دون اتصال بالإنترنت

يقلل الترحيل دون اتصال من فرصة حدوث الخلاف. لإجراء الترحيل دون اتصال:

  1. وضع علامة على القسم على أنه غير متصل. يمكنك وضع علامة للقراءة فقط على القسم بحيث لا يزال بإمكان التطبيقات قراءة البيانات أثناء نقلها.

  2. تقسيم دمج ونقل البيانات إلى الأقسام الجديدة.

  3. تحقق من البيانات.

  4. أحضر الأقسام الجديدة عبر الإنترنت.

  5. إزالة القسم القديم.

الترحيل عبر الإنترنت

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

تسهيل Azure

تصف الأقسام التالية توصيات تقسيم البيانات المخزنة في خدمات Azure.

القسم في قاعدة بيانات Azure SQL

قاعدة بيانات SQL واحدة لها حد لحجم البيانات التي يمكن أن تحتوي عليها. يتم تقييد الإنتاجية من خلال العوامل المعمارية وعدد الاتصالات المتزامنة التي يدعمها.

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

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

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

لمزيد من المعلومات حول التجمعات المرنة، راجع التحجيم باستخدام قاعدة بيانات SQL.

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

بدلا من ذلك، استخدم SQL Data Sync لقاعدة بيانات SQL أو Azure Data Factory لنسخ قاعدة بيانات مدير خريطة الجزء عبر المناطق. يعمل هذا الشكل من النسخ المتماثل بشكل دوري وهو أكثر ملاءمة إذا تغيرت خريطة الجزء بشكل غير متكرر ولا تتطلب المستوى المتميز.

توفر قاعدة البيانات المرنة مخططين لتعيين البيانات إلى الأجزاء الصغيرة وتخزينها في أجزاء:

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

    رسم تخطيطي يوضح الأجزاء المحتفظ بها في الجزء الخاص بها.

    قم بتنزيل ملف Visio لهذا الرسم التخطيطي.

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

    رسم تخطيطي يوضح مجموعات المستأجرين داخل نفس الأجزاء.

    تنزيل ملف Visio لهذا الرسم التخطيطي

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

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

قم بتنزيل ملف Visio لهذا الرسم التخطيطي.

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

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

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

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

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

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

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

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

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

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

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

القسم في Azure Blob Storage

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

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

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

إذا كان نظام التسمية يستخدم طوابع زمنية أو معرفات رقمية، فقد يؤدي ذلك إلى حركة مرور زائدة إلى قسم واحد. يمنع النظام من موازنة التحميل بشكل فعال. على سبيل المثال، إذا كانت لديك عمليات يومية تستخدم كائن كائن ثنائي كبير الحجم مع طابع زمني، مثل yyyy-mm-dd، فستنتقل جميع نسبة استخدام الشبكة لتلك العملية إلى خادم قسم واحد. بدلا من ذلك، قم ببادئة الاسم بتجزئة مكونة من ثلاثة أرقام. لمزيد من المعلومات، راجع اصطلاح تسمية القسم.

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

الاعتبارات

يقدم تقسيم البيانات بعض التحديات والتعقيدات التي تحتاج إلى مراعاتها.

  • قد تصبح مزامنة البيانات بين الأقسام تحديا. تأكد من نشر التحديثات أو التغييرات على قسم واحد إلى الأقسام الأخرى في الوقت المناسب وبطريقة متسقة.

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

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

قائمة التحقق من الموثوقية

راجع المجموعة الكاملة من التوصيات.