отслеживание и синхронизация частичного изменения элементов

Классы МПК:G06F7/02 сравнение цифровых данных
Автор(ы):, ,
Патентообладатель(и):МАЙКРОСОФТ КОРПОРЕЙШН (US)
Приоритеты:
подача заявки:
2006-07-20
публикация патента:

Изобретение относится к области синхронизации данных. Техническим результатом является увеличение скоростей синхронизации между клиентом и сервером. Согласно способу изменения в отношении элементов отслеживаются в соответствии с определенными группами свойств и каждая группа отслеживается независимо от других. Например, одна группа может содержать большие элементы данных, например вложения, тогда как другая группа может включать в себя высоко изменчивые свойства, подобные флажковому признаку контроля исполнения. Повышение скорости синхронизации между клиентом и сервером осуществляется посредством синхронизации только выбранных частей элемента, которые изменились, без контроля изменения каждого отдельного свойства в пределах элемента. Соответственно, если изменение произведено в отношении небольшого информационного свойства (например, флажкового признака контроля исполнения) в относительно большом сообщении электронной почты, такое изменение не будет инициировать большую загрузку на клиента, работающего в кэшированном режиме, также не будет требования значительного хранилища и обработки для отслеживания каждого отдельного свойства. 3 н. и 17 з.п. ф-лы, 6 ил. отслеживание и синхронизация частичного изменения элементов, патент № 2421780

отслеживание и синхронизация частичного изменения элементов, патент № 2421780 отслеживание и синхронизация частичного изменения элементов, патент № 2421780 отслеживание и синхронизация частичного изменения элементов, патент № 2421780 отслеживание и синхронизация частичного изменения элементов, патент № 2421780 отслеживание и синхронизация частичного изменения элементов, патент № 2421780 отслеживание и синхронизация частичного изменения элементов, патент № 2421780

Формула изобретения

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

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

в ответ на запрос на синхронизацию одного или более элементов данных, которые изменились после последней синхронизации, определяют на сервере, что первый элемент данных одного или более элементов данных изменился после последней синхронизации;

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

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

2. Способ по п.1, в котором первый элемент данных выбирается из сообщения электронной почты.

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

4. Способ по п.1, в котором множество групп свойств заранее определено на основании изменчивости одного или более свойств в каждой группе свойств.

5. Способ по п.1, дополнительно содержащий этапы, на которых

повторно определяют на сервере свойство в одной из групп свойств; и

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

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

7. Способ по п.1, в котором

измененная группа свойств является первой группой свойств во множестве групп свойств, причем способ дополнительно содержит этапы, на которых

обновляют на сервере идентификатор изменения элемента, связанный с первым элементом данных, когда первый элемент данных изменяется; и

обновляют на сервере идентификатор изменения группы свойств, связанный с первой группой свойств, когда одно из свойств в первой группе свойств изменяется;

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

8. Способ по п.1, дополнительно содержащий этап, на котором отправляют с помощью сервера отображение первого элемента данных и измененной группы свойств от сервера клиенту.

9. Способ по п.8, дополнительно содержащий этапы, на которых

определяют на сервере, что второй элемент данных изменился, причем второй элемент данных не содержит, по меньшей мере, одну группу свойств; и

передают в потоке весь второй элемент данных от сервера клиенту.

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

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

определяют на сервере, изменился ли первый элемент данных во множестве элементов данных после последней синхронизации между сервером и клиентом;

если определенно, что первый элемент данных изменился после последней синхронизации, то

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

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

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

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

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

11. Способ по п.10, в котором идентификатор изменения элемента является таким же, как идентификатор изменения группы свойств.

12. Способ по п.10, в котором идентификатор изменения элемента для первого элемента данных и идентификатор изменения группы свойств являются алфавитно-цифровыми объектами данных.

13. Способ по п.10, в котором идентификатор изменения элемента является значением хеш-функции первого элемента данных, а идентификатор изменения группы свойств является значением хеш-функции измененной группы свойств.

14. Способ по п.10, в котором группы свойств заранее определены на основании типичной емкости памяти одного или более свойств в каждой группе свойств.

15. Способ по п.10, в котором заранее определенное множество групп свойств является расширяемым, встраиваемым и масштабируемым, исходя из условия, чтобы множество свойств в каждой группе свойств могло быть повторно определено, и из условия, чтобы каждая группа свойств могла быть повторно определена.

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

17. Машиночитаемый носитель, содержащий сохраненные на нем

первый элемент данных, причем первый элемент данных содержит

множество свойств, причем каждое свойство во множестве свойств имеет значение, которое способно изменяться;

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

