"Получение только обновлений" Дизайн
Моя система должна получать только обновления с сервера. Как мне спроектировать мою базу данных? Есть таблица аудита или есть какой-то другой механизм проектирования? Я планирую отправить идентификатор обновления с моего устройства и получить новые обновления. Как реально это реализовать?
3 ответа
Запись в таблицу аудита или изменений того, что изменилось, является одним из подходов, как вы упомянули.
Если вы используете SQLServer, есть также столбец отметки времени. Это не столбец времени данных - имя ошибочно. Вместо этого это увеличивающийся номер, и при касании строки он получает следующий номер. Если вы получите максимальную временную метку, а затем, запросите все строки с временной отметкой, превышающей эту длинную, вы получите строки, которые были изменены / добавлены.
http://msdn.microsoft.com/en-us/library/ms182776(v=sql.90).aspx
Тип данных отметки времени SQL Server не имеет ничего общего со временем или датой. Временные метки SQL Server - это двоичные числа, которые обозначают относительную последовательность изменений данных в базе данных. Тип данных временной метки изначально был реализован для поддержки алгоритмов восстановления SQL Server.
Один из подходов, который я бы особенно насторожил, - это использование даты и времени в качестве водяного знака. Он сдвигается, может меняться и не подходит для использования в алгоритме - особенно для обнаружения того, что изменилось. Я видел, как рушатся системы, пытаясь использовать datetime как надежный подход к созданию водяных знаков.
Похоже, вы ищете для репликации SQL Server. Возможно, вы захотите взглянуть на техническую статью " Обмен данными с мобильными пользователями", в которой описаны две распространенные модели и как вы можете использовать SQL-сервер, чтобы помочь вам.
Вы можете выбрать свою собственную таблицу аудита, но вам все равно придется решать проблемы конфликта обновлений, которые службы репликации призваны помочь вам решить.
Несколько лет назад я реализовал этот вид дизайна. Это было очень тривиально, но это сработало. Насколько я понимаю, вы хотите отправить обновление на свой клиент, как это делает Adobe. Храните таблицу в базе данных (она даже не должна быть таблицей, вы можете сохранить запись в XML). Когда ваше клиентское приложение загружается, проверьте версию на сервере, если несоответствие, загрузите последнее обновление, а затем обновите версию клиента, в противном случае обычно загружайте ваше клиентское приложение.