Модель синхронизации равноправных участников

Иллюстрации

Показать все

Изобретение относится к средствам синхронизации данных между различными типами устройств и/или служб, а также различными правами участников при обмене данными. Технический результат заключается в обеспечении адаптирования процесса обмена информацией в зависимости от прав доступа участников. Машина синхронизации определяет, является ли устройство или служба полным, частичным или простым участником. Устройство или служба является простым участником, если оно имеет хранилище данных для синхронизированных данных и не имеет хранилища знаний. Устройство или служба является частичным участником, если оно имеет хранилище данных для синхронизированных данных и хранилище знаний, но не понимает этих знаний. Устройство или служба является типом полного участника, если оно имеет хранилище данных для синхронизированных данных и хранилище знаний и понимает эти знания. Машина синхронизации выполняет операцию синхронизации с устройством или службой с использованием набора логики, который подходит для этого типа устройства или службы. 5 н. и 15 з.п. ф-лы, 26 ил.

Реферат

Уровень техники

В сегодняшнем мире технологии и обработки цифровой информации, индивидуумы могут хранить информацию или данные в разнообразных различных устройствах и местах. Часто пользователь хранит одну и ту же информацию более чем в одном устройстве и/или месте. Пользователю хотелось бы, чтобы все различные хранилища данных имели одну и ту же информацию без необходимости ручного ввода одних и тех же изменений в каждое хранилище данных. Репликация (дублирование) является одним процессом, используемым для того, чтобы гарантировать, что каждое хранилище данных имеет одну и ту же информацию.

Например, пользователь может поддерживать электронную адресную книгу в разнообразных различных устройствах или местах. Пользователь может поддерживать адресную книгу, например, в администраторе (управляющей программе) персональной информации, хранимом на его настольном компьютере, на его дорожном компьютере, в карманном компьютере (PDA), в администраторе онлайновых контактов и т.п. Пользователь может модифицировать электронные адресные книги в каждом месте, например, посредством добавления контакта, удаления контакта или изменения контактной информации. Репликация используется для обеспечения того, что изменение, сделанное в конкретном устройстве, в конечном счете отражается в хранилищах данных других устройств пользователя.

Репликация становится все более сложной, так как число устройств и/или служб, которые использует пользователь, возрастает и/или размер или возможности обработки этих устройств уменьшаются. Например, многие пользователи имеют флэшку, съемную память, PDA, телефоны, портативные музыкальные устройства и т.д. Информацию, такую как записи контактов, было бы полезно иметь на многих из таких устройств и/или синхронизированной среди этих устройств, ведь все еще многие из этих типов устройств даже не имеют компьютерного процессора, который часто необходим для участия в обычном процессе синхронизации. Эти проблемы синхронизации могут быть дополнительно смешаны, когда рассматривается групповое совместное использование данных, такое как совместное использование множественными пользователями группового календаря.

Сущность изобретения

Раскрыты различные технологии и способы, которые улучшают синхронизацию данных между варьирующимися типами устройств и/или служб. Устройство или служба полного участника принимает запрос от другого устройства или службы на выполнение операции синхронизации с использованием машины синхронизации. Другое устройство или служба связывается с машиной синхронизации полного участника через реализацию интерфейса обработчика. Машина синхронизации управляет связью между различными установленными в системе обработчиками для запуска синхронизации между конечными точками. После подключения к машине синхронизации, обработчики проверяются для определения сценариев синхронизации, в которых они могут принять участие, или просто их уровней участия, определенных в модели равноправных участников.