множество групп свойств, причем каждое свойство во множестве групп свойств включает в себя одно или более свойств из множества свойств, при этом множество групп свойств заранее определены на основании семантики в отношении того, каким образом связаны одно или более свойств в каждом из множества групп свойств; и

множество идентификаторов изменения групп свойств, причем каждый идентификатор изменения группы свойств во множестве идентификаторов изменения групп свойств указывает, изменилось ли значение в группе свойств из множества групп свойств после последней синхронизации с клиентом; и

выполняемые процессором команды, которые, в случае их выполнения процессором сервера, побуждают сервер

принимать запрос от клиента на синхронизацию одного или более элементов данных, которые изменились после последней синхронизации между сервером и клиентом;

в ответ на запрос на синхронизацию одного или более элементов данных, которые изменились после последней синхронизации,

использовать идентификатор изменения элемента первого элемента данных с целью определения того, изменилось ли значение свойства во множестве свойств первого элемента данных после последней синхронизации;

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

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

18. Машиночитаемый носитель по п.17, в котором идентификатор изменения элемента, множество идентификаторов изменения групп свойств, или и то, и другое являются значением хеш-функции элемента данных, по меньшей мере, одной из множества групп свойств, или и тем, и другим.

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

20. Машиночитаемый носитель по п.17, в котором множеством групп свойств в каждом элементе данных являются одна или более из: группы свойств основной части, группы свойств получателя, группы свойств ответных деловых встреч, группы свойств темы, группы свойств вложения, группы свойств флага приоритета, группы свойств контроля исполнения, группы свойств состояния прочтения и группы прочих свойств.

Описание изобретения к патенту

УРОВЕНЬ ТЕХНИКИ

Переносные, карманные и другие портативные компьютеры или вычислительные устройства выросли в популярности, так как устройства становятся меньшими по габаритам и менее дорогостоящими. Дополнительно, улучшенные быстродействие и вычислительная мощность портативных компьютеров повысили их популярность. Многие портативные компьютеры способны к хранению многочисленных прикладных программ, таких как адресные книги, игры, калькуляторы и тому подобное. Прикладные программы могут навсегда устанавливаться в портативном компьютере во время изготовления (например, в постоянном запоминающем устройстве (ПЗУ, ROM)). В качестве альтернативы, одна или более прикладных программ могут устанавливаться пользователем после покупки портативного компьютера.

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

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

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

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

Даже если используется канал передачи данных с высокой пропускной способностью, по-прежнему может быть нежелательным загружать полный элемент. Например, когда заказчик платит за загрузку элементов на основании количества загруженных байтов, если только небольшое количество данных изменилось в элементе, например флажковом признаке контроля исполнения, отмеченном выше, заказчик по-прежнему должен платить за полный элемент, который должен загружаться. Такая непроизводительная трата денег может служить причиной чувства неудовлетворенности для пользователей.

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

РАСКРЫТИЕ ИЗОБРЕТЕНИЯ

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

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

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

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

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

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

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

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

Фиг.1A иллюстрирует распределенную систему для синхронизации только групп свойств в соответствии с примерными вариантами осуществления;

Фиг.1B иллюстрирует отображение групп свойств для элемента в соответствии с примерными вариантами осуществления;

Фиг.1С иллюстрирует примерный поток элементов синхронизации в соответствии с примерными вариантами осуществления;

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

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

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

ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ

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

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

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

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

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

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

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

В своей наиболее базовой конфигурации вычислительная среда 300 типично включает в себя, по меньшей мере, один процессор 302 (устройство обработки данных) и память 304. Память 304 может быть энергозависимой (такой как ОЗУ (оперативное запоминающее устройство, RAM)), энергонезависимой (такой как ПЗУ (постоянное запоминающее устройство, ROM), флэш-память и т.п.) или некоторым сочетанием этих двух. Эта наиболее базовая конфигурация проиллюстрирована на фиг.3 пунктирной линией 306. В этом описании и в формуле изобретения «вычислительная система» определена в качестве любого аппаратного компонента или комбинации аппаратных компонентов, способных к выполнению программного обеспечения, микропрограммного обеспечения или микрокода для выполнения некоторой функции. Вычислительная система может быть даже распределенной для выполнения распределенной функции.

