Как я могу удаленно проверить, идентичны ли две строки данных SQL, не отправляя все данные между серверами? - PullRequest
0 голосов
/ 05 июня 2018

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

Как я могу удаленно проверить, идентичны ли две строки данных SQL, не отправляя все данные между серверами?Я подумал об использовании столбца LastUpdated, но беспокоился, что однажды кто-то может вручную отредактировать запись, чтобы исправить проблему, и тогда системы навсегда будут не синхронизированы.

Мне известно о параметре checksum(*), но кажется, что могут быть (в основном теоретические) крайние случаи, когда контрольная сумма для обновленной строки может быть такой же, как ранее.

Идея состоит в том, что мой API предоставит список идентификаторов (первичные ключи).), за которым следует значение «check», которое удаленные системы могут затем использовать, чтобы узнать, какие записи им нужно добавить или обновить.Надеюсь, что это разумный подход к синхронизации этих двух систем, но я не могу найти для этого статьи типа «лучшие практики».

1 Ответ

0 голосов
/ 05 июня 2018

В каждой таблице есть rowversionrowversion и rowversionOther

Из синхронизации A

select b.id 
  from tableA a 
  join tableB b 
    on a.ID = b.ID 
   and b.rowversion != a.rowversionOther  

После синхронизации данных необходимо обновить b.rowversionOther = a.rowversion или попасть в порочный цикл.

Если обновления a и b перед синхронизацией потребуется для определения мастера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...