Вопрос

Я пытаюсь реализовать многоразовую двунаправленную синхронизацию для одного центрального узла и многих клиентов, использующих симметрии. Клиенты общаются только с центральным узлом (звездная топология). У меня проблемы с рецензией с конфликтами в первичных ключах.

Например, база данных содержит таблицу "человек" с идентификатором столбцов, именем, ... в центральной БД у меня есть строки:

  1. aaa
  2. bbb
  3. ccc
  4. Первый клиент подключается и загружает начальную нагрузку, поэтому у него есть такая же БД. Второй клиент делает то же самое.

    Теперь первый и второй клиенты создают новую строку в их локальной БД. Во-первых:

    1. aaa
    2. bbb
    3. ccc
    4. ddd
    5. Второе:

      1. aaa
      2. bbb
      3. ccc
      4. eee
      5. Они попробуют синхронизировать, но есть конфликт в 4. ряд. Этот конфликт может быть легко обнаружен в симметрии, но теперь я хочу решить его с помощью Key, пока он не вставлен, а затем отправить изменения обратно на клиентов ... Итак, результат будет:

        1. aaa
        2. bbb
        3. ccc
        4. ddd
        5. eee
        6. в каждой базе данных. Как это можно сделать? Спасибо.

Это было полезно?

Решение

При работе с многоразонным двунаправленным сценарием это не хорошая идея для использования автоматического увеличения PK.

Стандартная практика заключается в создании GUID для PK, чтобы избежать конфликтов между вашими клиентами.

Смотрите следующий сайт для более подробной информации.

Выбор соответствующего первичного ключа для распределенной среды >

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top