Запоминающие носители могут иметь дополнительные признаки и функциональные возможности. Например, они могут включать в себя дополнительное запоминающее устройство (съемное или несъемное), в том числе, но не в качестве ограничения, карты PCMCIA (Международной ассоциации производителей карт памяти для персональных компьютеров), магнитные и оптические диски и магнитную ленту. Такое дополнительное запоминающее устройство проиллюстрировано на фиг.3 съемным запоминающим устройством 308 и несъемным запоминающим устройством 310. Компьютерные запоминающие носители включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или технологией для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Память 304, съемное запоминающее устройство 308 и несъемное запоминающее устройство 310, все являются примерами компьютерных запоминающих носителей. Компьютерные запоминающие носители включают в себя, но не в качестве ограничения, ОЗУ, ПЗУ, ЭСППЗУ (электрически стираемое программируемое ПЗУ, EEPROM), флэш-память, другую технологию памяти, CD-ROM (ПЗУ на компакт диске), цифровой многофункциональный диск, другое оптическое запоминающее устройство, магнитные кассеты, магнитную ленту, магнитное дисковое запоминающее устройство, другие магнитные запоминающие устройства и любые другие носители, которые могут использоваться для хранения требуемой информации и которые могут подвергаться доступу вычислительной системой.

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

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

Вычислительная система 300 также может содержать компоненты 314 ввода, такие как клавиатура, мышь, перо, компонент речевого ввода, сенсорное устройство ввода и так далее. Компоненты 316 вывода включают в себя экранные устройства отображения, динамики, принтеры и т.п. и модули воспроизведения (часто называемые «адаптерами») для управления ими. Вычислительная система 300 содержит источник 318 электропитания. Все эти компоненты общеизвестны в данной области техники и не нуждаются в том, чтобы подробно здесь обсуждаться.

Фиг.1A иллюстрирует распределенную систему 100 для синхронизации групп 104 свойств между клиентом 105 и сервером 125 в соответствии с примерными вариантами осуществления. Распределенная система 100 может быть подобна вычислительной системе 300, описанной выше по фиг.3, хотя это не обязано быть именно так. Как показано на фиг.1A, распределенная система 100 включает в себя клиента 105, который может быть одним из некоторого количества вычислительных устройств 110, 115 и т.д. Например, клиент 105 может быть беспроводным устройством, таким как телефон 110, PDA 110, портативный компьютер 115 или любое другое вычислительное устройство.

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

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

Как показано на фиг.1A, сервер 125 включает в себя множество папок 165 (например, папку «А»), при этом каждая папка 165 может представлять или включать в себя определенные типы элементов 170. Например, папка 165 может содержать или включать в себя сообщения элементов электронной почты, при этом другая папка 165 может включать в себя информацию элемента делового контакта. Конечно, как упомянуто ранее, может быть широкое многообразие типов элементов, которые могут синхронизироваться в соответствии с примерными вариантами осуществления, предложенными в материалах настоящей заявки. В дополнение, другие топологии и конфигурации данных, иные, чем папки 165, могут использоваться при осуществлении настоящего изобретения на практике. Например, таблицы или другие способы разделения и сохранения по-разному разных типов элементов 170 также пригодны для настоящего изобретения. Соответственно, любая конкретная топология, формат данных и/или иерархия хранения используются в материалах настоящей заявки только в иллюстративных целях и не подразумеваются для ограничения и сужения иным образом объема настоящего изобретения.

Каждая папка 165, как упомянуто ранее, будет содержать множество элементов 170 (например, элемент «А»). Ассоциативно связанным с каждым элементом 170 является идентификатор 175 (ID) изменения элемента, который, как более подробно описано ниже, может использоваться для идентификации, когда элемент 170 и его свойство были изменены с момента последней синхронизации между сервером 125 и клиентом 105. (Также включенными в каждый элемент 170 являются группы 180 свойств (например, группа «А» свойств)). Как упомянуто ранее, группы 180 свойств предопределены на основании отраслевого опыта и понимания семантики в отношении того, каким образом связаны свойства в пределах каждой из множества групп 180 свойств. Например, группы свойств могут быть определены на основании изменчивости свойств, типичных требований емкости памяти и/или других соображений. Кроме того, группа 180 свойств может включать в себя свойства, которые высоко изменчивы, такие как состояние сообщения, флажковый признак контроля исполнения, флажковый признак приоритета или другие свойства, которые часто модифицируются и/или изменяются.

В качестве альтернативы или в сочетании, группа 180 свойств может определяться на основании относительного размера свойств, когда сравнивается с другими свойствами. Например, вложения типично имеют больший размер, чем другие свойства, а потому могут находиться в одной группе свойств, тогда как меньшие размеры данных, такие как получатели и/или основная часть сообщения, могут находиться в другой группе 180 свойств. Может быть даже группа 180 прочих свойств для тех свойств, которые не очень связаны с другими свойствами.

