Содействуемая обслуживающим узлом и одноранговая синхронизация

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обратимся теперь к фиг.1; показана иллюстративная система 100, в которой данные могут быть синхронизированы и совместно использованы и в централизованной, и в одноранговой топологиях. Иллюстративная система 100 содержит конечную точку 110 обслуживающего узла, конечную точку A 160 устройства, конечную точку B 170 устройства и конечную точку C 180 устройства. Иллюстративная конечная точка 110 обслуживающего узла показана как содержащая службу 120 хранения, службу 125 поиска большого двоичного объекта, службу 130 кэширования большого двоичного объекта, службу 135 облачного хранения, службу 140 уведомлений, модуль 145 хранения знаний и модуль 150 загрузки большого двоичного объекта. Иллюстративная конечная точка А 160 устройства показана как содержащая модуль 162 загрузки большого двоичного объекта. Это описание для фиг.1 может быть сделано со ссылкой на другие чертежи. Однако нужно понимать, что элементы, описываемые со ссылкой на фиг.1, не предполагают ограничения в отношении использования элементами, описываемыми со ссылкой на другие чертежи. В дополнение, в то время как иллюстративная схема на фиг.1 указывает конкретные элементы, в некоторых реализациях могут иметься не все из этих элементов, а в некоторых реализациях могут иметься дополнительные элементы.

В большинстве случаев и, по меньшей мере, в некоторых реализациях данные могут быть синхронизированы между любыми двумя или более конечными точками. Например, но без ограничения, как продемонстрировано на фиг.1, данные могли бы быть синхронизированы между конечной точкой A 160 устройства и конечной точкой 110 обслуживающего узла. Затем те же или другие данные могли бы быть синхронизированы между конечной точкой обслуживающего узла и конечной точкой B 170 устройства. Затем конечная точка B устройства могла бы, в свою очередь, в некоторых случаях синхронизировать данные с конечной точкой C 180 устройства. В некоторых реализациях конкретные конечные точки могут быть синхронизированы только с конкретными другими конечными точками, тогда как в других реализациях конечные точки могут быть синхронизированы с целым рядом конечных точек, в том числе в некоторых реализациях со всеми другими конечными точками.

В то время как существует и может использоваться широкое разнообразие методов синхронизации, по меньшей мере, в некоторых реализациях, по меньшей мере, некоторые данные могут быть синхронизированы между конечными точками, используя такой метод как Расширение Простого Совместного Использования (SSE - Simple Sharing Extensions). SSE в целом может описываться как охватывающие форматы данных и способы обработки для совместного использования и синхронизации данных между конечными точками с использованием добавления (относительно) простых данных к документу подачи, такому как RSS-документ ("Really Simple Syndication" - очень простое приобретение информации или "Rich Site Summary" - обогащенная сводка узла), или Atom-документ. В некоторых случаях подача, которая включает в себя SSE-информацию, может упоминаться как "SSE-подача".

В случае таких реализаций или, по меньшей мере, некоторых других реализаций конечные точки могут сделать данные доступными другим конечным точкам для синхронизации, предоставляя документ подачи, который включает в себя и SSE-информацию, и, по меньшей мере, часть синхронизируемых данных. Конечная точка, на которой синхронизируют информацию, могла бы получать документ подачи и интерпретировать его содержимое, используя, наряду с другими методами, SSE-способы обработки для объединения информации из подач с информацией в одном или более хранилищах данных. В рамках этого процесса конечная точка, на которой синхронизируют информацию, может, в общем случае, обновлять свою собственную копию или версию синхронизируемых данных, и таким образом выполнять синхронизацию данных от первой конечной точки ко второй конечной точке. В качестве только одного отдельного примера конечная точка A 160 устройства могла бы создавать RSS-подачу, которая включает в себя SSE-информацию, доступную конечной точке 110 обслуживающего узла, чтобы информация, поддерживаемая конечной точкой A устройства или доступная ей, могла быть синхронизирована на конечной точке обслуживающего узла. Конечная точка обслуживающего узла могла бы получать подачу и объединять содержимое подачи, возможно используя "SSE-объединение", с данными, поддерживаемыми конечной точкой обслуживающего узла. После такого объединения, по меньшей мере, некоторая часть данных, предоставленных конечной точкой A устройства, может быть введена в состав данных, поддерживаемых конечной точкой обслуживающего узла. Кроме того, дополнительные изменения в данных, сделанные на конечной точке A устройства, тоже могут аналогично быть синхронизированы на конечной точке обслуживающего узла: дополнительное изменение может быть сделано на конечной точке A устройства, конечная точка A устройства может обновить свою предоставляемую подачу, чтобы включить в него это дополнительное изменение, а затем конечная точка обслуживающего узла может обработать обновленную подачу и внести это дополнительное изменение.

