СИСТЕМА И СПОСОБ ВЫПОЛНЕНИЯ ОЧЕРЕДИ ЗАПРОСОВ В ОТНОШЕНИИ ЦИФРОВЫХ ОБЪЕКТОВ
SYSTEM AND METHOD OF PERFORMING QUEUE OF REQUESTS FOR DIGITAL OBJECTS

ОБЛАСТЬ ТЕХНИКИ
[1] Настоящая технология относится к системе и способу выполнения очереди запросов в отношении цифровых объектов.
УРОВЕНЬ ТЕХНИКИ
[2] В современных компьютерных технологиях, пользователи онлайн сервисов зачастую направляют со своих клиентских устройств на серверы, обеспечивающие предоставление соответствующего сервиса, запросы на выполнение массовых операций. В некоторых случаях, пользователи направляют два или несколько последовательных запроса на выполнение различных операций. В некоторых случаях, два и более последовательных запросов на выполнение различных операций делаются в отношении двух и более множеств цифровых объектов. В некоторых случаях, данные два и более множества могут, по меньшей мере частично, пересекаться, что может вызывать конфликты при исполнении последовательных запросов в отношении пересекающихся множеств цифровых объектов. В качестве неограничивающего примера ситуации, потенциально ведущей к конфликту при выполнении запросов, можно привести направление пользователем на сервер задачи на удаление всех файлов из определенной папки в облачном хранилище данных, и последующее направление тем же пользователем на сервер второй задачи на перенос файла из вышеуказанной папки в другую папку до окончания исполнения первого запроса.
[3] В заявке на патент США US 20070073720 A1 «Email Server for Processing a Threshold Number of Email Jobs for a Given User and Related Methods» («Почтовый сервер для обработки ограниченного пороговым значением количества сообщений электронной почты определенного пользователя, и относящийся к нему способ») отмечается возможность при направлении пользователем серии заданий для выполнения нескольких одинаковых команд (дубликатов). Такая ситуация возможна, указывается в данном патенте, когда одно взаимодействующее приложение находится в режиме блокировки, а другое взаимодействующее приложение продолжает повторно направлять задание. Формула данного патента предусматривает способ обработки сообщений электронной почты, включая: сохранение программой, управляющей заданиями в отношении сообщений электронной почты, множества заданий в отношении множества пользователей; и в случае, когда количество заданий одного пользователя, обрабатываемых одной программой, управляющей заданиями, в очереди превышает предельно установленное количество, осуществление обработки предельного количества сообщений электронной почты для данного пользователя.
[4] Таким образом, улучшение существующих компьютерных систем обработки очередей заданий возможно.
СУЩНОСТЬ ТЕХНОЛОГИИ
[5] Целью настоящей технологии является устранение или смягчение по меньшей мере некоторых из неудобств, присутствующих на существующем уровне техники.
[6] В соответствии с вариантами осуществления настоящей технологии, предусматривается исполняемый на сервере способ выполнения очереди запросов в отношении цифровых объектов. Способ включает: получение с клиентского устройства по сети передачи данных первого запроса на выполнение первой задачи, первый запрос на выполнение первой задачи, включающий в себя первую задачу и указание на цифровые объекты из первого множества цифровых объектов, связанных с первой задачей; разделение первого запроса на множество подзапросов, каждый из подзапросов относящийся к части цифровых объектов из первого множества цифровых объектов, связанных с первым запросом, каждый из подзапросов, включающий в себя: информацию о первой задаче и указание на цифровые объекты из соответствующей части цифровых объектов; расчет уникального идентификатора подзапроса, причем уникальный идентификатор подзапроса основывается по меньшей мере частично на содержимом соответствующего подзапроса; сохранение подзапросов в хранилище подзапросов совместно с соответствующими им идентификаторами подзапросов; получение с клиентского устройства по сети передачи данных второго запроса на выполнение второй задачи, второй запрос на выполнение второй задачи, включающий в себя вторую задачу и указание на по меньшей мере один цифровой объект, связанный со вторым запросом; основываясь на уникальных идентификаторах подзапросов, хранящихся в хранилище подзапросов, определение по меньшей мере одного подзапроса из множества подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи; обращение к указанному по меньшей мере одному подзапросу из множества подзапросов, и удаление из этого подзапроса указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи; выполнение подзапросов в отношении цифровых объектов, указания на которые содержатся в подзапросах после удаления из по меньшей мере одного подзапроса указанного по меньшей мере одного цифрового объекта.
[7] В некоторых вариантах осуществления технологии, способ дополнительно включает в себя выполнение второго запроса.
[8] В некоторых вариантах осуществления технологии, выполнение второго запроса осуществляется параллельно с выполнением по меньшей мере одного подзапроса.
[9] В некоторых вариантах осуществления технологии, выполнение второго запроса осуществляется после выполнения по меньшей мере одного подзапроса.
[10] В некоторых вариантах осуществления технологии, разделение первого запроса на множество подзапросов включает в себя определение сервером количества цифровых объектов в первом множестве цифровых объектов, и разделение первого запроса на множество подзапросов осуществляется в случае, когда количество цифровых объектов в первом множестве цифровых объектов превышает пороговое значение.
[11] В некоторых вариантах осуществления технологии, расчет уникального идентификатора подзапроса осуществляется с использованием алгоритма хеширования.
[12] В некоторых вариантах осуществления технологии, определение по меньшей мере одного подзапроса из множества подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи, осуществляется с использованием алгоритма вероятностной структуры данных.
[13] В некоторых вариантах осуществления технологии, алгоритм вероятностной структуры данных является фильтром Блума.
[14] В некоторых вариантах осуществления технологии, в ответ на получение сервером с клиентского устройства третьего запроса на выполнение третьей задачи, сервер дополнительно осуществляет блокировку исполнения третьего запроса на выполнение третьей задачи.
[15] В некоторых вариантах осуществления технологии, сервер, после выполнение подзапросов в отношении цифровых объектов из первого множества цифровых объектов, осуществляет разблокировку исполнения третьего запроса на выполнение третьей задачи.
[16] В некоторых вариантах осуществления технологии, сервер, после выполнения второго запроса в отношении цифровых объектов, осуществляет разблокировку исполнения третьего запроса на выполнение третьей задачи.
[17] В некоторых вариантах осуществления технологии, цифровые объекты являются сообщениями электронной почты.
[18] В некоторых вариантах осуществления технологии, способ дополнительно включает в себя приступание к последовательному исполнению сервером подзапросов до получения сервером с клиентского устройства по сети передачи данных второго запроса на выполнение второй задачи.
[19] Другим объектом настоящей технологии является сервер. Сервер включает в себя процессор. Конфигурация процессора настроена таким образом, чтобы сервер мог осуществлять: получение с клиентского устройства по сети передачи данных первого запроса на выполнение первой задачи, первый запрос на выполнение первой задачи, включающий в себя первую задачу и указание на цифровые объекты из первого множества цифровых объектов, связанных с первой задачей; разделение первого запроса на множество подзапросов, каждый из подзапросов относящийся к части цифровых объектов из первого множества цифровых объектов, связанных с первым запросом, каждый из подзапросов, включающий в себя: информацию о первой задаче и указание на цифровые объекты из соответствующей части цифровых объектов; расчет уникального идентификатора подзапроса, причем уникальный идентификатор подзапроса основывается по меньшей мере частично на содержимом соответствующего подзапроса; сохранение подзапросов в хранилище подзапросов совместно с соответствующими им идентификаторами подзапросов; получение с клиентского устройства по сети передачи данных второго запроса на выполнение второй задачи, второй запрос на выполнение второй задачи, включающий в себя вторую задачу и указание на по меньшей мере один цифровой объект, связанный со вторым запросом; основываясь на уникальных идентификаторах подзапросов, хранящихся в хранилище подзапросов, определение по меньшей мере одного подзапроса из множества подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи; обращение к указанному по меньшей мере одному подзапросу из множества подзапросов, и удаление из этого подзапроса указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи; выполнение подзапросов в отношении цифровых объектов, указания на которые содержатся в подзапросах после удаления из по меньшей мере одного подзапроса указанного по меньшей мере одного цифрового объекта.
[20] В некоторых вариантах воплощения сервера, конфигурация процессора настроена таким образом, чтобы сервер мог дополнительно осуществлять выполнение второго запроса.
[21] В некоторых вариантах воплощения сервера, выполнение второго запроса осуществляется параллельно с выполнением по меньшей мере одного подзапроса.
[22] В некоторых вариантах воплощения сервера, выполнение второго запроса осуществляется после выполнения по меньшей мере одного подзапроса.
[23] В некоторых вариантах воплощения сервера, разделение первого запроса на множество подзапросов включает в себя определение сервером количества цифровых объектов в первом множестве цифровых объектов, и в котором разделение первого запроса на множество подзапросов осуществляется в случае, когда количество цифровых объектов в первом множестве цифровых объектов превышает пороговое значение.
[24] В некоторых вариантах воплощения сервера, расчет уникального идентификатора подзапроса осуществляется с использованием алгоритма хеширования.
[25] В некоторых вариантах воплощения сервера, определение по меньшей мере одного подзапроса из множества подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи, осуществляется с использованием алгоритма вероятностной структуры данных.
[26] В некоторых вариантах воплощения сервера, алгоритм вероятностной структуры данных является фильтром Блума.
[27] В некоторых вариантах воплощения сервера, конфигурация процессора настроена таким образом, чтобы сервер, в ответ на получение сервером с клиентского устройства третьего запроса на выполнение третьей задачи, мог дополнительно осуществлять блокировку исполнения третьего запроса на выполнение третьей задачи.
[28] В некоторых вариантах воплощения сервера, конфигурация процессора настроена таким образом, чтобы сервер, после выполнения подзапросов в отношении цифровых объектов из первого множества цифровых объектов, мог дополнительно осуществлять разблокировку исполнения третьего запроса на выполнение третьей задачи.
[29] В некоторых вариантах воплощения сервера, конфигурация процессора настроена таким образом, чтобы сервер, после выполнения второго запроса в отношении цифровых объектов, мог дополнительно осуществлять разблокировку исполнения третьего запроса на выполнение третьей задачи.
[30] В некоторых вариантах воплощения сервера, цифровые объекты являются сообщениями электронной почты.
[31] В некоторых вариантах воплощения сервера, конфигурация процессора настроена таким образом, чтобы сервер мог дополнительно осуществлять приступание к последовательному исполнению сервером подзапросов до получения сервером с клиентского устройства по сети передачи данных второго запроса на выполнение второй задачи.
[32] В контексте описания настоящей технологии, «сервер» представляет собой программу, выполняемую на соответствующем оборудовании и способную осуществлять прием запросов (например, подаваемых клиентскими устройствами), передаваемых по сети, и выполнять эти запросы или обеспечивать их выполнение. Оборудование может представлять собой один компьютер или одну компьютерную систему, однако ни одно, ни другое не является обязательным в отношении предлагаемой технологии. В данном контексте выражение «по меньшей мере один сервер» не означает, что каждая задача (например, предусмотренная принятыми инструкциями или запросами) или какая-либо конкретная задача будет принята, выполнена или ее выполнение будет обеспечено тем же самым сервером (то есть тем же самым программным обеспечением и/или оборудованием); предполагается, что прием и передача, выполнение или обеспечение выполнения любой задачи или запроса либо обработка результатов задачи или запроса может осуществлять любое число компонентов программного обеспечения или устройств и все эти компоненты программного обеспечения или оборудования могут быть представлены одним сервером или несколькими серверами, причем термин «сервер» охватывает оба указанных варианта.
[33] В контексте описания настоящей технологии, «клиентское устройство» представляет собой любое компьютерное оборудование, обеспечивающее возможность выполнения программного обеспечения, предназначенного для решения требуемой задачи. В контексте настоящего описания, термин «клиентское устройство» в основном ассоциируется с пользователем клиентского устройства. Некоторые (не имеющие ограничительного характера) примеры клиентских устройств включают в себя персональные компьютеры (настольные компьютеры, переносные компьютеры, нетбуки и т.д.), смартфоны и планшеты, а также сетевое оборудование, такое как маршрутизаторы, коммутаторы и шлюзы. Следует отметить, что в данном контексте тот факт, что устройство функционирует в качестве клиентского устройства, не исключает возможности его функционирования в качестве сервера для других клиентских устройств. Использование выражения «клиентское устройство» не препятствует применению нескольких клиентских устройств в процессе приема и передачи, выполнения или обеспечения выполнения задачи либо запроса или обработки результатов задачи или запроса либо этапов способа, представленного в настоящем описании.
[34] В контексте описания настоящей технологии, термин «сообщение электронной почты» включает в себя файл, содержащий текст, формируемый отправителем и предназначенный для передачи одному или нескольким получателям посредством электронной почты. Сообщение электронной почты включает в себя также метаданные, в том числе такие метаданные, которые позволяют идентифицировать соответствующее сообщение электронной почты.
[35] В контексте описания настоящей технологии, термин «информация» включает в себя информацию любого характера или типа, которая может быть записана в базе данных. Таким образом, информация охватывает, среди прочего, аудиовизуальную информацию (изображения, фильмы, звукозаписи, презентации и т.д.), данные (данные местоположения, числовые данные и т.д.), текстовую информацию (высказывания, комментарии, вопросы, сообщения и т.д.), документы, электронные таблицы и т.д.
[36] В контексте описания настоящей технологии, термин «компонент программного обеспечения» охватывает программное обеспечение (соответствующее конкретному оборудованию), которое является одновременно необходимым и достаточным для выполнения конкретной указанной функции (функций).
[37] В настоящем описании выражение «носитель информации, предназначенный для использования компьютером» (также кратко именуемый «носитель информации») охватывает носители любого характера и типа, в том числе оперативные запоминающие устройства, постоянные запоминающие устройства, диски (компакт-диски, DVD-диски, гибкие диски, жесткие диски и т.д.), USB-ключи, твердотельные накопители, ленточные накопители и т.д.
[38] В контексте описания настоящей технологии, «база данных» представляет собой любой структурированный набор данных, независимо от конкретной структуры, программы управления базой данных или оборудования, на котором осуществляется хранение данных, реализована память или иным способом обеспечивается возможность использования данных. База данных может быть реализована на том же оборудовании, что и процесс, осуществляющий хранение или использование информации, записанной в базе данных, или на отдельном оборудовании, таком как выделенный сервер или множество серверов.
[39] В настоящем описании слова «первый», «второй», «третий» и т.д. используются только в качестве описательных элементов для целей разделения существительных, отличающихся друг от друга, а не с целью определения какого-либо конкретного соотношения между указанными существительными. Таким образом, например, следует понимать, что термины «первая база данных» и «третий сервер» не означают введения конкретной последовательности, типа, хронологии, иерархии или ранжирования (например) конкретного сервера или нескольких серверов, а их использование (само по себе) не означает, что в какой-либо конкретной ситуации должен обязательно существовать какой-либо «второй сервер». Кроме того, как указано в данном описании относительно других примеров осуществления технологии, ссылка на «первый» элемент и «второй» элемент не означает, что два элемента не могут представлять собой в реальном мире фактически один и тот же элемент. Таким образом, например, в некоторых случаях «первый» сервер и «второй» сервер могут представлять собой один компонент программного обеспечения и (или) оборудования, а в других ситуациях могут быть реализованы на различном программном обеспечении и (или) оборудовании.
[40] Каждый из вариантов реализации технологии имеет по меньшей мере одну из вышеупомянутых целей и/или один из вышеупомянутых аспектов, но не обязательно все их. Следует иметь в виду, что некоторые аспекты настоящей технологии, которые стали результатом попытки достичь вышеупомянутой цели, могут не достигать этой цели и/или могут достигать другие цели, специально не упомянутые здесь.
[41] Дополнительные и/или альтернативные особенности, цели, аспекты и преимущества данной технологии станут очевидны из нижеследующего описания, сопровождающих чертежей и прилагаемой формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[42] Для лучшего понимания настоящей технологии, а также других ее аспектов и особенностей, предлагается обратиться к нижеследующему описанию, которым следует пользоваться совместно с прилагаемыми чертежами, на которых:
[43] Фиг. 1 является схематическим изображением варианта воплощения сетевой компьютерной системы 100, реализованной в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.
[44] Фиг. 2 является схематическим изображением способа разделения первого запроса пользователя на выполнение задачи в отношении множества цифровых объектов на множество подзапросов на выполнение задачи в отношении подмножеств цифровых объектов, выполняемого в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.
[45] Фиг. 3 является схематическим изображением структуры первого запроса пользователя на выполнение задачи в отношении множества цифровых объектов, и структуры подзапросов, образованных в результате разделения указанного первого запроса, реализованной в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.
[46] Фиг. 4 является схематическим изображением структуры хранения подзапросов в хранилище подзапросов с использованием Апачи Зукипер™, реализованной в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.
[47] Фиг. 5 является блок-диаграммой способа 500, выполняемого на сервере 102, изображенном на Фиг. 1, выполняемого в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.
[48] Фиг. 6 является схематическим изображением структуры второго запроса пользователя на выполнение второй задачи, и структуры подзапросов, образованных в результате разделения первого запроса, реализованных в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.
ПОДРОБНОЕ ОПИСАНИЕ
[49] На Фиг. 1 изображена принципиальная схема сетевой компьютерной системы 100, компоненты которой находятся в связи друг с другом с помощью сети 112 передачи данных.
[50] Важно иметь в виду, что сетевая компьютерная система 100 представлена как наглядный вариант осуществления настоящей технологии. Таким образом, нижеследующее описание должно рассматриваться исключительно как описание наглядных примеров настоящей технологии. Это описание не предназначено для определения объема или установления границ настоящей технологии. Некоторые полезные примеры модификаций сетевой компьютерной системы 100 также могут быть охвачены нижеследующим описанием. Целью этого описания является исключительно оказание помощи в понимании, а не определение объема и границ настоящей технологии. Эти модификации не представляют собой исчерпывающий список, и специалистам в данной области техники будет понятно, что возможны и другие модификации. Кроме того, это не должно интерпретироваться так, что там, где это еще не было сделано, т.е. там, где не были изложены примеры модификаций, никакие модификации невозможны, и/или что то, что описано, является единственным способом осуществления этого элемента данной технологии. Как будет понятно специалисту в данной области техники, это, скорее всего, не так. Кроме того, следует иметь в виду, что сетевая компьютерная система 100 представляет собой в некоторых конкретных проявлениях достаточно простой вариант осуществления настоящей технологии, и в подобных случаях представлен здесь с целью облегчения понимания. Как будет понятно специалисту в данной области техники, многие варианты осуществления настоящей технологии будут обладать гораздо большей сложностью.
[51] Сетевая компьютерная система 100 включает в себя множество серверов 102. Серверы 102 являются обычными компьютерными серверами. Ниже будет дано описание одного компьютерного сервера 102. Как будет понятно специалистам в данной области техника, другие компьютерные серверы 102 могут иметь аналогичную структуру, и поэтому не будут описываться отдельно. В некоторых воплощениях настоящей технологии, все компьютерные серверы 102 будут иметь функциональность, описанную ниже применительно к серверу 102. В других воплощениях настоящей технологии, функциональность сервера 102, описанного ниже, может быть разделена между несколькими серверами. Кроме того, в некоторых воплощениях настоящей технологии, некоторые серверы будут иметь всю функциональность сервера 102, как она описана ниже, в то время как один или несколько других серверов могут иметь часть функциональности сервера 102.
[52] Сервер 102 может представлять собой обычный компьютерный сервер. В примере варианта осуществления настоящей технологии, сервер 102 представляет собой сервер Dell™ PowerEdge™, на котором используется операционная система Microsoft™ Windows Server™.
[53] Излишне говорить, что сервер 102 может представлять собой любое другое подходящее аппаратное и/или прикладное программное, и/или системное программное обеспечение или их комбинацию. В представленном варианте осуществления настоящей технологии, не ограничивающем ее объем, сервер 102 является одиночным сервером. В других вариантах осуществления настоящей технологии, не ограничивающих ее объем, функциональность сервера 102 может быть разделена, и может выполняться с помощью нескольких серверов.
[54] В целом, варианты осуществления сервера 102 хорошо известны в данной области техники. Таким образом, достаточно отметить, что сервер 102 содержит, среди прочего, интерфейс сетевой связи (не изображен) для двусторонней связи по сети 112 передачи данных; и процессор (не изображен), соединенный с интерфейсом сетевой связи, который выполнен с возможностью выполнять различные процедуры, включая те, что описаны ниже. С этой целью процессор может сохранять или иметь доступ к машиночитаемым инструкциям, выполнение которых инициирует процессор, и выполнять различные описанные здесь процедуры.
[55] К задачам сервера 102 относятся прием сообщений электронной почты, предназначенных пользователю 121, их хранение, передача их из ящика пользователю 121, осуществление с сообщениями электронной почты операций, в том числе операций по запросам пользователя 121. В качестве неограничивающего примера, к операциям, осуществляемым по запросу пользователя, могут относиться удаление одного, нескольких или всех сообщений электронной почты из определенной папки (например, из папки входящие, отправленные, черновики, нежелательная почта, либо из любой иной папки, созданной пользователем либо предоставляемой по умолчанию провайдером услуг пользователю 121). К таким операциям могут также относиться перемещение сообщений электронной почты из одной папки в другую, пометка всех или некоторых сообщений электронной почты как прочитанных, пометка всех или некоторых сообщений электронной почты как непрочитанных, пометка всех или некоторых сообщений электронной почты как нежелательных, присвоение одному, всем или нескольким сообщениям электронной почты определенной категории, создание новых папок, удаление папок, и многие другие.
[56] В альтернативных воплощениях настоящей технологии, в качестве неограничивающего примера, сетевая компьютерная система 100 может включать в себя вместо сервера 102 либо дополнительно к у серверу 102, сервер облачного хранилища данных, либо иной сервер цифровых объектов, каковыми могут являться отдельные файлы, либо группы файлов, в том числе упорядоченные группы файлов. В качестве неограничивающего примера, к операциям, осуществляемым по запросу пользователя, могут относиться удаление одного, нескольких или всех файлов, хранящихся в определенной папке облачного хранилища данных, перемещение файлов из одной папки в другую, переименование файлов, создание, удаление, переименование папок, перемещение папок, в том числе вкладывание одной папки в другую папку, и многие другие.
[57] Сервер 102 соединен с сетью 112 передачи данных через линию связи (не пронумерована).
[58] Сервер 102 включает в себя носитель информации 104, который может использоваться сервером 102. В принципе, данный носитель информации 104 может быть носителем абсолютно любого типа и характера, включая ОЗУ, ПЗУ, диски (компакт диски, DVD-диски, дискеты, жесткие диски и т.д.), USB флеш-накопители, твердотельные накопители, накопители на магнитной ленте и т.д., а также их комбинации.
[59] Носитель информации 104 сервера 102 предназначен также для хранения модуля 106 почтового сервиса.
[60] Модуль 106 почтового сервиса может представлять собой программу или часть программы, выполняемую на соответствующем оборудовании и способную осуществлять хранение и/или обработку сообщений электронной почты. Оборудование для модуля 106 почтового сервиса может представлять собой один компьютер или одну компьютерную систему, однако ни одно, ни другое не является обязательным в отношении предлагаемой технологии.
[61] В данном контексте, использование термина «модуль 106 почтового сервиса» не означает, что каждая задача (например, предусмотренная принятыми инструкциями или запросами) или какая-либо конкретная задача будет принята, выполнена или ее выполнение будет обеспечено тем же самым программным обеспечением и/или оборудованием; предполагается, что выполнение любой задачи или запроса либо обработка результатов задачи или запроса может осуществлять любое число компонентов программного обеспечения или устройств.
[62] В данном воплощении настоящей технологии, модуль 106 почтового сервиса включает в себя почтовые ящики пользователей, в том числе ящик пользователя 121, сообщения электронной почты пользователя 121 и папки сообщений электронной почты в почтовом ящике пользователя 121, в том числе папки «входящие», «исходящие», «отправленные», «черновики», «нежелательная почта», «удаленные».
[63] Почтовые ящики представляют собой часть дискового пространства, выделяемого на носителе информации 104 для хранения сообщений электронной почты пользователей, в том числе пользователя 121, где на указанной части дискового пространства ящик хранится как обычный каталог файловой системы. При этом сообщения электронной почты представляют собой файлы данных, находящиеся в данном каталоге файловой системы.
[64] Модуль 106 почтового сервиса может включать в себя базы данных (не изображены), обеспечивающие хранение сообщений электронной почты.
[65] Модуль 106 почтового сервиса может также обеспечивать хранение метаданных сообщений электронной почты, в том числе идентификаторов сообщений электронной почты.
[66] Модуль 106 почтового сервиса может включать в себя также системы управления базами данных.
[67] В данном воплощении настоящей технологии, системы управления базами данных реализованы с использованием Апачи Зукипер™ (Apache ZooKeeper™), являющимся централизованным сервисом для поддержки информации о конфигурации, поддержки присвоения наименований, для обеспечения распределенной синхронизации, и для обеспечения групповых сервисов. Апачи Зукипер™ является программным обеспечением Апачи Софтвере Фаундейшн, предоставляющим программное обеспечение с открытым исходным кодом для обеспечения распределенных координации между серверами, а также обеспечивающее ведение регистра имен для крупных распределенных систем. Апачи Зукипер™ включает в себя набор утилит, которые могут использоваться для имплементации блокировок, барьеров, и прочих механизмов координации между серверами.
[68] Особенностью Апачи Зукипер™ является то, что его архитектура предусматривает возможность резервного обеспечения выполнения задач. Если один из ведущих элементов системы (главный сервер 102) дает сбой, то роль главного сервера 102 может взять на себя другой сервер 102.
[69] В альтернативных воплощениях настоящей технологии, системы управления базами данных могут быть основаны на использовании любого другого подходящего программного обеспечения. Например, системы управления базами данных могут быть основаны на использовании Redis (REmote Dictionary Server), сетевого журналируемого хранилища данных типа «ключ - значение» с открытым исходным кодом. В других альтернативных воплощениях настоящей технологии, системы управления базами данных могут быть основаны на использовании RabbitMQ. RabbitMQ представляет собой платформу, реализующую систему обмена сообщениями между компонентами программной системы (Message Oriented Middleware) на основе стандарта AMQP (Advanced Message Queuing Protocol).
[70] Модуль 106 почтового сервиса включает в себя также рабочие приложения 108. В данном воплощении настоящей технологии, синхронизацию и координацию работы рабочих приложений 108 обеспечивает Апачи Зукипер™.
[71] Рабочие приложения 108 могут обеспечивать получение, хранение и отправку сообщений электронной почты пользователя 121.
[72] Рабочие приложения 108 могут также обеспечивать получение, по сети передачи данных 112, одного или нескольких запросов пользователя 121 на выполнение задач, направляемых на сервер 102 с клиентского устройства 114.
spam
@
spam
.
com
[73] Запросы пользователя 121 включают в себя собственно задачу, подлежащую выполнению (например, удаление сообщений электронной почты без возможности восстановления), и указание на цифровые объекты из первого множества цифровых объектов, связанные с данной задачей (например, пометка в качестве подлежащих удалению без возможности восстановления всех сообщений электронной почты, полученных с адреса электронной почты  и находящихся в папке «удаленные»).
[74] Рабочие приложения 108 могут также обеспечивать исполнение запросов пользователя 121. В случае получения нескольких запросов пользователя 121 на выполнение задач, рабочие приложения 108 могут осуществлять их исполнение последовательно либо параллельно.
[75] Рабочие приложения 108 могут также осуществлять определение количества цифровых объектов, в отношении которых поступил запрос на выполнение определенной задачи.
[76] Рабочие приложения 108 могут также осуществлять разделение запроса пользователя 121 на множество подзапросов.
[77] Порядок разделения запроса 202 на множество 2020 подзапросов будет проиллюстрирован ниже со ссылками на Фиг. 2 при описании способа 500. Структура запроса 202 и подзапросов 2022, 2024 и 2026 из множества 2020 подзапросов будет ниже проиллюстрирована со ссылками на Фиг. 3 при описании способа 500.
[78] Рабочие приложения 108 могут также обеспечивать расчет уникальных идентификаторов подзапросов.
[79] Рабочие приложения 108, разделив запрос на множество подзапросов и произведя расчет уникальных идентификаторов подзапросов, могут сохранять подзапросы из множества подзапросов вместе с уникальными идентификаторами соответствующих подзапросов в хранилище 110 подзапросов.
[80] Носитель информации 104 сервера 102 предназначен также для хранения данных, сохраненных в хранилище 110 подзапросов. Хранилище 110 подзапросов, в частности, хранит подзапросы 2022, 2024 и 2026 из множества 2020 подзапросов.
[81] В одном из воплощений данной технологии, для обеспечения хранения подзапросов в хранилище 110 подзапросов, используется Апачи Зукипер™. В других воплощениях настоящей технологии могут использоваться библиотеки RabbitMQ, ZeroMQ, либо любое другое подходящее программное обеспечение.
[82] На Фиг. 4 схематически представлена структура хранения подзапросов в хранилище 110 подзапросов с использованием Апачи Зукипер™, которая будет объяснена подробнее при описании этапа 508 способа 500.
[83] При разделении одним из рабочих приложений 108 запроса 202 на множество 2020 подзапросов, рабочее приложение 108 формирует множество 2020 подзапросов и сохраняет подзапросы в вышеуказанное хранилище 110 подзапросов. Хранилище 110 подзапросов доступно для рабочих приложений 108, которые могут считывать информацию из хранилища 110 подзапросов.
[84] Как было отмечено выше, сервер 102, изображенный на Фиг. 1, может быть реализован как один сервер 102 либо как несколько взаимосвязанных серверов 102. Рабочие приложения 108 могут быть распределены между этими серверами 102. Говоря о сервере 102 в целом, важно иметь в виду, что различные воплощения сервера 102 даны исключительно в иллюстрационных целях. Таким образом, специалисты в данной области техники смогут понять подробности других конкретных вариантов осуществления воплощения почтовых серверов, которые могут использоваться для реализации настоящей технологии. Таким образом, представленный здесь пример не ограничивает объем настоящей технологии.
[85] Сервер 102, изображенный на Фиг. 1, соединен с сетью 112 передачи данных через линию связи (не пронумерована). В некоторых вариантах осуществления настоящей технологии, не ограничивающих ее объем, сеть 112 передачи данных связи может представлять собой Интернет. В других вариантах осуществления настоящей технологии, сеть 112 передачи данных может быть реализована иначе - в виде глобальной сети передачи данных, локальной сети передачи данных, частной сети передачи данных и т.п.
[86] Реализация линии связи не ограничена, и будет зависеть от того, какие устройства присоединены к сети 112 передачи данных. В качестве примера, но не ограничения, подключение сервера 102 к сети 112 передачи данных может быть осуществлено по проводной связи (соединение на основе сети Ethernet).
[87] Через сеть передачи данных 112, сервер 112 соединен с клиентским устройством 114.
[88] Клиентское устройство 114 обычно связано с пользователем 121. Пользователем 121 является лицо, чей аккаунт электронной почты размещен на сервере 102.
[89] Следует отметить, что тот факт, что клиентское устройство 114 связано с пользователем 121, не подразумевает какого-либо конкретного режима работы.
[90] Изображенное на Фиг. 1 клиентское устройство 114 реализовано в виде персонального компьютера Dell™ Precision Т1700 МТ CA033PT170011RUWS с процессором Intel Xeon™, частота процессора: 3300 МГц, с видеокартой nVIDIA Quadro К2000, с установленной и действующей операционной системой Windows 7 Pro 64-bit. Однако, как будет понятно специалистам в данной сфере, варианты первого клиентского устройства 114 конкретно не ограничены. В качестве клиентского устройства 114 могут использоваться, например, персональные компьютеры (настольные компьютеры, ноутбуки, нетбуки и т.п.), устройства беспроводной связи (мобильные телефоны, смартфоны, планшеты и т.п.), и другое оборудование.
[91] Клиентское устройство 114 включает в себя носитель информации (не изображен), реализованный как жесткий диск объемом 500 Гб. Однако, как будет понятно специалистам в данной сфере, данный носитель информации может быть реализован как носитель абсолютно любого типа и характера, включая ОЗУ, ПЗУ, диски (компакт диски, DVD-диски, дискеты, жесткие диски и т.д.), USB флеш-накопители, твердотельные накопители, накопители на магнитной ленте и т.д., а также их комбинации.
[92] Носитель информации может сохранять файлы пользователя и программные инструкции. В частности, носитель информации может хранить программное обеспечение, реализующее функции браузера (не изображен). В общем случае, целью браузера является предоставление возможности пользователю 121 подключаться к у серверу 102, получать и принимать сообщения электронной почты с помощью веб-интерфейса, показывать получаемые и отправляемые сообщения электронной почты на дисплее (не пронумерован), направлять на сервер 102 запросы на выполнение задач. В клиентском устройстве 114 браузер реализован как браузер Яндекс™. Однако, как будет понятно специалистам в данной сфере, реализация браузера никак конкретно не ограничена. В качестве неограничивающих примеров, такими браузерами могут быть Google Chrome, Internet Explorer, и другие. Важно иметь в виду, что любое другое коммерчески доступное или собственное приложение может быть использовано для реализации вариантов осуществления настоящей технологии, не ограничивающих ее объем.
[93] Клиентское устройство 114 включает в себя также дисплей (не пронумерован), являющийся монитором Монитор Dell™ Е2214Н 2214-7803, диагональ 21,5", с разрешением 1920×1080, позволяющий представлять видеоинформацию пользователю 121. Таким образом, пользователь 121 имеет возможность видеть на дисплее в интерфейсе браузера клиентского устройства 114 различные объекты, сообщения электронной почты, папки сообщений электронной почты, а также графические элементы интерфейса, позволяющие пользователю 121 выбирать определенные сообщения электронной почты и делать запросы на выполнение задач с такими сообщениями электронной почты.
[94] В альтернативных воплощениях настоящей технологии, клиентское устройство 114, может быть реализовано таким образом, чтобы обеспечивать возможность совершать операции с другими цифровыми объектами, в том числе формировать запросы на выполнение задач с такими цифровыми объектами и направлять их на сервер 102.
[95] Фиг. 5 является блок-диаграммой способа 500, выполняемого на множестве серверов 102, изображенном на Фиг. 1, и выполненного в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем. Способ 500 является способом выполнения очереди запросов в отношении цифровых объектов. В данном воплощении настоящей технологии, цифровые объекты являются сообщениями электронной почты. В других воплощениях настоящей технологии, цифровые объекты могут быть файлами любого типа.
[96] В вариантах осуществления настоящей технологии способ 500 может выполняться на серверах 102, изображенных на Фиг. 1. Для этого серверы 102 включают в себя носители информации 104, хранящие машиночитаемые инструкции, при выполнении которых серверы 102 выполняют этапы способа 500. Однако, как это будет понятно специалистам в данной области техники, метод 500 может быть осуществлен на других серверах, либо на одном сервере 102. В нижеследующем описании ссылки на сервер 102, рабочие приложения 108, в том числе рабочее приложение 1082, на хранилище данных 110 подразумевает, что рабочие приложения 108, в том числе рабочее приложение 1082, хранилище данных 110 могут быть реализованы одновременно на одном или нескольких серверах 102. Соответственно, обращение к ним и выполнение шагов может осуществляется на соответствующем сервере 102, либо параллельно на нескольких советующих серверах 102.
[97] Этап 502 - получение с клиентского устройства 114 по сети 112 передачи данных первого запроса 202 на выполнение первой задачи
[98] На этапе 502, сервер 102 осуществляет получение с клиентского устройства 114 по сети 112 передачи данных первого запроса 202 пользователя 121 на выполнение первой задачи.
[99] Запросы пользователя 121 включают в себя собственно задачу, подлежащую выполнению, и указание на цифровые объекты из первого множества цифровых объектов, связанных с данной задачей.
spam
@
spam
.
com
[100] В данном воплощении настоящей технологии, запрос 202 пользователя 121 включает в себя задачу удалить без возможности восстановления сообщения электронной почты, и указывает на цифровые объекты, связанные с данной задачей: все сообщения электронной почты, полученных с адреса электронной почты  и находящихся в папке «удаленные». Соответственно, запрос 202 пользователя 121 на выполнение задачи в отношении определенных сообщений электронной почты содержит идентификатор 300 задачи (удаление сообщений электронной почты без возможности восстановления), и идентификаторы 301-310 всех сообщений электронной почты, в отношении которых должна быть выполнена задача.
[101] Затем способ 500 переходит к этапу 504
[102] Этап 504 - определение сервером 102 количества цифровых объектов в первом множестве цифровых объектов
[103] На этапе 504, рабочее приложение 1082 сервера 102 осуществляет определение количества цифровых объектов в первом множестве цифровых объектов.
spam
@
spam
.
com
[104] В данном воплощении настоящей технологии, пользователь 121 направил с клиентского устройства 114 по сети передачи данных на сервер 102 запрос на удаление без возможности восстановления всех сообщений электронной почты, полученных с адреса электронной почты spam@spam.com, и находящихся в папке «удаленные». Для этого пользователь 121 выделил в папке «удаленные» одно из сообщений, полученных с адреса , и выбрал опцию «удалить все сообщения данного пользователя из данной папки». В этом случае один или несколько рабочих приложений 108 может идентифицировать все сообщения электронной почты, соответствующие заданным критериям (отправитель - spam@spam.com, папка - «удаленные»), и определить их количество. Допустим, в качестве примера, что количество сообщений электронной почты, соответствующих данным критериям, оказалось равно десяти, то есть что в папке «удаленные» в момент осуществления соответствующей операции пользователем 121 оказалось десять сообщений электронной почты от отправителя spam@spam.com.
[105] Этап 506 - разделение первого запроса 202 на множество 2020 подзапросов
[106] На этапе 506, рабочее приложение 1082 сервера 102 осуществляет разделение первого запроса 202 пользователя 121 на множество 2020 подзапросов, а именно на подзапросы 2022, 2024 и 2026, причем каждый из подзапросов 2022, 2024 и 2026 относится к части цифровых объектов из первого множества цифровых объектов, связанных с первым запросом. Такое разделение запроса 220 на множество 2020 подзапросов осуществляется в случае, когда количество цифровых объектов, в отношении которых поступил запрос 220 пользователя 121 на выполнение задачи, превышает пороговое значение. В случаях, когда количество цифровых объектов, в отношении которых поступил запрос 220 пользователя 121 на выполнение задачи, не превышает порогового значения, способ 500 заканчивается.
[107] Пороговое значение может быть предварительно запрограммировано. Пороговое значение может быть установлено для каждого типа задачи отдельно. Например, для задачи по удалению сообщений электронной почты без возможности восстановления может быть установлено одно пороговое значение, и для копирования из одной папки в другую папку помеченных пользователем 121 сообщений электронной почты может быть установлено другое пороговое значение.
[108] Порядок разделения запроса на множество подзапросов в упрощенном виде проиллюстрирован на следующем примере со ссылками на Фиг. 2.
spam
@
spam
.
com
spam
@
spam
.
com
[109] Сервер 102 получает по сети передачи данных 112 с клиентского устройства 114 запрос 202 пользователя 121 на выполнение задачи по удалению без возможности восстановления всех сообщений электронной почты, полученных с адреса электронной почты . и находящихся в папке «удаленные». Допустим, в качестве примера, что рабочее приложение 1082, являющееся одним из рабочих приложений 108, определило, что количество сообщений электронной почты, соответствующих данным критериям, равно десяти, и идентифицировало данные сообщения электронной почты. Допустим, что для задачи по удалению сообщений электронной почты без возможности восстановления установлено пороговое значение, равное четырем сообщениям электронной почты. Исходя из этих данных и допущений, запрос на выполнение задачи удалению без возможности восстановления всех сообщений электронной почты, полученных с адреса электронной почты , и находящихся в папке «удаленные», будет разделен на множество 2020 подзапросов, включающее в себя подзапросы 2022, 2024 и 2026.
[110] При разделении запроса на множество подзапросов, рабочее приложение 1082 формирует множество подзапросов таким образом, чтобы каждый из подзапросов включал бы в себя информацию о задаче, а также указание на цифровые объекты из соответствующей части цифровых объектов, в отношении которых запрос на выполнение задачи был сформирован.
[111] Например, как это схематически представлено на Фиг. 3, запрос 202 пользователя 121 на выполнение задачи в отношении определенных сообщений электронной почты содержит идентификатор 300 задачи (удаление сообщений электронной почты без возможности восстановления), и идентификаторы 301-310 десяти сообщений электронной почты, в отношении которых должна быть выполнена задача. Рабочее приложение 1082, определив, что количество сообщений электронной почты, в отношении которых должна быть выполнена задача, превышает пороговое значение «4», разделяет запрос 202 на множество 2020 подзапросов, включающее в себя подзапросы 2022, 2024 и 2026. При этом каждый из подзапросов 2022, 2024 и 2026 содержит в себе идентификатор 300 задачи (удаление сообщений электронной почты без возможности восстановления), и идентификаторы сообщений электронной почты, в отношении которых должен быть выполнен соответствующий подзапрос. Так, подзапрос 2022 включает в себя, помимо идентификатора 300 задачи, идентификаторы 301, 302, 303, 304 четырех сообщений электронной почты, в отношении которых должен быть выполнен подзапрос 2022. Подзапрос 2024 включает в себя, помимо идентификатора 300 задачи, идентификаторы 305, 306, 307, 308 четырех сообщений электронной почты, в отношении которых должен быть выполнен подзапрос 2024. Подзапрос 2026 включает в себя, помимо идентификатора 300 задачи, идентификаторы 309 и 310 двух сообщений электронной почты, в отношении которых должен быть выполнен подзапрос 2026. Таким образом, любой из идентификаторов 301 - 310 десяти сообщений электронной почты, содержащихся в запросе 202, присутствует в одном из подзапросов 2022, 2024 или 2026, образованных в результате разделения запроса 202.
[112] В данном воплощении настоящей технологии подзапросы 2022, 2024 и 2026 будут затем, после расчета уникальных идентификаторов подзапросов, сохранены рабочим приложением 1082 в хранилище 110 подзапросов.
[113] Затем, способ 500 переходит к этапу 508.
[114] Этап 508 - расчет уникальных идентификаторов подзапросов 2022,2024 и 2026
[115] На этапе 508, рабочее приложение 1082 сервера 102 осуществляет расчет уникального идентификатора подзапроса, причем уникальный идентификатор подзапроса основывается по меньшей мере частично на содержимом соответствующего подзапроса.
[116] В данном воплощении настоящей технологии, расчет уникального идентификатора подзапроса осуществляется с использованием алгоритма хеширования, с использованием в качестве входящих данных идентификатора 300 задачи и идентификаторов сообщений электронной почты, в отношении которых должен быть выполнен соответствующий подзапрос. Для расчета уникальных идентификаторов подзапроса создается битовый массив из m бит. Изначально, когда структура данных хранит пустое множество, все m бит обнулены. Пользователь должен определить k независимых хеш-функций h1, …, hk, отображающих каждый элемент в одну из m позиций битового массива достаточно равномерным образом. Для добавления элемента е необходимо записать единицы на каждую из позиций h1(e), …, hk(e) битового массива. Созданный таким образом уникальный идентификатор подзапроса может иметь следующий вид:
4f594a90_6370b0b7b951
где часть «4f594a90» уникального идентификатора подзапроса является номером подзапроса, и где часть «6370b0b7b951», отделенная от номера подзапроса нижним подчеркиванием, является элементом, используемым фильтра Блума.
[117] Расчет уникальных идентификаторов подзапросов в дальнейшем позволит рабочим приложениям 108 применить фильтр Блума (англ.: Bloom filter) при проверке, содержат ли по меньшей мере два разных подзапроса идентификаторы одного и того же сообщения электронной почты. Такая ситуация (наличие двух и более двух подзапросов на выполнение разных задач в отношении одного и того же сообщения электронной почты) возможна, когда такие подзапросы были образованы в результате разделения разных запросов одного и того же пользователя, причем оба запроса, хотя бы частично, сделаны в отношении одного и того же сообщения электронной почты.
[118] Затем, способ 500 переходит к этапу 510.
[119] Этап 510 - сохранение подзапросов 2022, 2024 и 2026 в хранилище 110 подзапросов совместно с соответствующими им идентификаторами подзапросов 2022,2024 и 2026
[120] На этапе 510, рабочее приложение 1082 сервера 102, разделив запрос 202 на множество 2020 подзапросов и произведя расчет уникальных идентификаторов подзапросов 2022, 2024 и 2026, сохраняет множество 2020 подзапросов, в данном воплощении настоящей технологии состоящее из подзапросов 2022, 2024 и 2026, вместе с уникальными идентификаторами подзапросов 2022, 2024 и 2026, в хранилище 110 подзапросов.
[121] В данном воплощении настоящей технологии, для обеспечения хранения подзапросов в хранилище 110 подзапросов, используется Апачи Зукипер™.
[122] На Фиг. 4 схематически представлена структура хранения подзапросов в хранилище 110 подзапросов с использованием Апачи Зукипер™. Для хранения данных используются z-узлы (z-nodes). На фиг. 4 изображены следующие z-узлы: 402, 404, 406, 408, 410, 4062, 4064, 4066. Особенностью z-узлов Апачи Зукипер™ является то, что с одним z-узлом в определенный момент времени возможно осуществление только одного процесса при многопоточной обработке данных. По этой причине, если одно из рабочих приложений 108 осуществляет операцию с определенным z-узлом, то другое рабочее приложение 108 не может осуществлять операцию с этим же самым z-узлом.
[123] Z-узел 402 является корневым узлом.
[124] Затем следуют z-узлы 404, 406, 408, … 410, каждый для отдельного пользователя, сделавшего запрос на выполнение по меньшей мере одного задания в отношении множества сообщений электронной почты. На Фиг. 4 изображены четыре z-узла для пользователей. Однако, как будет понятно специалисту в данной области техники, в действительности количество таких узлов будет значительно большим.
[125] Z-узел 406, изображенный на Фиг. 4, является z-узлом, созданным в отношении пользователя 121, поскольку пользователь 121 направил с клиентского устройства 114 по сети передачи данных на сервер 102 запрос на удаление без возможности восстановления множества сообщений электронной почты, полученных с адреса электронной почты spam@spam.com. и находящихся в папке «удаленные».
[126] Затем, в отношении каждого из пользователей, каждый из которых сделал по меньшей мере один запрос на выполнение одного или нескольких заданий в отношении множества сообщений электронной почты, существуют z-узлы, каждый из которых хранит подзапрос, подлежащими обработке. На Фиг. 4 изображены не все такие z-узлы, а только z-узлы, каждый из которых хранит подзапрос, сформированный при разделении запроса пользователя 121. В данном случае, это z-узлы 4062, 4064 и 4066.
[127] Z-узел 4062 хранит подзапрос 2022.
[128] Z-узел 4064 хранит подзапрос 2024.
[129] Z-узел 4066 хранит подзапрос 2026.
[131] Соответственно, z-узел 4062, хранящий подзапрос 2022, содержит в себе запись 422 в формате JSON, включающую в себя идентификатор задания 300 и идентификаторы сообщений 301, 302, 303, и 304.
[132] Запись 422 может, условно, иметь следующий вид:
[133] Z-узел 4064, хранящий подзапрос 2024, содержит в себе запись 424 в формате JSON, включающую в себя идентификатор задания 300 и идентификаторы сообщений 305, 306, 306, и 308.
[134] Запись 424 может, условно, иметь следующий вид:
[135] Z-узел 4066, хранящий подзапрос 2026, содержит в себе запись 426 в формате JSON, включающую в себя идентификатор задания 300 и идентификаторы сообщений 309 и 310.
[136] Запись 426 может, условно, иметь следующий вид:
[137] Дополнительно, в каждом z-узле, хранящем подзапрос, подлежащими обработке (то есть в z-узлах 4062, 4064, 4066), могут быть записаны уникальные идентификаторы подзапросов 2022, 2024 и 2026, рассчитанные на этапе 506.
[138] Хранилище 110 подзапросов доступно для рабочих приложений 108, которые могут считывать информацию из хранилища 110 подзапросов.
[139] Как было отмечено выше, серверы 102, изображенные на Фиг. 1, могут быть реализованы как один сервер 102, либо как несколько взаимосвязанных серверов 102. Рабочие приложения 108 могут быть, соответственно, распределены между этими серверами, а хранилище данных может быть реализовано как множество хранилищ данных. Соответственно, подзапросы 2022, 2024 и 2026 могут быть сохранены в разные хранилища данных на разных серверах.
[140] Затем, способ 500 переходит к этапу 512.
[141] Этап 512 - получение с клиентского устройства 114 по сети 112 передачи данных второго запроса 604 на выполнение второй задачи
[142] На этапе 512, сервер 102 получает с клиентского устройства 114 по сети 112 передачи данных второй запрос 604 пользователя 121 на выполнение второй задачи. Структура второго запроса 604 схематически представлена на Фиг. 6.
[143] В данном воплощении настоящей технологии, второй запрос 604 пользователя 121 включает в себя вторую задачу переместить сообщения электронной почты из папки «удаленные» в папку «входящие», и указывает на сообщения электронной почты, связанные с данной второй задачей: три сообщения электронной почты, выделенные пользователем 121 мышью в веб-интерфейсе почтового сервиса в браузере клиентского устройства 114. Соответственно, второй запрос 604 пользователя 121 на выполнение второй задачи в отношении определенных сообщений электронной почты содержит идентификатор 600 задачи (перемещение сообщений электронной почты из папки «удаленные» в папку «входящие»), и идентификаторы 307, 601 и 309 трех выделенных пользователем 121 сообщений электронной почты, в отношении которых должна быть выполнена задача.
[144] В данном воплощении настоящей технологии, до получения сервером 102 с клиентского устройства 114 по сети 112 передачи данных второго запроса 604 пользователя 121 на выполнение второй задачи, ни одно из рабочих приложений 108 сервера 102 еще не начало выполнять ни один из подзапросов из множества 2020 подзапросов. Однако в других воплощениях настоящей технологии, до получения сервером 102 с клиентского устройства 114 по сети 112 передачи данных второго запроса 604 пользователя 121 на выполнение второй задачи, одно или несколько рабочих приложений 108 сервера 102 начнут выполнять один или несколько подзапросов из множества 2020 подзапросов.
[145] Затем, способ 500 переходит к этапу 512.
[146] Этап 514 - определение по меньшей мере одного подзапроса из множества 2020 подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который по меньшей мере один цифровой объект также содержится во втором запросе 604 на выполнение второй задачи
[147] На этапе 514, рабочие приложения 108 сервера 102 осуществляют определение по меньшей мере одного подзапроса из множества 2020 подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе 604 на выполнение второй задачи.
[148] Определение по меньшей мере одного подзапроса из множества 2020 подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе 604 на выполнение второй задачи, может быть выполнено различными способами. Говоря в общем, рабочие приложения 108 сервера 102 должны выявить, имеются ли в подзапросах из множества 2020 подзапросов такие подзапросы, которые содержат те же самые идентификаторы, что и второй запрос 604.
[149] Один из способов указанного определения может заключаться в полной проверке всех подзапросов 2022, 2024, 2026 на наличие в них идентификаторов сообщений электронной почты 307, 301 и 309, содержащихся во втором запросе 604 на выполнение второй задачи. Как это будет понятно специалистам в данной области техники, множество 2020 подзапросов обычно включает значительно большее количество подзапросов, чем это показано для простоты понимания на Фиг. 3. Подзапросы, входящие в множество 2020 подзапросов, могут содержать сотни, тысячи и десятки тысяч сообщений.
[150] В данном воплощении настоящей технологии, определение по меньшей мере одного подзапроса из множества 2020 подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе 604 на выполнение второй задачи, осуществляется с использованием алгоритма вероятностной структуры данных. Более конкретно, в данном воплощении настоящей технологии, таком алгоритмом вероятностной структуры данных является фильтр Блума. [151] Фильтр Блума (англ.: Bloom filter) является вероятностной структурой данных, позволяющей компактно хранить множество элементов и проверять принадлежность заданного элемента к множеству. При этом существует возможность получить ложноположительное срабатывание (элемента в множестве нет, но структура данных сообщает, что он есть), но не ложноотрицательное.
[152] Фильтр Блума представляет собой битовый массив из m бит. Изначально, когда структура данных хранит пустое множество, все m бит обнулены. Пользователь должен определить k независимых хеш-функций h1, …, hk, отображающих каждый элемент в одну из m позиций битового массива достаточно равномерным образом. [153] Для добавления элемента е необходимо записать единицы на каждую из позиций h1(е), …, hk(e) битового массива.
[154] Для проверки принадлежности элемента е к множеству хранимых элементов, необходимо проверить состояние битов h1(е), …, hk(e). Если хотя бы один из них равен нулю, элемент не может принадлежать множеству (иначе бы при его добавлении все эти биты были установлены). Если все они равны единице, то структура данных сообщает, что е принадлежит множеству. При этом может возникнуть две ситуации: либо элемент действительно принадлежит к множеству, либо все эти биты оказались установлены по случайности при добавлении других элементов, что и является источником ложных срабатываний в этой структуре данных.
[155] В данном воплощении настоящей технологии, уникальный идентификатор подзапроса, рассчитанный на этапе 506 с использованием алгоритма хеширования, с использованием в качестве входящих данных идентификатора 300 задачи и идентификаторов сообщений электронной почты, в отношении которых должен быть выполнен соответствующий подзапрос, обеспечивает возможность осуществить с помощью фильтра Блума отсев таких подзапросов из множества 2020 подзапросов, в которых идентификаторы 307, 601 и 309 сообщений электронной почты отсутствуют. Следует учитывать, что фильтр Блума позволяет отсеивать подзапросы, в которых идентификаторы 307, 601 и 309 сообщений электронной почты отсутствуют; однако, учитывая возможность ложноположительного срабатывания, среди не отсеянных подзапросов могут оказаться такие подзапросы, в которых идентификаторы 307, 601 и 309 сообщений электронной почты отсутствуют. Соответственно, рабочие приложения 108 сервера 102, после применения фильтра Блума, должны будут осуществить определение по меньшей мере одного подзапроса из множества 2020 подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе 604 на выполнение второй задачи, среди таких подзапросов, которые были не отсеяны фильтром Блума. Однако, как это будет понятно специалистам в данной области техники, объем такой проверки будет значительно меньшим, чем если бы рабочие приложения 108 сервера 102 должны были бы проверять на наличие идентификаторов 307, 601 и 309 сообщений электронной почты все подзапросы во множестве 2020 подзапросов.
[156] В данном воплощении настоящей технологии, рабочие приложения 108 сервера 102 определили, что в двух подзапросах - подзапросе 2024 и в подзапросе 2026 - из множества 2020 подзапросов, содержатся указания на два сообщения электронной почты 307 и 309, указания на которые также содержатся во втором запросе 604 на выполнение второй задачи.
[157] Следует отметить, что в других вариантах воплощения настоящей технологии, когда до получения сервером 102 с клиентского устройства 114 по сети 112 передачи данных второго запроса 604 пользователя 121 на выполнение второй задачи, одно или несколько рабочих приложений 108 сервера 102 начали выполнять один или несколько подзапросов из множества 2020 подзапросов, шаг 516 будет выполнен с несколькими особенностями, а именно: (1) при определении по меньшей мере одного подзапроса из множества 2020 подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе 604 на выполнение второй задачи, не будут приниматься во внимание те подзапросы, которые уже были выполнены, и (2) при определении по меньшей мере одного подзапроса из множества 2020 подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе 604 на выполнение второй задачи, не будут приниматься во внимание те подзапросы, выполнение которых уже начато рабочими приложениями 108, поскольку факт выполнения операции одним из приложений 108 в отношении соответствующего z-узла блокирует доступ к этому z-узлу для других процессов, как это было объяснено при описании Фиг. 4.
[158] Затем, способ 500 переходит к этапу 516.
[159] Этап 516 - обращение к указанному по меньшей мере одному подзапросу из множества 2020 подзапросов, и удаление из этого подзапроса указания на тот по меньшей мере один цифровой объект, указание на который по меньшей мере один цифровой объект также содержится во втором запросе 604 на выполнение второй задачи
[160] На этапе 516, рабочие приложения 108 сервера 102 осуществляют обращение ко всем подзапросам из множества 2020, в которых имеются идентификаторы цифровых объектов, чьи идентификаторы также имеются во втором запросе.
[161] Как было показано выше, рабочие приложения 108 сервера 102 определили, что идентификаторы 307 и 309 присутствуют как во втором запросе 604, так и в подзапросах 2024 и 2026. Соответственно, рабочие приложения 108 обращаются к подзапросам 2024 и 2026, и удаляют из них соответственно идентификаторы 307 и 310.
[162] Затем, способ 500 переходит к этапу 518.
[163] Этап 518 - выполнение подзапросов 2022, 2024 и 2026 в отношении цифровых объектов, указания на которые содержатся в подзапросах 2022, 2024 и 2026 после удаления из по меньшей мере одного подзапроса указанного по меньшей мере одного цифрового объекта, и выполнение второго запроса 604
[164] На этапе 518, рабочие приложения 108 сервера 102 осуществляют выполнение подзапросов 2022, 2024, 2026 в отношении цифровых объектов 301, 302, 303, 304, 305, 306, 308, 310, указания на которые содержатся в подзапросах 2022, 2024, 2026 после удаления из двух подзапросов 2024 и 2026 индикаторов 307 и 309 двух цифровых объектов, и выполнение второго запроса 604 в отношении всех объектов, обозначенных индикаторами 307, 601 и 310.
[165] В практическом плане это означает, что, в данном воплощении настоящей технологии, при исполнении рабочими приложениями 108 сервера 108 подкоманд из первого множества 2020 подкоманд после удаления из них идентификаторов 307 и 309, ни один из файлов, которые были выделены пользователем с целью перемещения из папки «удаленные» в папку «входящие», не будут удалены, а будут перемещены из папки «удаленные» в папку «входящие».
[166] В данном воплощении настоящей технологии, рабочие приложения 108 сервера 102 осуществляют выполнение подзапросов 2022, 2024, 2026 и второго запроса 604 в произвольном порядке. Это значит, что рабочие приложения 108 сервера 102 могут осуществлять (а) сначала выполнение подзапросов 2022, 2024, 2026, и затем второго запроса 604, либо, (б) наоборот, сначала выполнение второго запроса 604, и затем выполнение подзапросов 2022, 2024, 2026, либо (в) сначала некоторых подзапросов из множества 2020 подзапросов, затем второй запрос 604, и затем оставшиеся подзапросы из множества 2020 подзапросов, (г) выполнение второго запроса 604 параллельно с выполнением по меньшей мере одного подзапроса из множества 2020 подзапросов; в данном последнем случае, затем могут быть выполнены подзапросы, которые не были выполнены параллельно с выполнением второго запроса 604.
[167] В альтернативных воплощениях настоящей технологии,
[168] Затем, способ 500 завершается.
[169] В рамках настоящего описания следует понимать, что везде, где указано получение данных от любого клиентского устройства и/или от любого сервера, и/или от любого другого сервера, может использоваться получение электронного или иного сигнала от соответствующего клиентского устройства (сервера, сервера), а отображение на экране устройства может быть реализовано как подача сигнала экрану, в котором содержится определенная информация, которая в дальнейшем может быть интерпретирована определенными образами и по меньшей мере частично отображена на экране клиентского устройства. Подача и получение сигнала не везде указаны в рамках настоящего описания для упрощения изложения и облегчения понимания настоящего решения. Сигналы могут передаваться оптическими методами (по волоконно-оптической связи, например), электронными методами (по проводной или беспроводной связи), механическими методами (передача давления, температуры и/или других физических параметров посредством которых возможна передача сигнала).