logo
logo
Проблемы синхронизации - часть 1 [Dervish 24/08/2003 18:39]
Проблема вот в чём. Я начну с небольшого экскурса в ActiveSync, который, собственно и занимается синхронизацией. Есть две базы, одна на десктопе, другая в наладоннике. Каждую из этих баз следует рассматривать как хранилище объектов. И каждый объект в каждой базе имеет свой собственный уникальный идентификатор. Например, в хранилище (object store) PocketPC каждому объекту присваивается OID, который (а) уникален и (б) постоянен в течении всего срока жизни объекта. Кроме того, каждый объект может иметь какой-то свой, внутренний, не зависящий от системы ключ. Например, для базы данных контактов, Фамилия-Имя-Отчество.
 
Во время синхронизации ActiveSync проверяет по OID все объекты, которые были созданы/удалены/изменены с момента предыдущей синхронизации и делает аналогичные действия для второй, синхронизируемой базы данных. Эти действия могли бы быть выполнены автоматически, если бы не конфликты тех самых вторых ключей, зависящих от конкретной программы. Представьте, что и на декстопе и на наладоннике (независимо друг от друга) были созданы в адресной книге записи для, например, Иванова-Ивана-Ивановича. Что делать в этой ситуации? Наверное, только то, что делает ActiveSync - выдаёт запрос пользователю, какую из этих двух записей считать актуальной.
 
Кроме того, обратите внимание, что в каждой из баз данных принята своя идентификация объектов. А ActiveSync ведёт таблицу соответствия этих объектов. И, в случае утери этой таблицы, ему не остаётся ничего иного, как пытаться восстановить эту таблицу по значениям ключей, зависящим от реализации (например, по тому же ФИО).