التعرف على نُهج حل التعارض

مكتمل

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

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

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

عندما تكون الخاصية _ts هي الخاصية الافتراضية لنهج «الكتابة الأخيرة هي الفائزة»، يمكنك تكوين أي خاصية رقمية لهذا النهج عن طريق تكوين مسار حل التعارض. يمكنك استخدام .NET SDK ل Azure Cosmos DB ل NoSQL لتكوين مسار حل التعارض المخصص.

في هذا المثال، يتم إنشاء حاوية جديدة تسمى products مع مسار مخصص لحل تعارض لـ /metadata/sortableTimestamp.

Database database = client.GetDatabase("cosmicworks");

ContainerProperties properties = new("products", "/categoryId")
{
    ConflictResolutionPolicy = new ConflictResolutionPolicy()
    {
        Mode = ConflictResolutionMode.LastWriterWins,
        ResolutionPath = "/sortableTimestamp",
    }
};

Container container = database.CreateContainerIfNotExistsAsync(properties);

إشعار

يمكنك فقط ضبط نهج حل التعارض على حاويات تم إنشاؤها حديثاً.