سؤال

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

على سبيل المثال قاعدة البيانات تحتوي على جدول "شخص" مع معرف الأعمدة، الاسم، ... في وسط DB لدي صفوف:

  1. aaa
  2. bbb
  3. ccc
  4. أول عميل يربط وتنزيل الحمل الأولي، لذلك يحتوي على نفس DB. العميل الثاني يفعل نفسه.

    الآن العملاء أولا والثاني إنشاء صف جديد في DB المحلي. أولا:

    1. aaa
    2. bbb
    3. ccc
    4. ddd
    5. ثانية:

      1. aaa
      2. bbb
      3. ccc
      4. eee
      5. سوف يحاول المزامنة، ولكن هناك صراع في 4. الصف. يمكن اكتشاف هذا الصراع بسهولة في متماثل، ولكن الآن أريد حلها عن طريق مفتاح الزيادة حتى يتم إدراجها ثم إرسال تغييرات مرة أخرى إلى العملاء ... لذلك ستكون النتيجة:

        1. aaa
        2. bbb
        3. ccc
        4. ddd
        5. eee
        6. في كل قاعدة بيانات. كيف يمكن أن تتم؟ شكرا لك.

هل كانت مفيدة؟

المحلول

عند التعامل مع سيناريو ثنائي الاتجاه متعدد الاتجاهات ليس فكرة جيدة استخدام PK زيادة تلقائية.

الممارسة القياسية هي إنشاء GUID ل PK لتجنب الصراعات بين عملائك.

شاهد الموقع التالي لمزيد من التفاصيل.

تحديد مفتاح أساسي مناسب للبيئة الموزعة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top