Предыдущее объяснение описывает, как данные и изменения могут быть синхронизированы в одном направлении: от первой конечной точки ко второй конечной точке. Ряд методов синхронизации, включающих в себя SSE, также позволяют синхронизировать изменения в "другом направлении", а именно от второй конечной точки в этом примере к первой конечной точке. Например, при использовании SSE, как в предыдущем примере с конечной точкой A 160 устройства и конечной точкой 110 обслуживающего узла, конечная точка обслуживающего узла также могла бы сделать доступной свою собственную SSE-подачу, которая (изначально, по меньшей мере) включает в себя ту же самую информацию, предоставленную конечной точкой A устройства. После этого, когда некоторая часть информации, охваченной подачей, обновлена на конечной точке обслуживающего узла, конечная точка обслуживающего узла может, в свою очередь, обновить свою собственную подачу, чтобы включить в нее и изменение или обновленные данные, и соответствующие обновления для SSE-информации в подаче. Другая конечная точка, которая синхронизирует эту информацию от конечной точки обслуживающего узла, в том числе конечная точка A устройства, может затем получить подачу и объединить изменения (скажем, выполняя такую же или подобную обработку объединения, как выполняемая конечной точкой обслуживающего узла для внесения изменений от конечной точки A устройства). Итак, при использовании некоторых методов синхронизации две конечных точки могут синхронизировать одни и те же данные друг с другом, например, чтобы каждая могла делать изменения в данных, посредством того, что каждая делает данные доступными, и того, что каждая обновляет свои собственные локальные данные, когда данные, предоставляемые другой конечной точкой, изменяются.

Кроме того, множественные конечные точки могут иметь возможность синхронизироваться с единственной (или множественными) конечными точками, используя методы, такие как описанные, при помощи, по меньшей мере, некоторых методов синхронизации, включающих в себя SSE. Например, конечная точка B 170 устройства могла бы синхронизировать те же (или какие-либо другие) данные, которые синхронизированы между конечной точкой A 160 устройства и конечной точкой 110 обслуживающего узла. При использовании SSE-подач конечная точка устройства могла бы синхронизировать те же самые данные, выбирая подачу, предоставляемую конечной точкой обслуживающего узла, включающую в себя в некоторых случаях ту же самая подачу, которая извлечена конечной точкой A устройства, и введение данных или изменений, представленные подачей. Конечная точка B устройства могла бы также сделать подачу доступной конечной точке обслуживающего узла, чтобы конечная точка обслуживающего узла могла включать в себя изменения, сделанные в данных конечной точкой B устройства.

В то время как в некоторых случаях данные могут быть синхронизированы между устройствами через другую конечную точку, как, например, в предыдущем иллюстративном описании, когда изменения, сделанные конечной точкой A 160 устройства, могли быть синхронизированы на конечной точке B 170 устройства через конечную точку 110 обслуживающего узла, по меньшей мере, в некоторых случаях и при использовании, по меньшей мере, конкретных методов синхронизации также может быть применима другая топология синхронизации. Например, в некоторых случаях метод или протокол синхронизации, включающий в себя SSE, может обеспечить возможность синхронизации и через централизованный обслуживающий узел, скажем, подобный конечной точке 110 обслуживающего узла, и напрямую с другими конечными точками. Например, конечная точка A устройства в некоторых реализациях может быть способна синхронизировать данные на конечной точке B устройства или посредством синхронизации через конечную точку 110 обслуживающего узла, или посредством синхронизации напрямую с конечной точкой B устройства (как показано пунктирной линией на фиг.1 между конечной точкой A устройства и конечной точкой B устройства). В тех же или в других реализациях конечная точка B устройства могла бы синхронизировать данные напрямую с конечной точкой C 180 устройства. Например, такие прямые синхронизации могли бы быть реализованы между конечной точкой A устройства и конечной точкой B устройства, или между конечной точкой B устройства и конечной точкой C устройства, при помощи обмена документов SSE-подачи и объединения данных, содержащихся в обменянных подачах. Кроме того, в некоторых реализациях может даже не требоваться существование конечной точки обслуживающего узла. Например, в некоторых реализациях метаданные и данные большого двоичного объекта могут в некоторых случаях быть переданы напрямую между конечными точками устройств, которые знают о местонахождении других конечных точек устройств, без вмешательства или содействия, обеспечиваемого одной или более конечными точками обслуживающего узла.

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

Синхронизируемые данные могут быть представлены самыми разными способами. В некоторых реализациях такие данные могут быть включены в состав информации, которая синхронизируется между конечными точками, включающей в себя информацию, синхронизируемую поэтапно, как описано выше. Например, в реализациях, которые используют SSE, такие данные могут быть включены в SSE-подачи, обмен которыми происходит между конечными точками. Однако в тех же или других реализациях информация, передаваемая между конечными точками, может не включать в себя все данные, которые могут, в конечном счете, быть синхронизированы или передаваться между конечными точками. В некоторых из таких случаев информация, передаваемая между конечными точками, может вместо этого или в дополнение к этому включать в себя ссылки на другие данные, которые нужно синхронизировать. Такие ссылки могут быть предоставлены по-разному, например, скажем, с помощью "вложенных" элементов в RSS- или Atom-подачах, которые включают в себя URL (Uniform Resource Locator - унифицированный локатор ресурса) этих снабженных ссылками ресурсов. Тогда данные, идентифицируемые этими ссылками, могут быть доступны или их можно хранить, используя различные средства.

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

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

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

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

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

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

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

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

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