В одной реализации, машина синхронизации определяет, является ли это устройство или служба полным участником, частичным участником или простым участником. Устройство или служба является простым участником, если оно имеет хранилище данных для синхронизируемых данных и не имеет хранилища знаний. Простой участник не является ответственным за отслеживание того, какие изменения он осуществляет с этими данными. Устройство или служба является частичным участником, если оно имеет хранилище данных для синхронизируемых данных и хранилище знаний, но может не понимать этих знаний. Частичный участник является ответственным за отслеживание того, какие изменения он осуществляет с этими данными. Устройство или служба является полным участником, если оно имеет хранилище данных для синхронизируемых данных и хранилище знаний и понимает эти знания и некоторые или все операции над ними. Знания относятся к «метаданным синхронизации». Машина синхронизации выполняет операцию синхронизации с устройством с использованием набора логики, который соответствует этому типу устройства или службы. Одна реализация этой архитектуры обеспечивает сообщество двусторонней синхронизации со многими «хозяевами» (ведущими устройствами) и дает возможность устройствам и/или службам с ограниченными возможностями обработки и/или хранения (такими как флэшка, некоторые карманные компьютеры и/или телефоны и т.д.) участвовать на некотором уровне в процессе синхронизации. Синхронизация со многими хозяевами означает возможность двум или нескольким участникам, каждый из которых имеет записываемые точные копии одних и тех же данных, сходиться и синхронизироваться независимо от того, связывались ли они когда-либо прежде.

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

Эта сущность изобретения была обеспечена для ввода некоторого набора понятий в упрощенной форме, которые описываются далее в подробном описании. Эта сущность изобретения не предназначена для идентификации ключевых признаков или существенных признаков заявленного объекта изобретения, а также она не предназначена для использования в качестве помощи в определении объема заявленного объекта изобретения.

Краткое описание чертежей

Фиг.1 является схематическим изображением модели синхронизации равноправных участников одной реализации, показывающим графическое представление полного участника, частичного участника и простого участника.

Фиг.2 является схематическим изображением модели синхронизации равноправных участников одной реализации, показывающим табличное представление полного участника, частичного участника и простого участника.

Фиг.3 является схематическим изображением системы синхронизации одной реализации с обработчиками для образования интерфейса с устройствами участников.

Фиг.4 иллюстрирует типичную компьютерную систему, которая является подходящей рабочей средой для одной или нескольких реализаций, например, для управления приложением синхронизации на устройстве полного участника.

Фиг.5 является схематическим изображением приложения синхронизации одной реализации.

Фиг.6 является блок-схемой последовательности операций процесса высокого уровня для одной реализации системы.

Фиг.7 является блок-схемой последовательности операций процесса для одной реализации, иллюстрирующей стадии, включенные в обновление и синхронизацию данных с использованием устройства частичного участника.

Фиг.8 является блок-схемой последовательности операций процесса для одной реализации, иллюстрирующей стадии, включенные в отслеживание устройством частичного участника изменений в данных посредством обновления записи с новым тактовым отсчетом или другим идентификатором.

Фиг.9 является блок-схемой последовательности операций процесса для одной реализации, иллюстрирующей стадии, включенные в отслеживание устройством частичного участника изменений, которые он осуществляет в данных, посредством отдельного сохранения идентификатора записи и даты/времени для этого изменения.

Фиг.10-11 иллюстрируют типичную запись на устройстве частичного участника перед модификацией и после модификации устройством частичного участника.

Фиг.12 иллюстрирует типичную запись на устройстве частичного участника перед модификацией.

Фиг.13 иллюстрирует типичную отслеживающую изменение запись на устройстве частичного участника для отслеживания изменений, осуществляемых с записью на фиг.12.

Фиг.14 иллюстрирует типичную запись на фиг.12, которая обновляется устройством полного участника после определения того, что частичный участник модифицировал данные, как описано в отслеживающей изменение записи на фиг.13.

Фиг.15 является примером записи знаний, хранимой на устройстве частичного участника или устройстве полного участника для одной реализации.

Фиг.16 является блок-схемой последовательности операций процесса для одной реализации, иллюстрирующей стадии, включенные в обновление и синхронизацию данных с использованием устройства простого участника.

Фиг.17 является схематическим изображением типичного сообщества синхронизации для одной реализации, имеющего множественные устройства и обработчики.

Фиг.18 иллюстрирует пример сообщества синхронизации для одной реализации.

Фиг.19 показывает участника и повременную иллюстрацию одной реализации, показывающей изменение, добавляемое к этому участнику, и знания участника, обновляемые для включения этого изменения.