Отметим, что, хотя группы 180 свойств предопределены на основании текущего отраслевого опыта, такое знание является подвергающимся изменению. Соответственно, варианты осуществления предусматривают, что группы 180 свойств являются расширяемыми, встраиваемыми и масштабируемыми. То есть группы 180 свойств сконфигурированы таким образом, что свойства в пределах каждой группы 180 свойств могут перемещаться, удаляться, добавляться и/или модифицироваться иным образом. Подобным образом сами группы 180 свойств могут переопределяться, создаваться и/или удаляться. В дополнение, определение групп 180 свойств может изменяться в зависимости от типа элемента 170. Например, группы 180 свойств, определенные для элемента 170 электронного письма, могут быть иными, чем группы 180 свойств, определенные для элементов 170 деловых контактов. По существу - как будет более подробно описано ниже - клиенту 105 будет необходимо знать надлежащее отображение 190, которое является используемым для каждого элемента 170 в пределах различных папок 165.

Независимо от того, каким образом определены группы 180 свойств, каждая группа 180 свойств типично будет иметь назначенный вместе с ней ID 185 изменения группы свойств, который может использоваться для идентификации, когда произошли изменения в отношении такой конкретной группы 180 свойств. Например, модуль 150 группы свойств/элемента может контролировать изменения, происходящие в отношении элемента 170, а также для каждой группы 180 свойств в пределах такого элемента 170. В то время как происходят изменения, формирователь 160 ID изменения может изменять ID 175 изменения элемента и соответствующий ID 185 изменения группы свойств.

В некоторых вариантах осуществления ID 175 изменения элемента и ID 185 изменения свойств могут быть одним и тем же идентификатором, например, указывающим, что элемент и группа свойств обновлялись одновременно. Отметим, однако, что это не обязано быть именно так, например, в тех случаях, когда используются глобально универсальные идентификаторы (GUID). Дополнительно должно быть отмечено, что ID 175, 185 изменений могут быть любым общеизвестным алфавитно-цифровым или другим идентифицирующим объектом данных. Например, ID 175, 185 изменений могли бы быть хеш-функцией элемента 170 и/или группы 180 свойств соответственно. Конечно, как упомянуто ранее, идентификаторы 175, 185 изменений могут формироваться на основании простого счетчика GUID. Также отметим, что другие механизмы для идентификации изменений в отношении элементов 170 и групп 180 свойств также пригодны для настоящего изобретения. Соответственно, любой определенный тип идентификатора 175, 185 изменений и/или его использование, как описано в материалах настоящей заявки, предназначены только для иллюстративных целей и не подразумеваются для ограничения или сужения иным образом объема настоящего изобретения, пока не заявлено в прямой форме.

Независимо от типа идентификаторов 175, 185 или того, каким образом идентифицируются изменения в отношении групп свойств, когда модуль 150 свойств/элемента в пределах сервера 125 идентифицирует изменение одного или более элементов 170, уведомление о таком изменении 120 элементов может отправляться на клиента 105 в попытке побудить клиента 105 синхронизироваться с сервером 125. Конечно, другие механизмы для побуждения клиента 105 синхронизироваться с сервером 125 также пригодны для настоящего изобретения. Например, клиент 105 может периодически, то есть с некоторыми предопределенными интервалами, запрашивать сервер 125 для синхронизации с ним. Соответственно, любое определенное инициирование последовательности операций синхронизации между клиентом 105 и сервером 125 в материалах настоящей заявки используется только в иллюстративных целях и не подразумевается для ограничения или сужения иным образом объема настоящего изобретения.

Тем не менее, при инициировании последовательности операций синхронизации сервер 125 должен принимать запрос 130 синхронизации от клиента 105. Примерные варианты осуществления предусматривают, что запрос 130 синхронизации может включать в себя один или более маркеров 135 элемента (например, маркер «А» элемента), которые могут использоваться при определении, произошли ли изменения с момента последней синхронизации между клиентом 105 и сервером 125. Перед обсуждением маркера 135 элемента более подробно отметим, что маркерам 135 элементов не обязательно нужно включаться в запрос 130 синхронизации. Например, другие механизмы обмена с квитированием могут иным образом побуждать клиента 105 отправлять маркеры 135 элементов на сервер 125. В качестве альтернативы, маркеры 135 элементов уже могут храниться на сервере 125. Соответственно, включение маркеров 135 элементов в пределы запроса 130 синхронизации в материалах настоящей заявки используется только в иллюстративных целях и не подразумевается для ограничения или сужения иным образом объема настоящего изобретения, пока не заявлено в прямой форме.