Иллюстративная служба 120 хранения в большинстве случаев может хранить метаданные и обеспечивать для других конечных точек возможность синхронизировать метаданные с конечной точкой 110 обслуживающего узла. Иллюстративная конечная точка A 160 устройства могла бы, например, сделать локальное изменение и обновить метаданные, которые она поддерживает, так чтобы метаданные включали в себя это изменение, а затем передать обновленные метаданные службе хранения. После этого служба хранения могла бы объединить изменения в метаданных, переданных от конечной точки A устройства, с некоторым представлением тех же самых метаданных, которое управляется службой хранения. Затем служба хранения могла бы сделать свои объединенные или обновленные метаданные доступными другим конечным точкам (которые могли бы, в свою очередь, позволить другим конечным точкам извлечь метаданные, предоставленные службой хранения, а затем внести изменение, сделанное первоначально конечной точкой A устройства). Служба хранения может хранить и предоставлять множественные отдельные фрагменты метаданных, такие как множественные SSE-подачи, по меньшей мере, в некоторых реализациях, и каждый фрагмент метаданных может идентифицировать разные (или одни и те же) наборы данных. По меньшей мере, некоторые из операций, которые могли бы выполняться иллюстративной службой 120 хранения, могут быть описаны подробнее ниже, главным образом со ссылкой на фиг.5.

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

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

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

Идентификатор большого двоичного объекта мог бы реализовываться по-разному и принимать ряд форм. По меньшей мере, в одной реализации идентификатор большого двоичного объекта мог бы быть всего лишь строкой или набором буквенно-цифровых или других символов, например, чем-то подобным "ABC123", "ABCDEFGH", "123456", и так далее. В другой реализации идентификатор большого двоичного объекта мог бы принимать форму, например, унифицированного указателя ресурса (URL) или унифицированного идентификатора ресурса (URI - Uniform Resource Identifier), скажем, такую как "http://www.els.live.com/ABC123", "http://www.els.live.com/ABCDEFGH", "http://www.els.live.com/123456", и так далее. В означенном примере строка, следующая за частью "http://www.els.live.com/" идентификатора, может фактически идентифицировать большой двоичный объект. В некоторых случаях часть "http://www.els.live.com/" идентификатора может использоваться для ряда других целей, в том числе, скажем, чтобы представить идентификатор большого двоичного объекта в виде, более похожем на идентификатор, с которым мог бы быть знаком пользователь, или даже действительно указывать местонахождение большого двоичного объекта, по меньшей мере, в некоторых конкретных случаях, входящих в состав иллюстративной реализации, описываемой ниже, главным образом со ссылкой на фиг.9.

Иллюстративная служба 130 кэширования большого двоичного объекта может предоставить ячейку хранения для кратковременных больших двоичных объектов или файлов. Такая ячейка может в некоторых случаях помочь при пересылке больших двоичных объектов между конечными точками. Например, предположим, что конечная точка A 160 устройства синхронизирует метаданные с конечной точкой 110 обслуживающего узла, и означенные метаданные идентифицируют большой двоичный объект, который доступен из конечной точки A устройства. Также предположим, что большой двоичный объект не передан на конечную точку обслуживающего узла, вместо этого он остается, доступный для извлечения, на конечной точке A устройства. Затем предположим, что конечная точка A устройства действует в автономном режиме или становится недоступной для одной или обеих из точек: конечной точки обслуживающего узла и конечной точки B устройства 170. Далее, если конечная точка B устройства синхронизирует метаданные от конечной точки обслуживающего узла и определяет, что требуется извлечь большой двоичный объект из конечной точки A устройства, она может не иметь возможности сделать это, поскольку конечная точка A устройства, которая может обладать единственной копией большого двоичного объекта, находится не в сети или недоступна. Такая проблема может быть разрешена разнообразными средствами, в том числе с помощью службы кэширования большого двоичного объекта. В одной такой реализации большой двоичный объект, ассоциированный с метаданными, предоставленными конечной точкой A устройства, может храниться в службе кэширования большого двоичного объекта до того, как конечная точка A устройства станет недоступной, и тогда конечная точка B устройства может извлечь большой двоичный объект из службы кэширования большого двоичного объекта вместо конечной точки A устройства.

Как кэш-память, иллюстративная служба кэширования большого двоичного объекта может хранить большой двоичный объект как кратковременные данные. То есть в отличие, скажем, от службы 135 облачного хранения, описываемой ниже, большие двоичные объекты, хранимые службой кэширования большого двоичного объекта, могут храниться только в течение ограниченного периода времени и могут быть удалены в разное время, что контролируется в некоторых случаях самой службой кэширования большого двоичного объекта или каким-либо другим модулем или службой. Например, в некоторых реализациях служба кэширования большого двоичного объекта могла бы использовать один или более алгоритмов кэширования для определения, когда удалять большие двоичные объекты или заменять хранящиеся в настоящее время большие двоичные объекты новыми большими двоичными объектами. Например, по меньшей мере, в одной реализации служба кэширования большого двоичного объекта могла бы сначала заполнять или занимать свою доступную область хранения, а затем, когда нужно хранить новый большой двоичный объект, могла бы использовать алгоритм, например алгоритм "удаления наиболее давно использовавшихся элементов" (или LRU - least recently used), чтобы найти и удалить один или более больших двоичных объектов, которые давно не использовались, и тем самым сделать область доступной для данных нового большого двоичного объекта. По меньшей мере, в некоторых случаях реализация функциональных средств, ассоциированных со службой кэширования большого двоичного объекта, может потребовать меньше денежных, операционных или других ресурсов, чем реализация функциональных средств, ассоциированных с длительным хранением, в том числе, скажем, службы 135 облачного хранения, описываемой ниже. Например, вследствие того, что информация, ассоциированная со службой кэширования большого двоичного объекта, не может гарантированно храниться достоверно или неограниченно, служба кэширования большого двоичного объекта может не требовать того же уровня или типов избыточных функциональных средств хранения данных, которые могли бы потребоваться при хранении, предназначенном для удерживания, по меньшей мере, некоторых других долговременных данных.

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

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

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