Фиг.20 иллюстрирует одну реализацию повременного сценария репликации между двумя участниками.

Фиг.21 иллюстрирует одну реализацию повременного сценария детектирования (обнаружения) конфликта.

Фиг.22 иллюстрирует пример назначения идентификаторов изменения к изменениям в участнике в одной реализации.

Фиг.23 иллюстрирует одну реализацию повременного сценария репликации с использованием векторов знаний.

Фиг.24А иллюстрирует одну реализацию обновления знаний в участнике, следующего за репликацией, с использованием списка исключений.

Фиг.24В иллюстрирует одну реализацию обновления знаний в участнике, следующего за репликацией, с использованием попарного максимума векторов знаний.

Фиг.24С иллюстрирует одну реализацию обновления знаний в участнике, следующего за репликацией, где исключения существуют в обновленных знаниях.

Фиг.25 иллюстрирует топологию «подключайся и говори» одной реализации для реализации репликации, включающей в себя репликацию замещения.

Фиг.26А иллюстрирует примеры сценариев разрешения конфликтов в одной реализации.

Фиг.26В иллюстрирует другие сценарии разрешения конфликтов в одной реализации.

Подробное описание

В целях углубления понимания принципов изобретения, теперь будет делаться ссылка на варианты осуществления, показанные на чертежах, и для их описания будет использоваться специфический язык. Тем не менее, следует понимать, что тем самым не предусматривается никакого ограничения объема изобретения. Предполагается, что любые изменения и дальнейшие модификации в описанных вариантах осуществления и любые другие применения описанных здесь принципов нормально приходили бы на ум специалистам в данной области техники.

Эта система может быть описана в общем контексте как один или несколько способов, которые улучшают синхронизацию данных между различными устройствами, имеющими различные возможности, но эта система также служит и для других целей в дополнение к этим. В одной реализации, один или несколько способов, описанные здесь, могут быть реализованы как особенности программы синхронизации, такой как MICROSOFT® ACTIVESYNC®, или любого другого типа программы или службы, которая участвует в процессе синхронизации между устройствами. В другой реализации, один или несколько способов, описанных здесь, реализованы как особенности с другими приложениями, которые имеют дело с синхронизацией данных по устройствам и/или службам. Термин «мобильное устройство», который используется здесь, означает включение сотовых телефонов, карманных компьютеров, портативных устройств воспроизведения мультимедийных данных, телефонов голос-через-IP и многочисленных других типов мобильных устройств различных уровней возможностей.

Фиг.1 является схематическим изображением модели синхронизации равноправных участников одной реализации, показывающим графическое представление полного участника 10, частичного участника 20 и простого участника 30. Термин «участник» также называется здесь «репликой» (точной копией). Участник и реплика относятся к устройствам и/или службам, которые участвуют в сообществе синхронизации. Полный участник 10 имеет хранилище 12 данных знаний и способность понимать знания 14. Он также имеет хранилище 16 данных синхронизации для хранения действительных данных, которые были синхронизированы, например, такие как контактная информация или другая информация, синхронизируемая между устройствами. Некоторые не ограничивающие примеры полных участников включают в себя персональные компьютеры, некоторые PDA, некоторые телефоны, некоторые другие мобильные устройства и/или другие устройства, способные хранить и понимать знания.

Каждый полный участник поддерживает «знания» в хранилище данных знаний, которое облегчает эффективную и улучшенную репликацию. В одной реализации, знания являются метаданными, которые описывают изменения, которые известны данному участнику. Знания могут быть представлены как вектор пар или идентификаторы изменений, где каждая пара или идентификатор изменения представляет собой идентификатор реплики и максимальную версию (ID реплика, мах версия). Количество пар в конкретном векторе знаний может изменяться, так как участники добавляются к сообществу синхронизации или удаляются из него. Хотя вектор знаний может быть также выражен иным образом, выгодно точно представить изменения, о которых знает конкретный участник. Здесь отсутствует требование, чтобы конкретные знания содержали идентификатор изменения для каждого участника в сообществе синхронизации. Участники освобождаются от отслеживания того, что уже знают другие участники, так как эта информация фактически представлена знаниями участника.