Ассоциативно связанным с каждым маркером 135 элемента является ID 140 изменения элемента. Для каждого ID 140 изменения элемента или маркера 135 элемента также есть множество ID 145 изменений группы свойств (например, ID изменений группы «А» свойств). ID 140 изменения элемента и ID 145 изменений группы свойств представляют те идентификаторы, которые ассоциативно связывались с элементами 170 и соответствующими группами 180 свойств в течение последней синхронизации между клиентом 105 и сервером 125. Другими словами, маркеры 135 элементов могли быть оставлены клиенту 105 в качестве большого двоичного объекта данных, которые должны сохраняться во время последней синхронизации с сервером 125. Этот большой двоичный объект данных 135 затем может использоваться блоком 155 сравнения идентификаторов изменения при определении тех элементов 170, а более точно, тех групп 180 свойств в пределах каждого элемента 170, которые изменились с момента последней синхронизации.

Например, каждый маркер 135 элемента может сравниваться с каждым элементом 170. Более точно, ID 175, 140 изменений и ID 185, 145 групп свойств в обоих, маркерах 135 элементов и фактических элементах 170, могут сравниваться с использованием блока 155 сравнения идентификаторов изменений. Если значения отличаются, то есть ID 140 изменения элемента и ID 145 группы свойств для маркера 135 элемента не соответствуют ID 175 изменения элемента и ID 185 группы свойств, то произошло изменение в элементе 170 и группах 180 свойств. Как отмечено ранее, хотя ID изменений для маркеров 135 элементов сравниваются с элементами 170 и группами 180 свойств на сервере 125 при определении, когда элементы 170 и группы 180 свойств изменились с момента последней синхронизации, другие способы определения, когда или произошли ли изменения в отношении элементов 170 и групп 180 свойств, также пригодны для настоящего изобретения. Например, сервер 125 может хранить всю из информации, необходимой для определения, какие изменения необходимы на стороне 105 клиента, без потребности в ID 140, 145, 175, 185 изменений. Соответственно, определенное использование ID 140, 145, 175, 185 изменений, как описано в материалах настоящей заявки, предназначено только для иллюстративных целей и не подразумевается для ограничения или сужения иным образом объема настоящего изобретения, пока не заявлено в прямой форме.

Независимо от того, каким образом идентифицируются группы 104 свойств, которые изменились, такие измененные группы 104 свойств могут быть включены в поток 102 элементов синхронизации, который затем может отправляться на клиента 105 в соответствии с примерными вариантами осуществления, описанными ниже в материалах настоящей заявки. Кроме того, как упомянуто ранее, отображение 190, идентифицированное специальным ID 195 контроля версий, также может отправляться до, во время или после потока 102 элементов синхронизации. Как также будет обсуждено более подробно ниже, группы 104 свойств в потоке 102 элементов синхронизации должны идентифицировать конкретную версию 195 отображения 190, используемую для такой группы 104 свойств.

Фиг.1B иллюстрирует примерную структурную схему отображения 190 для конкретного идентификатора 195 версии. Как показано, отображение 190 включает в себя множество элементов 106 и группы 108, 114 свойств для каждого элемента 106. Конечно, может быть любое количество групп 108, 114 свойств, которые могут идентифицироваться в пределах любого конкретного элемента 106. Кроме того, свойства 112, 116 также отображаются для каждой конкретной группы 108, 114 свойств. Например, группа «А» 108 свойств может включать в себя свойства 112 «C» и «E», тогда как группа «B» 114 свойств может включать в себя свойство «А» 116.

Рассмотрим пример, в котором отображение 190 идентифицирует элемент 106 электронной почты в группе «А» 108 свойств для относительно небольших изменчивых информационных свойств, тогда как отображение для группы «B» 114 свойств включает в себя более крупные свойства. По существу, свойство «С» 112 и свойство «E» 112 в пределах группы «А» 108 свойств могут быть флажковым признаком контроля исполнения и флажковым признаком приоритета соответственно. С другой стороны, свойство «А» 116 для группы «B» 114 свойств может быть файлами вложений. Конечно, другие общеизвестные способы обеспечения отображений 190 также пригодны для настоящего изобретения. Соответственно, конфигурация отображения, предусмотренная на фиг.1B, в материалах настоящей заявки используется только в иллюстративных целях и не подразумевается для ограничения или сужения иным образом объема настоящего изобретения, пока не заявлено в прямой форме.