Конечная точка, которая синхронизирует конкретные метаданные, в большинстве случаев может нуждаться в знаниях о том, когда такие метаданные были обновлены на одной или более других конечных точках, для того чтобы, например, эта конечная точка могла обновить свою собственную копию метаданных, а также, возможно, извлечь любые искомые данные большого двоичного объекта. В одной, иногда неэффективной, реализации конечная точка могла бы "опрашивать" или периодически проверять один или более других доступных фрагментов метаданных, в том числе, скажем, предоставленные конечной точкой 110 обслуживающего узла, и определять, что имеются изменения для синхронизации, если эти другие метаданные изменены. В качестве альтернативы, конечная точка могла бы использовать функциональные средства, предоставляемые иллюстративной службой 140 уведомлений. Служба уведомлений могла бы предоставить конечным точкам возможность регистрироваться или обозначать интерес в конкретных метаданных, а затем могла бы предоставлять уведомления заинтересованным или зарегистрированным конечным точкам при изменении конкретных метаданных. В результате, конечная точка может иметь возможность избежать опрашивания изменений или, по меньшей мере, может производить опрашивание реже, но оставаться способной предпринять какое-нибудь действие при изменении метаданных. Уведомления могут быть реализованы по-разному, в том числе при помощи двухточечных или широковещательных функциональных средств, предоставляемых разнообразными сетевыми механизмами или другими механизмами связи. В тех же или других реализациях иллюстративный модуль уведомлений мог бы также предоставлять уведомления о других событиях помимо изменений в метаданных. Например, в некоторых реализациях модуль уведомлений мог бы периодически предоставлять конечным точкам уведомления, которые включают в себя информацию об обновленных или измененных указателях (такие указатели могли бы управляться иллюстративной службой поиска большого двоичного объекта). Использование обновленных указателей при извлечении больших двоичных объектов может позволить конечной точке изменить свой способ извлечения больших двоичных объектов и, тем самым, возможно, извлекать большие двоичные объекты более эффективно, адаптироваться к изменению сетевых или других условий, и так далее.

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

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

В заключение, иллюстративный модуль загрузки большого двоичного объекта, такой как модуль 150 загрузки большого двоичного объекта, который является частью конечной точки 110 обслуживающего узла, или модуль 162 загрузки большого двоичного объекта, который является частью конечной точки A 160 устройства, может в некоторых случаях загружать или извлекать большие двоичные объекты из ряда других местонахождений, в том числе из других конечных точек. В общем случае модуль загрузки большого двоичного объекта может использовать один или более механизмов извлечения большого двоичного объекта для извлечения некоторой части большого двоичного объекта или всего большого двоичного объекта, причем "механизм извлечения большого двоичного объекта" может предписывать, например, один или более способов, которыми может быть определено местоположение большого двоичного объекта, и/или один или более способов, которыми может быть извлечен большой двоичный объект. Один, возможно относительно простой, модуль загрузки большого двоичного объекта может быть способен только извлекать большие двоичные объекты, используя, например, единственный механизм извлечения большого двоичного объекта, который использует такой протокол как HTTP (протокол передачи гипертекстовых файлов), FTP (протокол передачи файлов) или один из ряда других протоколов коллективного доступа к файлам. Другой модуль загрузки большого двоичного объекта мог бы быть способен извлекать файл, используя любой из таких механизмов извлечения большого двоичного объекта, а также других механизмов извлечения большого двоичного объекта. Например, некоторые модули загрузки большого двоичного объекта могли бы быть способны использовать механизмы, которые могут извлекать фрагменты одного и того же большого двоичного объекта из ряда конечных точек, "одновременно" такие, как механизмы, описываемые протоколом, подобным протоколу BitTorrent. Те же или другие модули загрузки большого двоичного объекта могут также использовать другие функциональные средства для более эффективного извлечения больших двоичных объектов, такие, например, как "дифференциальное сжатие", при котором передают только части большого двоичного объекта, которые были изменены, чтобы не было необходимости передавать весь большой двоичный объект каждый раз при изменении даже небольшой части большого двоичного объекта. Некоторые модули загрузки большого двоичного объекта могут в некоторых случаях определять местоположение большого двоичного объекта, используя службу поиска большого двоичного объекта, которая может в некоторых реализациях быть аналогичной или подобной иллюстративной службе 125 поиска большого двоичного объекта, введенной ранее, тогда как в тех же или в других реализациях модули загрузки большого двоичного объекта могут определять местоположение большого двоичного объекта или извлекать его без использования функциональных средств поиска большого двоичного объекта или без использования службы поиска большого двоичного объекта.

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

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

