كيفية تعظيم توافر قاعدة بيانات Azure Cosmos

تطبيقات التجارة الإلكترونية تتحمل صفرًا من الانقطاع. أي تأثير على موارد التطبيق يمكن أن يؤثر على مقاييس التوفر العامة للموقع. قاعدة بيانات Azure Cosmos هي واحدة من قواعد البيانات NoSQL الرئيسية المستخدمة في الصناعة. على الرغم من أن Azure Cosmos توفر 99.99% كحد أدنى من التوفر لمنطقة واحدة دون منطقة توفر، كيف يمكننا تحسين توفر قاعدة البيانات أكثر مع الخيارات المتاحة في Azure Cosmos؟

قراءة وكتابة متعددة المناطق

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

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

أفضل الممارسات

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

التطبيق المنشور في غرب الولايات المتحدة 2

Java

 

// قم بتكوين التطبيق المنشور في غرب الولايات المتحدة 2 كما يلي

import com.azure.cosmos.CosmosClientBuilder;
import com.azure.cosmos.CosmosClient;

// ...

CosmosClientBuilder clientBuilder = new CosmosClientBuilder()
    .setEndpoint(accountEndpoint)
    .setKey(accountKey)
    .setPreferredRegions(Arrays.asList("West US 2", "East US"));

CosmosClient client = clientBuilder.buildClient();

// 

التطبيق المنشور في شرق الولايات المتحدة

Java

 

//تكوين التطبيق الذي تم نشره في شرق الولايات المتحدة كما يلي
import com.azure.cosmos.CosmosClientBuilder;
import com.azure.cosmos.CosmosClient;

// ...

CosmosClientBuilder clientBuilder = new CosmosClientBuilder()
    .setEndpoint(accountEndpoint)
    .setKey(accountKey)
    .setPreferredRegions(Arrays.asList( "East US","West US 2"));

CosmosClient client = clientBuilder.buildClient();

// 

الخاتمة

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

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

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

الخاتمة

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

التحويل التلقائي

التحويل اليدوي

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

التحويل المدارة عبر الخدمة

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

الخاتمة

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

مفتاح التقسيم والفهارس

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

التوسع التلقائي في السعة

يدعم Azure Cosmos DB كل من السعة القياسية (اليدوية) والسعة التلقائية على مستوى الحاوية.

السعة اليدوية

يقرر التطبيق عدد RU/s المسموح به، وسيتم تقييد طلبات الحد الأقصى للـ RU/s للوقت المكون. يتطلب التدخل اليدوي لزيادة النفاذ.

توسيع النفاذ تلقائيًا

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

الاستنتاج

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

النسخ الاحتياطي واستعادته

يتيح Azure Cosmos DB النسخ الاحتياطية الدورية افتراضيًا لجميع الحسابات

النسخ الاحتياطي الدوري

يتم أخذ النسخ الاحتياطية بانتظام لكل دقيقة مكونة مع قيمة دقيقة واحدة كحد أدنى و24 ساعة كحد أقصى. كما يوفر خيارات للحفاظ على تخزين النسخ الاحتياطية متعدد النسخ على مستوى Geo أو Zone أو Local. يحتاج فريق التطبيق إلى التواصل مع الدعم لاسترداد النسخ الاحتياطية.

النسخ الاحتياطي المستمر

يحتفظ النسخ الاحتياطية المستمرة بتخزين النسخ الاحتياطية على قاعدة بيانات Cosmos في المنطقة المكونة، ويسمح بالاحتفاظ بالبيانات منذ آخر 7 أيام أو منذ الـ 30 يومًا. كما يوفر استعادة البيانات في نقطة زمنية.

الاستنتاج

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

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

Source:
https://dzone.com/articles/how-to-maximize-the-azure-cosmos-db-availability