Отметим, что текущее и предыдущее отображения 190 группы свойств могут постоянно храниться в базе данных сервера и могут подвергаться доступу по ID 195 версии. Если встречается элемент 170, который имеет идентификатор 195 версии, который не известен, или не имеет идентификатора группы, он должен обрабатываться, как если бы он не имел никаких группировок 180 свойств, и должен обрабатываться как целое. Соответственно, если элементу 170, подобному этим, необходимо загружаться на клиента 105, полный элемент 170 подвергается потоковой передаче 102.

Один из вариантов осуществления предусматривает синхронизацию через механизм потоковой передачи, в материалах настоящей заявки указанный ссылкой как быстрая передача. Такая последовательность операций предоставляет серверу 125 возможность отвечать на запрос 130 синхронизации разбиением измененных групп 104 свойств и преобразованием их в последовательную форму, в необработанный поток двоичных данных. Сервер 125 упаковывает столько из сообщения 102, сколько он может, в буфер ответа фиксированного размера и возвращает данные 102 клиенту 105. Клиент 105 затем синтаксически анализирует данные и повторно выстраивает группы 104 свойств посредством преобразования из последовательной формы байтового потока 102. Примерный формат байтового потока 102 показан ниже на фиг.1С, которая иллюстрирует пример потока 102 элементов синхронизации, то есть представление данных проводной передачи (или беспроводной передачи) того, на что может быть похож поток 102 элементов синхронизации.

Первой частью потока 102 элементов синхронизации является IncrSyncProgressItem 118, который добавлен в начало потока 102 для предоставления информации о полном размере всех элементов, которые последуют в ответном потоке 102. Затем IncrSyncProgressPerItem 122 указывает полный размер следующего элемента в потоке 102 элементов синхронизации. Следующая группировка 124 в потоке 102 синхронизации является отображением, как указано меткой IncrSyncPropGroupMap, которое указывает клиенту 105, какое отображение группы свойств использует следующий элемент или элементы в потоке 102. Соответственно, различные группы 180 свойств могут идентифицироваться с использованием метки IncrSyncPropGroup и массива или списка ID свойств в пределах каждой группы 180 свойств. Другими словами, поток 102 элементов синхронизации может включать в себя отображение 190 или группу отображений 190 для различных ID 195 версий, как описано в материалах настоящей заявки. Отметим, однако, как описано ранее, отображения 190 не обязательно должны включаться в пределы потока 102 элементов синхронизации, но могут следовать за или идти впереди потока 102 синхронизации.

Следующий набор тегов 126, то есть ID IncrSynPropGroup, обозначает, какое отображение группы свойств использует следующий элемент или элементы в потоке. То есть ID версий в пределах этой группы 126 идентифицирует идентификатор 195 версии отображения 190 для следующего элемента. Затем IncrSnyChgItem 128 является меткой для обозначения начала измененного элемента, которая будет сопровождаться массивом групп свойств, которые должны быть изменены в пределах элемента. Например, как показано метками в IncrSnyChgPropGroup 132, могут идентифицироваться различные группы свойств, которые были изменены. Например, как показано в потоке 134, IncrSnyChgPropGroup изменяет свойства получателя, прежде всего, приобретением элемента DelProp, который удаляет текущие ItemRecipients, а затем замещает свойства получателя с использованием меток StartRecip и EndRecip. В качестве еще одного примера элементы в потоке 136 включают в себя IncrSyncChgPropGroup для вложений элемента, так что текущие ItemAttachments будут удаляться с использованием DelProp и замещаться с использованием меток NewAttach и EndAttach. Конечно, другие группы свойств могут быть включены в поток, как указано эллипсами, предусмотренными ниже.

Другие примерные варианты осуществления предусматривают комбинирование существующих способов синхронизации элементов с текущими вариантами осуществления, предусмотренными в материалах настоящей заявки. Например, в унаследованных системах, где не предусмотрено никакого отображения, полный элемент может загружаться в потоке 102 элементов синхронизации. Например, как показано в элементах 138, IncrSyncProgressPerItem указывает полный размер следующего элемента, а IncrSyncChgItem отмечает начало изменения элемента. Следующие метки, то есть метки 142 для IncrSyncDel, IncrSyncRead и IncrSyncEnd, обозначают следующее: (1) список элементов, которые должны удаляться с клиента 105; (2) переход в состояние прочтения, как изложено ниже; и (3) метку, которая обозначает окончание сеанса синхронизации, соответственно. В заключение, IncrSyncStateBegin обозначает, что заключительное состояние синхронизации следует в байтовом потоке, а IncrySyncStateEnd является меткой, которая обозначает, что состояние синхронизации является завершенным.