Конечные точки, как и модули и службы в составе конечной точки, могут быть соединены, используя набор сетевых или других средств связи. Такие средства связи могут включать в себя любое средство, при помощи которого могут передавать данные, в том числе любую сеть, такую как Ethernet, Wi-Fi, или сеть мобильной телефонной связи или передачи данных и, по меньшей мере, в некоторых случаях любой другой вид пересылки, в том числе пересылку материальных носителей, подобных компакт-диску (CD) или флэш-памяти.

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

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

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

В иллюстративной реализации операции 215 метаданные, которые были обновлены в рамках операции 210, могут быть переданы на конечную точку обслуживающего узла, такую, скажем, как конечная точка обслуживающего узла, которая, по меньшей мере, в некотором роде подобна иллюстративной конечной точке 110 обслуживающего узла, описанной выше со ссылкой на фиг.1. Такая передача может быть реализована самыми разными способами, зависящими, например, от того, как представлены метаданные, и от сетевых или других функциональных средств связи, доступных конечной точке, которая сделала изменение, или которая доступна для принимающей конечной точки. Например, в реализации, в которой метаданные осуществляют в XML-документе, метаданные могут передавать на конечную точку обслуживающего узла, используя, скажем, запрос HTTP POST, который вмещает XML-документ и который предоставляют на обслуживающий узел HTTP, работающий на конечной точке обслуживающего узла или ассоциированный с ней. В другой реализации конечная точка, которая сделала изменение, могла бы сделать обновленные метаданные доступными в конкретном местонахождении, скажем, в общем сетевом каталоге или через посредство обслуживающего узла HTTP, ассоциированного непосредственно с конечной точкой, и конечная точка обслуживающего узла может извлечь метаданные из этого местонахождения.

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

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

В заключение, в то время как в некоторых реализациях операции 215 обновленные метаданные могут быть переданы на конечную точку обслуживающего узла, в тех же или других реализациях обновленные метаданные могут вместо этого, или в дополнение к этому, быть переданы на одну или более другие конечные точки, в том числе другие конечные точки обслуживающего узла или другие конечные точки устройств, такие как конечная точка B 170 устройства и/или конечная точка C 180 устройства, и та и другая описаны выше со ссылкой на фиг.1. Например, в реализации, в которой метаданные включают в себя или используют SSE-информацию, и, следовательно, метаданные могут быть переданы и быть синхронизированы между произвольными (и иногда не являющимися обслуживающими узлами) конечными точками, по меньшей мере, некоторые реализации операции 215 могут передавать обновленные метаданные на набор других конечных точек.

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

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

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

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

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

По меньшей мере, в некоторых реализациях операции 315 конечная точка может различными средствами получать метаданные, которые могут содержать изменение. Например, конечная точка, в том числе, скажем, конечная точка устройства, подобная конечной точке A 160 устройства, описанной выше со ссылкой на фиг.1, могла бы инициировать запрос HTTP GET на сетевой обслуживающий узел, который является частью или ассоциирован с конечной точкой обслуживающего узла, скажем, такой как конечная точка 110 обслуживающего узла, также описанная выше со ссылкой на фиг.1, и принимать в ответ метаданные, которые включают в себя одно или более изменений. В других реализациях метаданные могут заранее быть переданы другой конечной точкой или могут быть получены рядом других способов. В некоторых реализациях полученные метаданные могут включать в себя все пункты, которые могут быть представлены конкретным фрагментом метаданных, тогда как в тех же или других реализациях, по меньшей мере, в некоторых случаях метаданные могут включать в себя только поднабор пунктов, включающий в себя, например, только пункты, которые изменились.

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

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

По меньшей мере, в некоторых реализациях операции 325 может также определяться, требуются или желательны ли конечной точке, которая синхронизирует информацию и которая получила метаданные, один или более больших двоичных объекта, указанных или идентифицируемых метаданными. Например, в реализациях, в которых метаданные не включают в себя, по меньшей мере, какую-либо информацию, ассоциированную с метаданными, а вместо этого могли бы, например, включать в себя одну или более ссылок на большие двоичные объекты из данных, хранимых в другом месте, эта операция может определить, что один или более из этих больших двоичных объектов желательны или требуются. Это могло бы иметь место только для одного примера, когда, по меньшей мере, частичной целью последовательности 300 технологических операций является синхронизировать и метаданные, и ассоциированные данные большого двоичного объекта на конечной точке, которая исполняет последовательность 300 технологических операций. Если большой двоичный объект желателен, иллюстративная последовательность технологических операций может перейти к операции 330. Если большие двоичные объекты не нужны, иллюстративная последовательность технологических операций может завершиться.