Подобно полному участнику 10, частичный участник 20 также содержит хранилище 22 данных знаний. В отличие от полного участника 10, однако, частичный участник 20 не имеет способности (или ограниченной способности) понимать знания 24. Частичный участник включает в себя хранилище 26 данных синхронизации для хранения синхронизируемых данных. Частичный участник включает в себя хранилище 25 данных версии для хранения информации, относящейся к изменениям, которые он производит с хранилищем 26 данных синхронизации. Не ограничивающие примеры частичных участников могут включать в себя некоторые карманные компьютеры, телефоны, некоторые другие мобильные устройства и/или другие типы устройств, способных управлять простой программой, которая отслеживает изменения, сделанные с хранилищем 26 данных синхронизации.

Простой участник 30 имеет хранилище 36 данных синхронизации и не имеет хранилища знаний. Примеры простого участника могут включать в себя, но не ограничены этим, некоторые флэшки, некоторые платы памяти и/или другие устройства, которые не способны управлять простой программой, которая отслеживает изменения, сделанные с хранилищем 36 данных синхронизации.

Обращаясь теперь к фиг.2, показано табличное представление 50 модели равноправных участников. Простой участник 52, частичный участник 54 и полный участник 56 имеют одну или несколько характеристик. Некоторые из этих характеристик были описаны в обсуждении фиг.1. Простой участник 52, например, не способен хранить знания 58. Простой участник способен к синхронизации 60 с единственным полным участником через обработчик. Частичный участник 54 хранит, но не понимает знания 62. Частичный участник 54 способен участвовать в двусторонней синхронизации 64 со многими «хозяевами». Альтернативно или дополнительно, частичный участник 54 способен к синхронизации 66 через обработчик на полном участнике. Таким образом, частичный участник 54 способен участвовать в управляемом сценарии равноправных узлов через одно или несколько устройств полных участников. Таким образом, частичные участники могут синхронизироваться друг с другом через использование полного участника. Полный участник 56 понимает и хранит знания 68, может участвовать в двусторонней синхронизации 70 со многими «хозяевами» и может выполнять синхронизации 72 равноправных узлов.

Фиг.3 является схематическим изображением системы 80 синхронизации одной реализации с обработчиками для образования интерфейса с одним или несколькими устройствами участников. Приложение 82 синхронизации включает в себя машину 84 оркестровки синхронизации, которая отвечает за завершение цикла синхронизации среди участников и перенос обновленных изменений между другими подключенными участниками. Различные обработчики 86, 88 и 90 используются для того, чтобы дать возможность другим участникам в сообществе синхронизации связываться с машиной 84 синхронизации. Машина 84 синхронизации связывается с обработчиками 86, 88 и 90 через интерфейсы 91, 92 и 97 обработчиков, соответственно. Обработчики 86, 88 и 90 затем связываются с хранилищами 93 и 95 знаний, локальным хранилищем 94 данных синхронизации и удаленным хранилищем 96 данных синхронизации для доступа к данным, если они применяются. В одной реализации, одно или несколько хранилищ данных, показанных на фиг.1, такие как удаленное хранилище 96 данных синхронизации, расположены на одном или нескольких отдельных компьютерах или устройствах.

Как показано на фиг.4, типичная компьютерная система для использования для реализации одной или нескольких частей этой системы включает в себя вычислительное устройство, такое как персональное вычислительное устройство 100. В его основной конфигурации, вычислительное устройство 100 обычно включает в себя один процессор 102 и память 104. В зависимости от точной конфигурации и типа вычислительного устройства, память 104 может быть энергозависимой (такая как RAM), энергонезависимой (такая как ROM, флэш-память и т.д.) или некоторой комбинацией этих двух. Эта наиболее основная конфигурация показана на фиг.4 пунктирной линией 106.