Настоящее изобретение также может быть описано с точки зрения способов, содержащих функциональные этапы и/или нефункциональные действия. Последующее является описанием этапов и/или действий, которые могут выполняться при осуществлении настоящего изобретения на практике. Обычно функциональные этапы описывают изобретение с точки зрения результатов, которые достигнуты, тогда как нефункциональные действия описывают более точные действия для достижения конкретного результата. Хотя функциональные этапы и/или нефункциональные действия могут быть описаны или заявлены в конкретном порядке, настоящее изобретение необязательно ограничено каким бы то ни было конкретным упорядочением или комбинацией этапов и/или действий. Кроме того, использование этапов и/или действий является перечислением пунктов формулы изобретения и в последующем описании блок-схем последовательностей операций способов по фиг.2A и 2B используется для указания требуемого специального использования таких терминов.

Фиг.2A и 2B иллюстрируют блок-схемы последовательностей операций способов для различных примерных вариантов осуществления настоящего изобретения. Последующее описание по фиг.2A и 2B иногда будет указывать ссылкой на соответствующие элементы по фиг.1A-C. Хотя ссылка может делаться на определенный элемент из этих фигур, такие элементы в материалах настоящей заявки используются только в иллюстративных целях и не подразумеваются для ограничения или сужения иным образом объема настоящего изобретения, пока не заявлено в прямой форме.

Фиг.2A иллюстрирует блок-схему последовательности операций для способа 200 повышения скоростей синхронизации между клиентом и сервером посредством синхронизации только выбранных частей элемента, который изменился, без контроля изменения каждого отдельного свойства в пределах элемента. Способ 200 включает в себя действие по приему 205 запроса на синхронизацию элементов данных. Например, сервер 125 может принимать запрос 130 синхронизации на синхронизацию элементов 170 данных, которые изменились с момента последней синхронизации между сервером 125 и клиентом 105, при этом элементы 170 данных представляют полные сообщения с различными свойствами, которые могут быть модифицированы или изменены иным образом. Например, элемент 170 данных может быть сообщением электронной почты, деловым контактом, уведомлением о встрече, информацией календаря, заданием, записками-наклейками и т.п. Свойства могут включать в себя получателей, адреса, основные части, вложения, флажковые признаки, идентификаторы состояний или любые другие бесчисленные свойства для сообщения. Также отметим, что канал передачи данных между сервером 125 и клиентом 105 для синхронизации элементов 170 данных может быть беспроводным соединением или проводным соединением, при этом потребитель на клиенте 105 платит за синхронизацию элементов 170 данных на основании количества байтов, загруженных с сервера 125.

Способ 200 также включает в себя этап для сокращения 225 времени передачи данных между клиентом и сервером. Более точно, этап для 225 включает в себя действие по определению 210, что элемент данных изменился с момента последней синхронизации. Например, сервер 125 может определять (с использованием блока 155 сравнения ID изменений или других способов, описанных в материалах настоящей заявки), что элемент 170 данных изменился с момента последней синхронизации между клиентом 105 и сервером 125. Как упомянуто ранее, элементы 170 данных включают в себя группы 180 свойств, которые предопределены на основании отраслевого опыта и понимания семантики в отношении того, каким образом связаны одно или более свойств в пределах каждой из групп свойств. Например, в сообщении электронной почты различные группы свойств могут включать в себя свойство основной части, группу свойств получателя, группу свойств темы, группу свойств вложений, группу свойств флажкового признака приоритета, группу свойств состояния прочтения, группу прочих свойств и/или любое их сочетание. Конечно, другие группы свойств могут быть определены и являются расширяемыми, встраиваемыми и масштабируемыми из условия, чтобы свойства в пределах групп свойств могли добавляться, удаляться или переопределяться в ней иным образом, и из условия, чтобы каждая из групп свойств могла добавляться, удаляться или переопределяться иным образом на основании изменений в отраслевом опыте.

Этап для 225 также включает в себя и действие по определению 215, какая группа свойств в пределах элемента данных изменилась с момента последней синхронизации. Например, модуль 150 группы свойств/элемента и блок 155 сравнения ID изменений могут использоваться для определения, какие группы 180 свойств изменились с момента последней синхронизации. Соответственно, этап для 225 включает в себя действие синхронизации 220 измененной группы или групп без потоковой передачи полного элемента данных. В частности, поток 102 элементов синхронизации может подвергаться потоковой передаче на клиента 105 с различными группами 104 свойств, которые изменились с момента последней синхронизации, без потоковой передачи полного элемента 170 данных для того, чтобы сократить время передачи данных между клиентом и сервером при синхронизации.