В иллюстративной реализации операции 330 могут быть извлечены один или более больших двоичных объектов, которые идентифицируют или на которые ссылаются полученными метаданными. Для извлечения большой двоичный объект или объекты могут быть идентифицированы по-разному. Например, в некоторых случаях могут извлекаться любые большие двоичные объекты, ассоциированные с измененными пунктами метаданных. В других реализациях может извлекаться только поднабор измененных больших двоичных объектов, скажем, могли бы извлекаться только большие двоичные объекты, которые меньше заданного размера, или могли бы использоваться какие-либо другие критерии, чтобы фильтровать или определять большой двоичный объект или большие двоичные объекты для извлечения. В некоторых реализациях единственный пункт метаданных может идентифицировать единственный большой двоичный объект, тогда как в тех же или других реализациях единственный пункт метаданных может идентифицировать множественные большие двоичные объекты. Затем каждый идентифицируемый большой двоичный объект может извлекаться одним или более различными способами. В некоторых реализациях могут быть извлечены одно или более альтернативных представлений идентифицируемого большого двоичного объекта(ов), таких как перекодированные версии конкретных файлов (таких как файлы изображения, видеофайлы или звуковые файлы), и тому подобное. В заключение, в некоторых реализациях большой двоичный объект может быть извлечен, используя операции, которые являются теми же или подобными операциями, описываемыми ниже со ссылкой на фиг.4. В других реализациях большой двоичный объект может быть извлечен одним или более другими способами.

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

В иллюстративной реализации операции 410 может определяться, будет ли в рамках извлечения большого двоичного объекта использоваться служба поиска большого двоичного объекта (или BLS). Например, это определение может быть сделано, по меньшей мере, частично, в силу того, что в некоторых реализациях конечная точка может попытаться сначала извлечь большой двоичный объект, не используя (или используя) службу поиска большого двоичного объекта. В такой реализации служба поиска большого двоичного объекта могла бы, например, использоваться только после того, как была предпринята первоначальная попытка извлечь большой двоичный объект без использования службы поиска большого двоичного объекта. Если такая первоначальная попытка потерпела неудачу, то могла бы использоваться служба поиска большого двоичного объекта. В другой реализации служба поиска большого двоичного объекта может быть недоступна, или это определение может быть сделано различными другими способами. Если службу поиска большого двоичного объекта используют, последовательность 400 технологических операций может перейти к операции 415. Если службу поиска большого двоичного объекта не используют, последовательность технологических операций может перейти к операции 435.

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

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

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

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

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

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

По меньшей мере, в некоторых реализациях операции 420, может определяться, может ли быть использован предоставленный указатель(и) для извлечения большого двоичного объекта. Например, может быть запрошена конечная точка, идентифицируемая в указателе, или может быть отправлен запрос на извлечение большого двоичного объекта, на инициализацию извлечения большого двоичного объекта, на проверку состояния или доступности большого двоичного объекта и так далее. Если можно определить, что большой двоичный объект не может быть извлечен, скажем, указатель идентифицирует конечную точку, которая находится в автономном режиме, например, или большой двоичный объект не может быть извлечен по какой-либо другой причине, тогда, по меньшей мере, в некоторых реализациях последовательность 400 технологических операций может перейти к операции 430. Если один или более указателей могут использоваться для извлечения большого двоичного объекта, последовательность технологических операций может перейти к операции 425.

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

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

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

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

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

Если извлечение большого двоичного объекта не удалось во время исполнения операции 425, в некоторых случаях последовательность технологических операций может завершиться. В других реализациях неудача извлечения может интерпретироваться аналогично или тем же способом, что неудача вышеописанной операции 420. В такой реализации, если извлечение большого двоичного объекта не удалось в течение операции 425, последовательность технологических операций может перейти к операции 430 (такой маршрут продемонстрирован на фиг.4 с использованием пунктирной линии).

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

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

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

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

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

Необходимо отметить, что в некоторых реализациях могут использоваться другие способы для извлечения большого двоичного объекта вместо иллюстративной последовательности технологической операции, описанной выше и со ссылкой на фиг.4, или в дополнение к ней. По меньшей мере, некоторые из этих других способов также могут исполнять одну или более иллюстративных операций, описанных со ссылкой на фиг.4, или могут использовать один или более других модулей или служб, в том числе модули и службы, описанные со ссылкой, например, на фиг.1. По меньшей мере, некоторые из этих других способов также могут исполнять другие инструкции или использовать другие модули и службы. Только в качестве одного примера конечная точка могла бы запрашивать, чтобы модуль загрузки большого двоичного объекта, скажем, подобный модулю 150 загрузки большого двоичного объекта или модулю 162 загрузки большого двоичного объекта, описанным выше со ссылкой на фиг.1, получил конкретный большой двоичный объект. В некоторых реализациях модуль загрузки большого двоичного объекта мог бы иметь один или более сменных "формирователей", каждый из которых может определять местоположение и/или получать запрашиваемый большой двоичный объект, возможно, по-разному. Например, один формирователь мог бы использовать службу поиска большого двоичного объекта, чтобы получить набор указателей, а затем использовать единственный указатель для извлечения большого двоичного объекта, другой формирователь мог бы тоже использовать службу поиска большого двоичного объекта и мог бы использовать множественные указатели, скажем, параллельно или с помощью BitTorrent или другого подобного механизма, для извлечения большого двоичного объекта, еще один формирователь мог бы не использовать службу поиска большого двоичного объекта и мог бы определять местоположение и извлекать большой двоичный объект рядом других способов, и так далее. По меньшей мере, в некоторых таких реализациях модуль загрузки большого двоичного объекта мог бы определять формирователь для различного использования. Например, модуль загрузки большого двоичного объекта мог бы послать запрос каждому формирователю для оценки того, сколько времени могло бы потребоваться формирователю для извлечения большого двоичного объекта, а затем каждый формирователь мог бы возвратить расчетное время либо, скажем, некоторое значение, которое означает, что формирователь не может извлечь большой двоичный объект. Используя такие возвращенные данные, модуль загрузки большого двоичного объекта мог бы отобрать один (или больше) формирователей и поручить выбранному формирователю(ям) в действительности извлечь большой двоичный объект.

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

