RU2609089C2 - Система и способ выполнения очереди запросов в отношении цифровых объектов - Google Patents

Система и способ выполнения очереди запросов в отношении цифровых объектов Download PDF

Info

Publication number
RU2609089C2
RU2609089C2 RU2015106007A RU2015106007A RU2609089C2 RU 2609089 C2 RU2609089 C2 RU 2609089C2 RU 2015106007 A RU2015106007 A RU 2015106007A RU 2015106007 A RU2015106007 A RU 2015106007A RU 2609089 C2 RU2609089 C2 RU 2609089C2
Authority
RU
Russia
Prior art keywords
request
task
server
subqueries
subquery
Prior art date
Application number
RU2015106007A
Other languages
English (en)
Other versions
RU2015106007A (ru
Inventor
Денис Сергеевич Кутуков
Петр Михайлович Резников
Original Assignee
Общество С Ограниченной Ответственностью "Яндекс"
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Общество С Ограниченной Ответственностью "Яндекс" filed Critical Общество С Ограниченной Ответственностью "Яндекс"
Priority to RU2015106007A priority Critical patent/RU2609089C2/ru
Priority to PCT/IB2015/054607 priority patent/WO2016135537A1/en
Publication of RU2015106007A publication Critical patent/RU2015106007A/ru
Application granted granted Critical
Publication of RU2609089C2 publication Critical patent/RU2609089C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/107Computer-aided management of electronic mailing [e-mailing]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/214Monitoring or handling of messages using selective forwarding

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Theoretical Computer Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • Economics (AREA)
  • General Physics & Mathematics (AREA)
  • Marketing (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Operations Research (AREA)
  • General Business, Economics & Management (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Development Economics (AREA)
  • Educational Administration (AREA)
  • Game Theory and Decision Science (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

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

Description

ОБЛАСТЬ ТЕХНИКИ
[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.
[73] Запросы пользователя 121 включают в себя собственно задачу, подлежащую выполнению (например, удаление сообщений электронной почты без возможности восстановления), и указание на цифровые объекты из первого множества цифровых объектов, связанные с данной задачей (например, пометка в качестве подлежащих удалению без возможности восстановления всех сообщений электронной почты, полученных с адреса электронной почты spam @ spam . com и находящихся в папке «удаленные»).
[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 включают в себя собственно задачу, подлежащую выполнению, и указание на цифровые объекты из первого множества цифровых объектов, связанных с данной задачей.
[100] В данном воплощении настоящей технологии, запрос 202 пользователя 121 включает в себя задачу удалить без возможности восстановления сообщения электронной почты, и указывает на цифровые объекты, связанные с данной задачей: все сообщения электронной почты, полученных с адреса электронной почты spam @ spam . com и находящихся в папке «удаленные». Соответственно, запрос 202 пользователя 121 на выполнение задачи в отношении определенных сообщений электронной почты содержит идентификатор 300 задачи (удаление сообщений электронной почты без возможности восстановления), и идентификаторы 301-310 всех сообщений электронной почты, в отношении которых должна быть выполнена задача.
[101] Затем способ 500 переходит к этапу 504
[102] Этап 504 - определение сервером 102 количества цифровых объектов в первом множестве цифровых объектов
[103] На этапе 504, рабочее приложение 1082 сервера 102 осуществляет определение количества цифровых объектов в первом множестве цифровых объектов.
[104] В данном воплощении настоящей технологии, пользователь 121 направил с клиентского устройства 114 по сети передачи данных на сервер 102 запрос на удаление без возможности восстановления всех сообщений электронной почты, полученных с адреса электронной почты [email protected], и находящихся в папке «удаленные». Для этого пользователь 121 выделил в папке «удаленные» одно из сообщений, полученных с адреса spam @ spam . com, и выбрал опцию «удалить все сообщения данного пользователя из данной папки». В этом случае один или несколько рабочих приложений 108 может идентифицировать все сообщения электронной почты, соответствующие заданным критериям (отправитель - [email protected], папка - «удаленные»), и определить их количество. Допустим, в качестве примера, что количество сообщений электронной почты, соответствующих данным критериям, оказалось равно десяти, то есть что в папке «удаленные» в момент осуществления соответствующей операции пользователем 121 оказалось десять сообщений электронной почты от отправителя [email protected].
[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.
[109] Сервер 102 получает по сети передачи данных 112 с клиентского устройства 114 запрос 202 пользователя 121 на выполнение задачи по удалению без возможности восстановления всех сообщений электронной почты, полученных с адреса электронной почты spam @ spam . com. и находящихся в папке «удаленные». Допустим, в качестве примера, что рабочее приложение 1082, являющееся одним из рабочих приложений 108, определило, что количество сообщений электронной почты, соответствующих данным критериям, равно десяти, и идентифицировало данные сообщения электронной почты. Допустим, что для задачи по удалению сообщений электронной почты без возможности восстановления установлено пороговое значение, равное четырем сообщениям электронной почты. Исходя из этих данных и допущений, запрос на выполнение задачи удалению без возможности восстановления всех сообщений электронной почты, полученных с адреса электронной почты spam @ spam . com, и находящихся в папке «удаленные», будет разделен на множество 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 запрос на удаление без возможности восстановления множества сообщений электронной почты, полученных с адреса электронной почты [email protected]. и находящихся в папке «удаленные».
[126] Затем, в отношении каждого из пользователей, каждый из которых сделал по меньшей мере один запрос на выполнение одного или нескольких заданий в отношении множества сообщений электронной почты, существуют z-узлы, каждый из которых хранит подзапрос, подлежащими обработке. На Фиг. 4 изображены не все такие z-узлы, а только z-узлы, каждый из которых хранит подзапрос, сформированный при разделении запроса пользователя 121. В данном случае, это z-узлы 4062, 4064 и 4066.
[127] Z-узел 4062 хранит подзапрос 2022.
[128] Z-узел 4064 хранит подзапрос 2024.
[129] Z-узел 4066 хранит подзапрос 2026.
[130] В каждом таком z-узле, хранящем подзапрос, подлежащими обработке, имеется запись в формате JSON (от англ. JavaScript Object Notation), которая содержит в себе идентификатор задания и идентификаторы сообщений.
[131] Соответственно, z-узел 4062, хранящий подзапрос 2022, содержит в себе запись 422 в формате JSON, включающую в себя идентификатор задания 300 и идентификаторы сообщений 301, 302, 303, и 304.
[132] Запись 422 может, условно, иметь следующий вид:
Figure 00000001
[133] Z-узел 4064, хранящий подзапрос 2024, содержит в себе запись 424 в формате JSON, включающую в себя идентификатор задания 300 и идентификаторы сообщений 305, 306, 306, и 308.
[134] Запись 424 может, условно, иметь следующий вид:
Figure 00000002
[135] Z-узел 4066, хранящий подзапрос 2026, содержит в себе запись 426 в формате JSON, включающую в себя идентификатор задания 300 и идентификаторы сообщений 309 и 310.
[136] Запись 426 может, условно, иметь следующий вид:
Figure 00000003
[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] В рамках настоящего описания следует понимать, что везде, где указано получение данных от любого клиентского устройства и/или от любого сервера, и/или от любого другого сервера, может использоваться получение электронного или иного сигнала от соответствующего клиентского устройства (сервера, сервера), а отображение на экране устройства может быть реализовано как подача сигнала экрану, в котором содержится определенная информация, которая в дальнейшем может быть интерпретирована определенными образами и по меньшей мере частично отображена на экране клиентского устройства. Подача и получение сигнала не везде указаны в рамках настоящего описания для упрощения изложения и облегчения понимания настоящего решения. Сигналы могут передаваться оптическими методами (по волоконно-оптической связи, например), электронными методами (по проводной или беспроводной связи), механическими методами (передача давления, температуры и/или других физических параметров посредством которых возможна передача сигнала).

Claims (56)

1. Исполняемый на сервере способ выполнения очереди запросов в отношении цифровых объектов, способ, включающий:
получение с клиентского устройства по сети передачи данных первого запроса на выполнение первой задачи, первый запрос на выполнение первой задачи включает в себя
первую задачу и
указание на цифровые объекты из первого множества цифровых объектов, связанных с первой задачей;
разделение первого запроса на множество подзапросов, каждый из подзапросов относится к части цифровых объектов из первого множества цифровых объектов, связанных с первым запросом, каждый из подзапросов включает в себя:
информацию о первой задаче и
указание на цифровые объекты из соответствующей части цифровых объектов;
расчет уникального идентификатора подзапроса, причем уникальный идентификатор подзапроса основывается по меньшей мере частично на содержимом соответствующего подзапроса;
сохранение подзапросов в хранилище подзапросов совместно с соответствующими им идентификаторами подзапросов;
получение с клиентского устройства по сети передачи данных второго запроса на выполнение второй задачи, второй запрос на выполнение второй задачи включает в себя
вторую задачу и
указание на по меньшей мере один цифровой объект, связанный со вторым запросом;
основываясь на уникальных идентификаторах подзапросов, хранящихся в хранилище подзапросов, определение по меньшей мере одного подзапроса из множества подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи;
обращение к указанному по меньшей мере одному подзапросу из множества подзапросов и удаление из этого подзапроса указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи;
выполнение подзапросов в отношении цифровых объектов, указания на которые содержатся в подзапросах после удаления из по меньшей мере одного подзапроса указанного по меньшей мере одного цифрового объекта.
2. Способ по п. 1, дополнительно включающий в себя выполнение второго запроса.
3. Способ по п. 2, в котором выполнение второго запроса осуществляется параллельно с выполнением по меньшей мере одного подзапроса.
4. Способ по п. 2, в котором выполнение второго запроса осуществляется после выполнения по меньшей мере одного подзапроса.
5. Способ по п. 1, в котором разделение первого запроса на множество подзапросов включает в себя определение сервером количества цифровых объектов в первом множестве цифровых объектов и в котором разделение первого запроса на множество подзапросов осуществляется в случае, когда количество цифровых объектов в первом множестве цифровых объектов превышает пороговое значение.
6. Способ по п. 1, в котором расчет уникального идентификатора подзапроса осуществляется с использованием алгоритма хеширования.
7. Способ по п. 6, в котором определение по меньшей мере одного подзапроса из множества подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи, осуществляется с использованием алгоритма вероятностной структуры данных.
8. Способ по п. 7, в котором алгоритм вероятностной структуры данных является фильтром Блума.
9. Способ по п. 1, в котором в ответ на получение сервером с клиентского устройства третьего запроса на выполнение третьей задачи сервер осуществляет блокировку исполнения третьего запроса на выполнение третьей задачи.
10. Способ по п. 9, в котором сервер после выполнения подзапросов в отношении цифровых объектов из первого множества цифровых объектов осуществляет разблокировку исполнения третьего запроса на выполнение третьей задачи.
11. Способ по п. 2, в котором в ответ на получение сервером с клиентского устройства третьего запроса на выполнение третьей задачи сервер осуществляет блокировку исполнения третьего запроса на выполнение третьей задачи и в котором сервер после выполнения второго запроса в отношении цифровых объектов осуществляет разблокировку исполнения третьего запроса на выполнение третьей задачи.
12. Способ по п. 1, в котором цифровые объекты являются сообщениями электронной почты.
13. Способ по п. 1, дополнительно включающий приступание к последовательному исполнению сервером подзапросов до получения сервером с клиентского устройства по сети передачи данных второго запроса на выполнение второй задачи.
14. Способ по любому из пп. 1 - 13, в котором сервер является множеством серверов.
15. Сервер, включающий в себя процессор, в котором конфигурация процессора настроена таким образом, чтобы сервер мог осуществлять:
получение с клиентского устройства по сети передачи данных первого запроса на выполнение первой задачи, первый запрос на выполнение первой задачи, включает в себя
первую задачу и
указание на цифровые объекты из первого множества цифровых объектов, связанных с первой задачей;
разделение первого запроса на множество подзапросов, каждый из подзапросов относится к части цифровых объектов из первого множества цифровых объектов, связанных с первым запросом, каждый из подзапросов включает в себя:
информацию о первой задаче и
указание на цифровые объекты из соответствующей части цифровых объектов;
расчет уникального идентификатора подзапроса, причем уникальный идентификатор подзапроса основывается по меньшей мере частично на содержимом соответствующего подзапроса;
сохранение подзапросов в хранилище подзапросов совместно с соответствующими им идентификаторами подзапросов;
получение с клиентского устройства по сети передачи данных второго запроса на выполнение второй задачи, второй запрос на выполнение второй задачи включает в себя
вторую задачу и
указание на по меньшей мере один цифровой объект, связанный со вторым запросом;
основываясь на уникальных идентификаторах подзапросов, хранящихся в хранилище подзапросов, определение по меньшей мере одного подзапроса из множества подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи;
обращение к указанному по меньшей мере одному подзапросу из множества подзапросов и удаление из этого подзапроса указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи;
выполнение подзапросов в отношении цифровых объектов, указания на которые содержатся в подзапросах после удаления из по меньшей мере одного подзапроса указанного по меньшей мере одного цифрового объекта.
16. Сервер по п. 15, в котором конфигурация процессора настроена таким образом, чтобы сервер мог дополнительно осуществлять выполнение второго запроса.
17. Сервер по п. 16, в котором выполнение второго запроса осуществляется параллельно с выполнением по меньшей мере одного подзапроса.
18. Сервер по п. 16, в котором выполнение второго запроса осуществляется после выполнения по меньшей мере одного подзапроса.
19. Сервер по п. 15, в котором разделение первого запроса на множество подзапросов включает в себя определение сервером количества цифровых объектов в первом множестве цифровых объектов и в котором разделение первого запроса на множество подзапросов осуществляется в случае, когда количество цифровых объектов в первом множестве цифровых объектов превышает пороговое значение.
20. Сервер по п. 15, в котором расчет уникального идентификатора подзапроса осуществляется с использованием алгоритма хеширования.
21. Сервер по п. 20, в котором определение по меньшей мере одного подзапроса из множества подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи, осуществляется с использованием алгоритма вероятностной структуры данных.
22. Сервер по п. 21, в котором алгоритм вероятностной структуры данных является фильтром Блума.
23. Сервер по п. 15, в котором конфигурация процессора настроена таким образом, чтобы сервер в ответ на получение сервером с клиентского устройства третьего запроса на выполнение третьей задачи мог дополнительно осуществлять блокировку исполнения третьего запроса на выполнение третьей задачи.
24. Сервер по п. 23, в котором конфигурация процессора настроена таким образом, чтобы сервер после выполнения подзапросов в отношении цифровых объектов из первого множества цифровых объектов мог дополнительно осуществлять разблокировку исполнения третьего запроса на выполнение третьей задачи.
25. Сервер по п. 16, в котором конфигурация процессора настроена таким образом, чтобы сервер в ответ на получение сервером с клиентского устройства третьего запроса на выполнение третьей задачи мог дополнительно осуществлять блокировку исполнения третьего запроса на выполнение третьей задачи и после выполнения второго запроса в отношении цифровых объектов мог дополнительно осуществлять разблокировку исполнения третьего запроса на выполнение третьей задачи.
26. Сервер по п. 15, в котором цифровые объекты являются сообщениями электронной почты.
27. Сервер по п. 15, в котором конфигурация процессора настроена таким образом, чтобы сервер мог дополнительно осуществлять приступание к последовательному исполнению сервером подзапросов до получения сервером с клиентского устройства по сети передачи данных второго запроса на выполнение второй задачи.
28. Сервер по любому из пп. 15-27, реализованный как множество серверов.
RU2015106007A 2015-02-24 2015-02-24 Система и способ выполнения очереди запросов в отношении цифровых объектов RU2609089C2 (ru)

Priority Applications (2)

Application Number Priority Date Filing Date Title
RU2015106007A RU2609089C2 (ru) 2015-02-24 2015-02-24 Система и способ выполнения очереди запросов в отношении цифровых объектов
PCT/IB2015/054607 WO2016135537A1 (en) 2015-02-24 2015-06-18 System for and method of executing the request queue related to digital objects

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2015106007A RU2609089C2 (ru) 2015-02-24 2015-02-24 Система и способ выполнения очереди запросов в отношении цифровых объектов

Publications (2)

Publication Number Publication Date
RU2015106007A RU2015106007A (ru) 2016-09-20
RU2609089C2 true RU2609089C2 (ru) 2017-01-30

Family

ID=56787959

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2015106007A RU2609089C2 (ru) 2015-02-24 2015-02-24 Система и способ выполнения очереди запросов в отношении цифровых объектов

Country Status (2)

Country Link
RU (1) RU2609089C2 (ru)
WO (1) WO2016135537A1 (ru)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230117461A1 (en) * 2021-10-15 2023-04-20 Oracle International Corporation Method and system to implement error handling with fine-grained sql hints

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7353227B2 (en) * 2004-07-23 2008-04-01 Sap Aktiengesellschaft Conflict resolution engine
RU2465634C2 (ru) * 2008-02-29 2012-10-27 Евро Клиа Са/Нв Система обработки инструкций в режиме реального времени
RU2469388C1 (ru) * 2011-09-19 2012-12-10 Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" - Госкорпорация "Росатом" Способ обращения к данным, хранимым в параллельной файловой системе, с иерархической организацией памяти
EP2757491A1 (en) * 2013-01-17 2014-07-23 Box, Inc. Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform
WO2014132246A1 (en) * 2013-02-28 2014-09-04 Safend Ltd. System and method for conflict-free cloud storage encryption

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5278984A (en) * 1990-12-19 1994-01-11 Bull Hn Information Systems Inc. Method for managing requests by specifying time intervals for transmitting a minimum number of messages for specific destinations and priority levels
GB2334116A (en) * 1998-02-04 1999-08-11 Ibm Scheduling and dispatching queued client requests within a server computer
US7702817B2 (en) * 2003-10-28 2010-04-20 Microsoft Corporation Wireless network access technologies for retrieving a virtual resource via a plurality of wireless network interfaces
WO2007040648A1 (en) * 2005-09-29 2007-04-12 Teamon Systems, Inc. Email server for processing a threshold number of email jobs for a given user and related methods
US7958200B2 (en) * 2007-08-14 2011-06-07 International Business Machines Corporation Methods, computer program products, and apparatuses for providing remote client access to exported file systems
US7991948B2 (en) * 2008-01-30 2011-08-02 International Business Machines Corporation Optimizing execution of I/O requests for a disk drive in a computing system
US9043401B2 (en) * 2009-10-08 2015-05-26 Ebay Inc. Systems and methods to process a request received at an application program interface
WO2012173536A1 (en) * 2011-06-15 2012-12-20 Telefonaktiebolaget Lm Ericsson (Publ) Methods and arrangement for dispatching requests
US8762362B1 (en) * 2011-10-21 2014-06-24 Applied Micro Circuits Corporation System and method for updating a data structure

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7353227B2 (en) * 2004-07-23 2008-04-01 Sap Aktiengesellschaft Conflict resolution engine
RU2465634C2 (ru) * 2008-02-29 2012-10-27 Евро Клиа Са/Нв Система обработки инструкций в режиме реального времени
RU2469388C1 (ru) * 2011-09-19 2012-12-10 Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" - Госкорпорация "Росатом" Способ обращения к данным, хранимым в параллельной файловой системе, с иерархической организацией памяти
EP2757491A1 (en) * 2013-01-17 2014-07-23 Box, Inc. Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform
WO2014132246A1 (en) * 2013-02-28 2014-09-04 Safend Ltd. System and method for conflict-free cloud storage encryption

Also Published As

Publication number Publication date
WO2016135537A1 (en) 2016-09-01
RU2015106007A (ru) 2016-09-20

Similar Documents

Publication Publication Date Title
US11604782B2 (en) Systems and methods for scheduling concurrent summarization of indexed data
US9230244B2 (en) Recipient changes in email threads
US9396216B2 (en) Repository redundancy implementation of a system which incrementally updates clients with events that occurred via a cloud-enabled platform
US10268755B2 (en) Systems and methods for providing dynamic indexer discovery
US11221995B2 (en) Data replication from a cloud-based storage resource
RU2646334C2 (ru) Управление файлами с помощью заполнителей
CN107391758B (zh) 数据库切换方法、装置及设备
JP6381776B2 (ja) コンテンツアイテムの共有のための未登録ユーザアカウントの生成
US20160253339A1 (en) Data migration systems and methods including archive migration
US20140337491A1 (en) Repository redundancy implementation of a system which incrementally updates clients with events that occurred via a cloud-enabled platform
US20120310882A1 (en) Key value data storage
EP3532949A1 (en) Change monitoring spanning graph queries
US10489378B2 (en) Detection and resolution of conflicts in data synchronization
US9813417B2 (en) Systems and methods for creating and displaying an electronic communication digest
US10467424B2 (en) File system content based security
KR20140038991A (ko) 가장 최근에 사용된 문서 목록들의 자동 동기화
TW201712565A (zh) 用於預測性檔案快取及同步之技術
RU2643429C2 (ru) Способ управления синхронизацией файлов (варианты), электронное устройство (варианты) и машиночитаемый носитель
US11080239B2 (en) Key value store using generation markers
US11210212B2 (en) Conflict resolution and garbage collection in distributed databases
US9286055B1 (en) System, method, and computer program for aggregating fragments of data objects from a plurality of devices
RU2609089C2 (ru) Система и способ выполнения очереди запросов в отношении цифровых объектов
US20140279873A1 (en) System and method for optimizing file storage on a company computer and a user computer
CN113157716B (zh) 一种数据处理方法、装置、设备及介质
US20140114918A1 (en) Use of proxy objects for integration between a content management system and a case management system