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

Иллюстрации

Показать все

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

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