Кроме того, устройство 100 может также иметь дополнительные особенности/функциональность. Например, устройство 100 может также включать в себя дополнительное запоминающее устройство (съемное и/или несъемное), включающее в себя, но не ограниченное этим, магнитные или оптические диски или ленту. Такое дополнительное запоминающее устройство показано на фиг.4 посредством съемного запоминающего устройства 108 и несъемного запоминающего устройства 110. Компьютерные носители данных включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализуемые в любом способе или технологии для хранения информации, такой как считываемые компьютером инструкции, структуры данных, программные модули или другие данные. Память 104, съемное запоминающее устройство 108 и несъемное запоминающее устройство 110 являются примерами компьютерных носителей данных. Компьютерные носители данных включают в себя, но не ограничены этим, RAM, ROM, EEPROM, флэш-память или другие технологии памяти, CD-ROM, цифровые универсальные диски (DVD) или другие оптические запоминающие устройства, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитных дисках или другие устройства магнитной памяти или любые другие носители, которые могут использоваться для хранения желаемой информации и которые могут быть доступны для устройства 100. Любые такие носители данных могут быть частью устройства 100.

Вычислительное устройство 100 включает в себя одно или несколько соединений 114 связи, которые дают вычислительному устройству 100 возможность связываться с другими устройствами 115, такими как полные участники, частичные участники и/или простые участники. Вычислительное устройство 100 может также связываться с другими компьютерами и/или приложениями 113. Устройство 100 может также иметь устройство (устройства) 112 ввода, такое как клавиатура, мышь, перо, устройство ввода голосом, сенсорное устройство ввода и т.д. Устройство (устройства) 111 вывода, такие как дисплей, громкоговорители, принтер и т.д. могут быть также включены. Эти устройства хорошо известны в данной области техники и не нуждаются в дальнейшем обсуждении здесь.

В одной реализации, вычислительное устройство 100 служит как устройство полного участника для реализации одного или нескольких способов, обсуждаемых здесь. В таких реализациях, вычислительное устройство 100 содержит приложение 122 синхронизации с машиной 124 оркестровки синхронизации, а также хранилище 125 данных знаний и хранилище 126 данных синхронизации. В одной реализации, хранилище 125 данных знаний и/или хранилище 126 данных синхронизации включены как часть компьютерных носителей данных, описываемых здесь, таких как память 104, съемное запоминающее устройство 108, несъемное запоминающее устройство 110 и/или другие компьютерные носители данных. В одной реализации, приложение 122 синхронизации является тем же самым, что и приложение 82 синхронизации, показанное на фиг.3.

Обращаясь к фиг.5 с продолженной ссылкой на фиг.4, показано приложение 200 синхронизации одной реализации. В одной реализации, приложение 200 синхронизации является одной из прикладных программ, которые находятся на вычислительном устройстве 100. Альтернативно или дополнительно, одна или несколько частей приложения 200 синхронизации может быть частью системной памяти 104, на других компьютерах и/или приложениях 113, или других таких вариациях, которые пришли бы на ум специалисту в компьютерном программном обеспечении.

Приложение 200 синхронизации включает в себя программную логику (логические схемы) 204, которая отвечает за выполнение некоторых или всех способов, описанных здесь. Программная логика 204 включает в себя логику для регистрации обработчиков для каждого устройства и/или службы для участия в процессе 206 синхронизации; логику для детектирования типа подключенного устройства и/или службы 208 (простой, частичный или полный участник); логику для принятия знаний от частичного участника, осуществляющего модификации в случае исключений, и переносящего знания обратно к частичному участнику 210; логику для детектирования изменений на простых участниках и сохранения конфликтов в его собственном локальном хранилище 212 данных; логику для работы с другим полным участником (участниками) для синхронизации измененных наборов данных с использованием знаний 214; логику для выполнения оркестровки для завершения цикла синхронизации и передачи обновленных изменений между другими подключенными устройствами и/или службами 216; и другую логику для управления приложением 220.

В одной реализации, программная логика 204 может управляться посредством программных вызовов от другой программы, таких как использование единственного вызова процедуры в программной логике 204. Альтернативно или дополнительно, будет ясно, что программная логика 204 может быть альтернативно или дополнительно воплощена как выполняемые компьютером инструкции на одном или нескольких компьютерах и/или в других вариациях, чем показано на фиг.4.