Определение изменения в элементе 170 данных, а также группы 180 свойств может быть основано на идентификаторах 140, 145, 175, 185 изменений для элемента данных и группы свойств. Кроме того, идентификаторы 140, 145, 175, 185 изменений для элемента 170 данных и групп 180 свойств могут быть одними и теми же. Кроме того, идентификаторы 140, 145, 175, 185 изменений для элемента 170 данных и групп 180 свойств могут быть алфавитно-цифровым индексом, глобально уникальным идентификатором или значением хеш-функции.

Другие варианты осуществления предусматривают отображение 190 элемента 170 данных и группы 180 свойств в нем. Отображение может отправляться до, во время или после отправки потока элементов синхронизации групп 104 свойств, которые изменились. В любом случае клиент 105 может использовать отображение 190, чтобы узнавать, какие свойства включены в каждую из групп 180 свойств. Более того, второй элемент 170 данных может определяться изменившимся, но не имеющим группы 180 свойств. В таком случае полный второй элемент 170 данных может подвергаться потоковой передаче на клиента 105.

Фиг.2B иллюстрирует блок-схему последовательности операций для способа 250 отслеживания изменений в отношении выбранных частей элемента для повышения скоростей синхронизации между клиентом и сервером, без контроля изменения каждого отдельного свойства в пределах элемента. Способ 250 включает в себя действие по контролю 255 множества элементов данных для целей синхронизации. Например, модуль 150 группы свойств/элемента или другие компоненты могут контролировать элементы 170 данных, при этом элементы 170 данных представляют полное сообщение с множеством свойств, которые могут модифицироваться или изменяться иным образом. Такие свойства включают в себя, но не в качестве ограничения, таковые, описанные ранее в материалах настоящей заявки, например вложения, флажковые признаки, основные части и т.п.

Способ 250 также включает в себя действие по определению 260, что элемент данных изменился с момента последней синхронизации между клиентом и сервером. Например, блок 155 сравнения идентификаторов изменений может использоваться для определения, что элемент 170 данных изменился с момента последней синхронизации между сервером 125 и клиентом 105. Как упомянуто ранее, элемент данных включает в себя множество групп 180 свойств, которые предопределены на основании отраслевого опыта и понимания семантики в отношении того, каким образом связаны свойства в пределах каждой из групп свойств. На основании определения, что элемент данных изменился, способ 250 дополнительно включает в себя действие по обновлению 265 идентификатора изменения элемента. Например, формирователь 160 идентификаторов изменений может использоваться для обновления ID 175 изменения элемента, ассоциативно связанного с элементом 170 данных, который будет использоваться для идентификации, что элемент 170 данных изменился, для синхронизации с клиентом 105.

Подобным образом, способ 250 включает в себя действие по определению 270, какая группа свойств изменилась в пределах элемента данных. То есть блок 155 сравнения идентификаторов изменений в модуле 150 группы свойств/элемента может использоваться для определения, какие группы 180 свойств изменились с момента последней синхронизации между клиентом 105 и сервером 125. На основании определения, что группа свойств изменилась, способ 250 включает в себя действие по обновлению 275 идентификатора изменения группы свойств. Например, формирователь 160 идентификаторов изменений может использоваться для обновления ID 185 изменения для группы 180 свойств, который будет использоваться для идентификации, что группа 180 свойств изменилась, так что только группа 180 свойств будет синхронизироваться с клиентом 105 для того, чтобы сократить время передачи данных между клиентом 105 и сервером 125. Отметим также, что другие альтернативные варианты осуществления, описанные выше, также пригодны для способа 250.

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

Класс G06F7/02 сравнение цифровых данных

устройство сравнения двоичных чисел -  патент 2507564 (20.02.2014)
устройство сравнения двоичных чисел -  патент 2504825 (20.01.2014)
устройство для сравнения чисел, представленных в системе остаточных классов -  патент 2503992 (10.01.2014)
способ пространственно-временной коммутации -  патент 2458383 (10.08.2012)
система и способ сравнения файлов на основе шаблонов функциональности -  патент 2427890 (27.08.2011)
устройство сравнения двоичных чисел -  патент 2420789 (10.06.2011)
компаратор двоичных чисел -  патент 2393526 (27.06.2010)
компаратор двоичных чисел -  патент 2389063 (10.05.2010)
селектор двоичных чисел -  патент 2365975 (27.08.2009)
устройство для оценки и сравнения эффективности функционирования однотипных организаций -  патент 2363042 (27.07.2009)
Наверх