В иллюстративной реализации операции 510 конечная точка, такая как конечная точка 110 обслуживающего узла, описанная выше со ссылкой на фиг.1, может получать метаданные от другой конечной точки. Например, конечная точка, которая получает метаданные, может в некоторых реализациях быть конечной точкой обслуживающего узла, которая принимает метаданные с изменениями, передаваемые другими конечными точками, как было описано выше, например, в отношении операции 215 на фиг.2. Кроме того, в некоторых реализациях, по меньшей мере, некоторые из операций, описываемых в данном документе в отношении последовательности 400 технологических операций, могут быть реализованы при помощи иллюстративной службы 120 хранения, как тоже описано выше со ссылкой на фиг.1 (несмотря на то, что часть этого описания может относиться к конечной точке, которая принимает метаданные в течение последовательности 400 технологических операций как "конечная точка обслуживающего узла", нужно понимать, что эта конечная точка, принимающая метаданные, не обязательно должна быть конечной точкой обслуживающего узла, не обязательно должна обладать, по меньшей мере, некоторыми или всеми функциональными средствами, описанными где-либо еще, возможно ассоциированными с конечной точкой обслуживающего узла, и так далее).

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

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

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

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

В заключение, в иллюстративной реализации операции 530 обновленные метаданные, созданные в рамках операции 515 объединения, могут быть переданы на одну или более конечную точку. Например, иная конечная точка, которая синхронизирует данные, представленные метаданными, может подать на конечную точку обслуживающего узла запрос на обновленные метаданные. Такой запрос мог бы быть подан после того, как другая конечная точка принимает уведомление о том, что метаданные изменились, когда другая конечная точка опрашивает конечную точку обслуживающего узла и обнаруживает, что метаданные изменились, и так далее. Конечная точка обслуживающего узла может предоставлять метаданные другой конечной точке по-разному, в том числе как описано выше и где-либо еще в данном документе, например, с помощью запросов и ответов HTTP GET или POST, протоколов коллективного доступа к файлам, FTP, электронной почты, какого-либо другого механизма или механизмов связи, и так далее.

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

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

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

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

По меньшей мере, в некоторых реализациях операции 615 воспринимаемое местонахождение (и, возможно, другие воспринимаемые данные) могут храниться службой поиска большого двоичного объекта с использованием одного или более из ряда средств или механизмов, в том числе в виде строк или записей в базе данных, и так далее.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В иллюстративной реализации операции 725 в некоторый момент после кэширования конкретного большого двоичного объекта или больших двоичных объектов служба кэширования большого двоичного объекта может принимать запрос от одной или более конечных точек на весь кэшированный большой двоичный объект или его часть, и может, в иллюстративной реализации операции 730, предоставить запрашиваемый большой двоичный объект (или часть большого двоичного объекта) запрашивающей стороне. Запросы и ответы, ассоциированные с кэшированными большими двоичными объектами, могут быть реализованы разнообразными способами, используя разнообразные механизмы связи, и тому подобное, в том числе механизмы, описанные где-либо еще в данном документе, такие как пересылки по протоколу HTTP, пересылки по протоколу FTP, пересылки по протоколу в стиле BitTorrent и так далее.

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

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

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

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

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

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

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

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

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

По меньшей мере, в некоторых реализациях операции 915 может быть определено, должна ли для извлечения большого двоичного объекта использоваться служба поиска большого двоичного объекта. Например, некоторые конечные точки могут не иметь доступа к службе поиска большого двоичного объекта или даже не знать о ней. В таком случае и в других случаях, в том числе, когда служба поиска большого двоичного объекта доступна, но ее не используют, может быть сделано определение не использовать службу поиска большого двоичного объекта, и последовательность 900 технологических операций может перейти к операции 930. Если большой двоичный объект должен быть извлечен с использованием службы поиска большого двоичного объекта, последовательность 900 технологических операций может перейти к операции 920.

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

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

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

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

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

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