Фиг.6 является блок-схемой последовательности операций процесса высокого уровня для приложения 200 синхронизации. В одной форме, процесс на фиг.6 по меньшей мере частично реализован в логике работы вычислительного устройства 100, других компьютеров/приложений 113 и/или устройств 115 другого участника. Эта процедура начинается в точке 240 начала с подключения устройства или службы участника к полному участнику (такому как вычислительное устройство 100 или некоторые мобильные устройства) машиной синхронизации (стадия 242). Это устройство или служба регистрирует обработчик или иным образом связывается с машиной синхронизации на полном участнике (стадия 244). Машина синхронизации детектирует тип этого устройства или службы (стадия 246) и выполняет соответствующую логику синхронизации на основе типа участника: простой (точка 248 принятия решения), частичный (точка 250 принятия решения) или полный (точка 252 принятия решения). Например, если устройство или служба является простым участником, который имеет хранилище данных синхронизации, но не имеет знаний (точка 248 принятия решения), то машина синхронизации детектирует изменения на простом участнике и сохраняет любые конфликты в своем собственном локальном хранилище данных на полном участнике (стадия 254).

Если устройство или служба является частичным участником, который имеет хранилище данных синхронизации и хранимые-но-не-понятые знания (точка 250 принятия решения), то это устройство или служба предоставляет свое хранилище знаний машине синхронизации на полном участнике (стадия 258). Этот полный участник осуществляет модификации этих знаний, например, в случае исключений (стадия 260), и полный участник переносит измененные знания обратно к частичному участнику (стадия 262). Знания, переносимые на устройстве или службе частичного участника, позволяют ему надежно синхронизироваться со многими «хозяевами» даже когда происходят исключения (стадия 264). Если устройство или служба является полным участником, который имеет хранилище данных синхронизации, а также хранит и понимает знания (точка 252 принятия решения), то оба участника знают, как оптимально синхронизировать измененные наборы данных с использованием знаний (стадия 266). Одна или несколько реализаций для синхронизации данных между полными участниками подробно описаны в обсуждении фиг.18-26.

После определения типа участника, который имеет устройство или службу, и обработки изменений и конфликтов, соответственно, машина синхронизации следует оркестровке для завершения цикла синхронизации и передачи обновленных изменений между другими подключенными устройствами и/или службами участников (стадия 256). Этот процесс заканчивается в конечной точке 268.

Фиг.7 является блок-схемой последовательности операций процесса, иллюстрирующей стадии, включенные в обновление и синхронизацию данных с использованием устройства частичного участника. В одной форме, процесс на фиг.7 является по меньшей мере частично реализованным в логике работы вычислительного устройства 100, других компьютеров/приложений 113 и/или устройств 115 других участников. Эта процедура начинается в точке 280 начала с обеспечения устройства или службы частичного участника хранилищем данных для хранения данных, извлекаемых во время процесса синхронизации, и хранилищем данных версии для хранения информации, относящейся к изменениям, осуществляемым над этими данными (например, в векторной, строковой и/или другой форме для отслеживания изменений, которые увидел полный участник (участники)/«хозяин» («хозяева»)) (стадия 282). Некоторые не ограничивающие примеры частичных участников включают в себя некоторые Web-службы, некоторые флэшки, некоторые мобильные устройства, такие как некоторые PDA и/или некоторые телефоны, и/или другие устройства или службы, которые могут хранить знания, но не понимают их.

Частичный участник не знает, как понять знания, а просто хранит их (стадия 284). Частичный участник принимает запрос (требование) от пользователя изменить некоторые или все данные в хранилище данных синхронизации (стадия 286). Частичный участник изменяет эти данные в хранилище данных, как потребовал пользователь (стадия 288). Частичный участник отвечает за отслеживание того, какие изменения данных он осуществил, и, таким образом, сохраняет информацию, относящуюся к изменениям, которые он осуществил на основании запроса пользователя (стадия 290). В одной реализации, когда частичный участник синхронизируется с некоторым полным участником, синхронизация имеет место от полного к частичному и от частичного к полному (стадия 292). В одной реализации, это две отдельных односторонних синхронизации. В других реализациях, также возможны и другие порядки и/или сценарии синхронизации, такие как единственная односторонняя синхронизация. Во время синхронизации, любые изменения, которые осуществляются частичным участником, извлекаются полным участником (стадия 294). Полный участник обновляет хранилище данных и знания на частичном участнике после разрешения каких-либо конфликтов (стадия 296). Этот процесс заканчивается в конечной точке 298.

Фиг.8 является блок-схемой последовательности операций процесса для одной реализации, иллюстрирующей стадии, включенные в отслеживание частичным участником изменений данных посредством обновления записи с новым тактовым отсчетом или другим идентификатором. В одной форме, процесс на фиг.8 по меньшей мере частично реализуется в логике работы вычислительного устройства 100, других компьютеров/приложений 113 и/или устройств 115 других участников. Процедура начинается в начальной точке 300 с частичного участника, отвечающего за отслеживание изменений, которые он осуществляет с данными (стадия 302). Частичный участник обновляет запись хранилища данных версии для указания того, что произошло некоторое изменение (стадия 304). В качестве некоторых не ограничивающих примеров, хранилище данных версии может быть обновлено новым тактовым отсчетом, версией или другим идентификатором, который идентифицирует (распознает), что запись изменилась, и/или который идентифицирует последнее устройство или службу, которая осуществила это изменение. Полный участник считывает измененный тактовый отсчет или другой идентификатор для того, чтобы узнать, что конкретная запись была изменена частичным участником (стадия 306). Этот процесс заканчивается в конечной точке 308.

Фиг.9 является блок-схемой последовательности операций процесса, иллюстрирующей стадии, включенные в одну реализацию, где частичный участник отслеживает изменения, которые он осуществил с данными, посредством отдельного сохранения идентификатора записи и даты/времени для этого изменения. В одной форме, процесс на фиг.9 по меньшей мере частично реализуется в логике работы вычислительного устройства 100, других компьютеров/приложений 113 и/или устройств 115 других участников. Процедура начинается в начальной точке 310 с частичного участника, отвечающего за отслеживание того, какие изменения он осуществляет с данными (стадия 312). Частичный участник отслеживает уникальный идентификатор, который идентифицирует запись точной копии (реплики) и метку даты/времени, указывающую дату/время, когда эта запись была изменена (стадия 314). Полный участник считывает этот уникальный идентификатор и метку даты/времени для того, чтобы узнать, что эта конкретная запись изменилась (стадия 316). Полный участник обновляет тактовый отсчет или другой идентификатор, который идентифицирует последнее устройство или службу для изменения этой записи, которое в этом случае является частичным участником (стадия 318). Этот процесс заканчивается в конечной точке 320.

Фиг.10-11 иллюстрируют типичную запись на устройстве частичного участника перед модификацией и после модификации устройством частичного участника согласно стадиям, описанным на фиг.8. В одной реализации, запись 330 фиг.10 включает в себя поле 332 идентификатора реплики, поле 334 тактового отсчета последнего участника, который изменил запись, и поле 334 локального тактового отсчета, когда запись пришла от полного участника 336. Соответствующие значения 338, 340 и 342 в полях 332, 334 и 336, соответственно, могут храниться в строке, векторе и/или любом другом типе представления, подходящем для хранения на устройствах или службах, имеющих ограниченную емкость хранилища и/или ресурсы. Как описано ранее, многочисленные другие вариации могут также использоваться для указания того, что конкретная запись на частичном участнике была изменена.

Обращаясь к фиг.11, запись 343 показывает данные после того, как они были исправлены частичным участником и на нем. Поле 332 идентификатора реплики осталось значением «Х1» (350), так как это уникальный идентификатор для этой записи. Поле 334 тактового отсчета последнего компьютера, который изменил запись, было модифицировано со значения «G66» (340 на фиг. 10) на значение «G67» (352). «G» представляет участника, который осуществил изменение, а «67» является следующим более высоким числом, доступным в последовательности тактового счетчика. Локальный тактовый отсчет, когда он пришел от поля 336 полного участника, остается тем же самым значением «34» (354).