Если службу поиска большого двоичного объекта не используют, последовательность 900 технологических операций может перейти к операции 930. В иллюстративной реализации операции 930 большой двоичный объект может быть извлечен, используя один или более механизмов пересылки файлов или извлечения большого двоичного объекта, которые не используют напрямую (но могут в некоторых реализациях косвенно использовать) службу поиска большого двоичного объекта или модуль загрузки большого двоичного объекта. Такие механизмы могли бы включать в себя HTTP, FTP, протоколы коллективного доступа к файлам или пересылки файлов, и так далее. Например, в тех случаях, когда идентификатор большого двоичного объекта представляет собой что-то подобное "http://www.els.live.com/ABC123", конечная точка может просто инициировать HTTP-запрос к URL, входящему в состав идентификатора большого двоичного объекта. В некоторых реализациях конечная точка обслуживающего узла или обслуживающий узел HTTP, которые реагируют на запрос большого двоичного объекта, затем могли бы настраиваться на использование URL этой конкретной формы, извлекая идентификатор (такой как "ABC123") и используя этот идентификатор для определения местоположения запрашиваемого большого двоичного объекта, и чтобы после этого в конечном итоге возвращать большой двоичный объект в HTTP-ответе. (В некоторых случаях сама конечная точка обслуживающего узла могла бы определять местоположение большого двоичного объекта, используя операции, которые являются теми же или подобными, например, операциям извлечения большого двоичного объекта, описанным выше со ссылкой на фиг.4. В тех же или других реализациях конечная точка обслуживающего узла могла бы возвращать только большие двоичные объекты, которые имеются в особой ячейке хранения, такой как служба кэширования большого двоичного объекта или служба облачного хранения).

Иллюстративная Вычислительная Среда

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

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

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

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

Вычислительное устройство 1000, продемонстрированное на фиг.10, в своей наиболее элементарной конфигурации включает в себя, по меньшей мере, одно обрабатывающее устройство 1002 и запоминающее устройство 1004. В некоторых реализациях вычислительное устройство 1000 может реализовывать, по меньшей мере, часть, например, одной из конечных точек, описанных выше со ссылкой на фиг.1, таких как конечная точка 110 обслуживающего узла, конечная точка A 160 устройства, конечная точка B 170 устройства и так далее. В некоторых реализациях обрабатывающее устройство 1002 может быть универсальным центральным процессорным устройством (ЦПУ), которое присутствует, например, в ряде компьютеров, в том числе в настольных и переносных компьютерах. В зависимости от точной конфигурации и типа вычислительного устройства запоминающее устройство 1004 может быть энергозависимым (таким как ОЗУ), энергонезависимым (таким как ПЗУ, запоминающее устройство с групповой перезаписью и т.д.) или какой-либо их комбинацией. Эта наиболее элементарная конфигурация продемонстрирована на фиг.10 пунктирной линией 1006. Дополнительно, вычислительное устройство 1000 также может обладать дополнительными признаками и функциональными средствами. Например, вычислительное устройство 1000 также может включать в себя дополнительное хранилище (съемное и/или несъемное), в том числе, но не ограничиваясь этим, магнитные или оптические диски или ленту. Такое дополнительное хранилище продемонстрировано на фиг.10 посредством съемного хранилища 1008 и несъемного хранилища 1010.

Вычислительное устройство 1000 также может содержать одну или более линию(й) 1012 связи, которые дают возможность вычислительному устройству 1000 осуществлять связь с другими устройствами и службами. Например, вычислительное устройство могло бы иметь одно или более соединений с рядом средств связи или вычислительных устройств, включающих в себя, например, соединения с конечными точками или между ними, как описано выше со ссылкой на фиг.1. Вычислительное устройство 1000 также может иметь одно или более устройств 1014 ввода, таких как устройства ввода изображений, подобные камерам или сканирующим устройствам, клавиатуры, манипуляторы мышь, перья, устройства ввода голосовых данных, включающие в себя микрофонную установку, устройства сенсорного ввода и так далее. Одно или более устройств 1016 вывода, такие как устройство отображения, громкоговорители, печатающее устройство и так далее, также могут быть включены в состав вычислительного устройства 1000.

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

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

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

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

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

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

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

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

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

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

7. Считываемый компьютером носитель по п.1, в котором идентификатор большого двоичного объекта содержит по меньшей мере одно из: строки буквенно-числовых символов, унифицированного указателя ресурса (URL), унифицированного идентификатора ресурса (URI).

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

9. Способ по п.8, в котором другие метаданные, поддерживаемые серверной конечной точкой, содержат другие идентификаторы других больших двоичных объектов, которые предоставляются другими конечными точками и не предоставляются серверной конечной точкой.

10. Способ по п.8, в котором вторая конечная точка не получает идентификатор большого двоичного объекта от первой конечной точки до того, как идентификатор большого двоичного объекта передается ко второй конечной точке серверной конечной точкой.

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

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

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

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

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

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

17. Система по п.15, дополнительно содержащая первую конечную точку устройства.

18. Система по п.17, дополнительно содержащая другие конечные точки устройства.

19. Система по п.15, в которой протокол синхронизации состоит из протокола расширения простого совместного использования (SSE).

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



 

Похожие патенты:

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

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

Изобретение относится к средствам совместного использования информации между прикладными программами. .

Изобретение относится к вычислительной технике. .

Изобретение относится к способу управления объектами приложений. .

Изобретение относится к средствам доставки сообщений. .

Изобретение относится к области платформ деловых приложений с несколькими арендаторами. .

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

Изобретение относится к различным аспектам архитектуры онлайновых коллективных и объединенных взаимодействий

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

Изобретение относится к системам обработки информации, в частности к измерительным системам, выполненным с возможностью соединения со специализированными системами

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

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

Изобретение относится к информационно-коммуникационным системам

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

Изобретение относится к области вычислительной техники
Наверх