Фиг.12 иллюстрирует типичную запись на устройстве частичного участника перед модификацией согласно стадиям, описанным на фиг.9. Подобно примеру на фиг.10 и 11, запись 360 включает в себя значение 368 для поля 362 идентификатора реплики, значение 370 для поля 364 тактового отсчета последнего участника, который изменил запись, и значение 372 для поля 366 локального тактового отсчета, когда он пришел от полного участника. В этой реализации, частичный участник обновляет отдельную запись отслеживания изменения вместо записи с тактовым отсчетом. Запись 360 показывает запись с тактовым отсчетом перед модификацией лежащих ниже данных частичным участником. Запись 375 на фиг.13 иллюстрирует типичную запись отслеживания изменений на устройстве частичного участника, которое будет отслеживать изменения, осуществляемые с записью фиг.12, согласно стадиям, описанным на фиг.9. Поле 374 идентификатора реплики и поле 376 даты/времени, когда запись изменилась, хранятся на частичном участнике. В этом примере, значение «Х1» 378 хранится для идентификатора 374 реплики, а «01-26-06-12:32PM» 380 хранится для поля 376 даты/времени. Когда частичный участник следующим подключается к полному участнику, полный участник извлекает и интерпретирует запись 375 для определения того, что частичный участник осуществил изменения лежащих ниже данных в хранилище данных синхронизации. Обращаясь к фиг.14, полный участник затем обновляет поле 390 тактового отсчета записи 381 последнего участника, который изменил запись, которой в этом случае является «G67» для представления частичного участника и следующего более высокого числа тактового отсчета. Поле 366 локального тактового отсчета исправляется на обновленное значение 392, если соответствует. Значение 388 для поля 362 идентификатора реплики остается тем же самым.

Фиг.15 является примером записи знаний, хранимой на устройстве частичного участника или устройстве полного участника для одной реализации. В показанном примере, запись 396 знаний представлена как вектор строк, описанный здесь, со значениями 398, 400, 402 и 404, указывающими идентификатор участника и порядковый номер для последних изменений, которые были увидены для этого конкретного устройства. Например, значение «G100» (398) означает, что этот участник увидел все изменения для устройства G через запись 100. Эти векторы знаний описаны более подробно в обсуждении фиг.18-26.

Обращаясь к фиг.16, показана блок-схема последовательности операций процесса, иллюстрирующая стадии, включенные в обновление и синхронизацию данных с использованием устройства простого участника. В одной форме, процесс на фиг.16 по меньшей мере частично реализуется в логике работы вычислительного устройства 100, других компьютеров/приложений 113 и/или устройств 115 других участников. Процедура начинается в начальной точке 420 с предоставления устройства или службы простого участника, который имеет хранилище данных для хранения синхронизируемых данных, но не имеет знаний (стадия 424). Некоторые не ограничивающие примеры простых устройств включают в себя некоторые флэшки, некоторые карты/платы памяти, некоторые PDA, некоторые сотовые телефоны и/или другие устройства или службы, которые не могут хранить и понимать знания. Простой участник не может хранить и понимать знания (стадия 426) из-за ограничений устройства или службы или настроек пользователя. Простой участник принимает запрос (требование) от пользователя изменить некоторые или все данные в хранилище данных синхронизации (стадия 428).

Простой участник изменяет данные в хранилище данных синхронизации по требованию пользователя (стадия 430). Один не ограничивающий пример того, как пользователь может изменять хранилище данных синхронизации, включает в себя модификацию этих данных в броузере файлов от другого устройства, такого как персональный компьютер, например, вставку флэшки в персональный компьютер и последующее изменение содержимого флэшки. Простой участник не отвечает за отслеживание того, какие изменения данных он осуществил, так как предполагается, что он ничего не знает (стадия 432). Когда простой участник синхронизируется с полным участником, синхронизация происходит от полного участника к простому, а