RU2609089C2 - System and method of performing queue of requests for digital objects - Google Patents
System and method of performing queue of requests for digital objects Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/107—Computer-aided management of electronic mailing [e-mailing]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/214—Monitoring 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)
- Development Economics (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Educational Administration (AREA)
- Game Theory and Decision Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
Description
ОБЛАСТЬ ТЕХНИКИFIELD OF TECHNOLOGY
[1] Настоящая технология относится к системе и способу выполнения очереди запросов в отношении цифровых объектов.[1] This technology relates to a system and method for performing a queue of requests for digital objects.
УРОВЕНЬ ТЕХНИКИBACKGROUND
[2] В современных компьютерных технологиях, пользователи онлайн сервисов зачастую направляют со своих клиентских устройств на серверы, обеспечивающие предоставление соответствующего сервиса, запросы на выполнение массовых операций. В некоторых случаях, пользователи направляют два или несколько последовательных запроса на выполнение различных операций. В некоторых случаях, два и более последовательных запросов на выполнение различных операций делаются в отношении двух и более множеств цифровых объектов. В некоторых случаях, данные два и более множества могут, по меньшей мере частично, пересекаться, что может вызывать конфликты при исполнении последовательных запросов в отношении пересекающихся множеств цифровых объектов. В качестве неограничивающего примера ситуации, потенциально ведущей к конфликту при выполнении запросов, можно привести направление пользователем на сервер задачи на удаление всех файлов из определенной папки в облачном хранилище данных, и последующее направление тем же пользователем на сервер второй задачи на перенос файла из вышеуказанной папки в другую папку до окончания исполнения первого запроса.[2] In modern computer technologies, users of online services often send requests from the client devices to the servers providing the corresponding service, to perform mass operations. In some cases, users send two or more consecutive requests to perform various operations. In some cases, two or more consecutive requests for various operations are made with respect to two or more sets of digital objects. In some cases, these two or more sets may, at least partially, intersect, which may cause conflicts when executing consecutive requests for intersecting sets of digital objects. As a non-limiting example of a situation that potentially leads to a conflict when executing requests, we can cite the user sending to the server a task to delete all files from a specific folder in the cloud data storage, and then the same user sending a second task to the server to transfer the file from the above folder to another folder until the completion of the first request.
[3] В заявке на патент США US 20070073720 A1 «Email Server for Processing a Threshold Number of Email Jobs for a Given User and Related Methods» («Почтовый сервер для обработки ограниченного пороговым значением количества сообщений электронной почты определенного пользователя, и относящийся к нему способ») отмечается возможность при направлении пользователем серии заданий для выполнения нескольких одинаковых команд (дубликатов). Такая ситуация возможна, указывается в данном патенте, когда одно взаимодействующее приложение находится в режиме блокировки, а другое взаимодействующее приложение продолжает повторно направлять задание. Формула данного патента предусматривает способ обработки сообщений электронной почты, включая: сохранение программой, управляющей заданиями в отношении сообщений электронной почты, множества заданий в отношении множества пользователей; и в случае, когда количество заданий одного пользователя, обрабатываемых одной программой, управляющей заданиями, в очереди превышает предельно установленное количество, осуществление обработки предельного количества сообщений электронной почты для данного пользователя.[3] In US patent application US 20070073720 A1 “Email Server for Processing a Threshold Number of Email Jobs for a Given User and Related Methods” (“A mail server for processing a threshold-limited number of email messages of a specific user and related thereto” method ”), the possibility is noted when a user sends a series of tasks to perform several identical commands (duplicates). Such a situation is possible, is indicated in this patent when one interacting application is in blocking mode and another interacting application continues to re-direct the task. The formula of this patent provides a method for processing e-mail messages, including: saving a program managing tasks in relation to e-mail messages, many tasks in relation to many users; and in the case when the number of tasks of one user processed by one program managing the tasks in the queue exceeds the maximum number, the processing of the maximum number of e-mail messages for this user.
[4] Таким образом, улучшение существующих компьютерных систем обработки очередей заданий возможно.[4] Thus, the improvement of existing computer systems for processing job queues is possible.
СУЩНОСТЬ ТЕХНОЛОГИИESSENCE OF TECHNOLOGY
[5] Целью настоящей технологии является устранение или смягчение по меньшей мере некоторых из неудобств, присутствующих на существующем уровне техники.[5] The purpose of this technology is to eliminate or mitigate at least some of the inconveniences present in the art.
[6] В соответствии с вариантами осуществления настоящей технологии, предусматривается исполняемый на сервере способ выполнения очереди запросов в отношении цифровых объектов. Способ включает: получение с клиентского устройства по сети передачи данных первого запроса на выполнение первой задачи, первый запрос на выполнение первой задачи, включающий в себя первую задачу и указание на цифровые объекты из первого множества цифровых объектов, связанных с первой задачей; разделение первого запроса на множество подзапросов, каждый из подзапросов относящийся к части цифровых объектов из первого множества цифровых объектов, связанных с первым запросом, каждый из подзапросов, включающий в себя: информацию о первой задаче и указание на цифровые объекты из соответствующей части цифровых объектов; расчет уникального идентификатора подзапроса, причем уникальный идентификатор подзапроса основывается по меньшей мере частично на содержимом соответствующего подзапроса; сохранение подзапросов в хранилище подзапросов совместно с соответствующими им идентификаторами подзапросов; получение с клиентского устройства по сети передачи данных второго запроса на выполнение второй задачи, второй запрос на выполнение второй задачи, включающий в себя вторую задачу и указание на по меньшей мере один цифровой объект, связанный со вторым запросом; основываясь на уникальных идентификаторах подзапросов, хранящихся в хранилище подзапросов, определение по меньшей мере одного подзапроса из множества подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи; обращение к указанному по меньшей мере одному подзапросу из множества подзапросов, и удаление из этого подзапроса указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи; выполнение подзапросов в отношении цифровых объектов, указания на которые содержатся в подзапросах после удаления из по меньшей мере одного подзапроса указанного по меньшей мере одного цифрового объекта.[6] In accordance with embodiments of the present technology, a server-executable method for executing a request queue for digital objects is provided. The method includes: receiving from a client device via a data network a first request for performing a first task, a first request for performing a first task, including a first task and an indication of digital objects from a first plurality of digital objects associated with a first task; dividing the first request into a plurality of subqueries, each of the subqueries relating to a part of digital objects from the first set of digital objects associated with the first request, each of the subqueries including: information about the first task and pointing to digital objects from the corresponding part of digital objects; calculating a unique subquery identifier, wherein the unique subquery identifier is based at least in part on the contents of the corresponding subquery; saving subqueries to the subquery repository together with their corresponding subquery identifiers; receiving from the client device via the data network a second request for a second task, a second request for a second task, including a second task and an indication of at least one digital object associated with the second request; based on the unique identifiers of the subqueries stored in the subquery repository, determining at least one subquery from a plurality of subqueries containing references to that at least one digital object, an indication of which is also contained in the second request for the second task; accessing said at least one subquery from a plurality of subqueries, and removing from this subquery indications of that at least one digital object, an indication of which is also contained in the second request for performing the second task; the execution of subqueries in relation to digital objects, the references to which are contained in subqueries after the deletion of at least one digital object from at least one subquery.
[7] В некоторых вариантах осуществления технологии, способ дополнительно включает в себя выполнение второго запроса.[7] In some embodiments of the technology, the method further includes executing a second request.
[8] В некоторых вариантах осуществления технологии, выполнение второго запроса осуществляется параллельно с выполнением по меньшей мере одного подзапроса.[8] In some embodiments of the technology, the second query is executed in parallel with the execution of at least one subquery.
[9] В некоторых вариантах осуществления технологии, выполнение второго запроса осуществляется после выполнения по меньшей мере одного подзапроса.[9] In some embodiments of the technology, the second query is executed after at least one subquery has been completed.
[10] В некоторых вариантах осуществления технологии, разделение первого запроса на множество подзапросов включает в себя определение сервером количества цифровых объектов в первом множестве цифровых объектов, и разделение первого запроса на множество подзапросов осуществляется в случае, когда количество цифровых объектов в первом множестве цифровых объектов превышает пороговое значение.[10] In some embodiments of the technology, dividing the first request into a plurality of subqueries includes determining the number of digital objects in the first plurality of digital objects by the server, and dividing the first request into the plurality of subqueries when the number of digital objects in the first plurality of digital objects threshold value.
[11] В некоторых вариантах осуществления технологии, расчет уникального идентификатора подзапроса осуществляется с использованием алгоритма хеширования.[11] In some embodiments of the technology, the calculation of the unique identifier of the subquery is performed using a hash algorithm.
[12] В некоторых вариантах осуществления технологии, определение по меньшей мере одного подзапроса из множества подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи, осуществляется с использованием алгоритма вероятностной структуры данных.[12] In some embodiments of the technology, the determination of at least one subquery from a plurality of subqueries containing references to that at least one digital object, which is also indicated in the second request for the second task, is performed using the probabilistic data structure algorithm .
[13] В некоторых вариантах осуществления технологии, алгоритм вероятностной структуры данных является фильтром Блума.[13] In some embodiments of the technology, the probabilistic data structure algorithm is a Bloom filter.
[14] В некоторых вариантах осуществления технологии, в ответ на получение сервером с клиентского устройства третьего запроса на выполнение третьей задачи, сервер дополнительно осуществляет блокировку исполнения третьего запроса на выполнение третьей задачи.[14] In some embodiments of the technology, in response to the server receiving from the client device a third request to perform the third task, the server additionally blocks the execution of the third request to perform the third task.
[15] В некоторых вариантах осуществления технологии, сервер, после выполнение подзапросов в отношении цифровых объектов из первого множества цифровых объектов, осуществляет разблокировку исполнения третьего запроса на выполнение третьей задачи.[15] In some embodiments of the technology, the server, after performing subqueries on digital objects from the first plurality of digital objects, unlocks the execution of the third request to perform the third task.
[16] В некоторых вариантах осуществления технологии, сервер, после выполнения второго запроса в отношении цифровых объектов, осуществляет разблокировку исполнения третьего запроса на выполнение третьей задачи.[16] In some embodiments of the technology, the server, after executing the second request for digital objects, unlocks the execution of the third request for the third task.
[17] В некоторых вариантах осуществления технологии, цифровые объекты являются сообщениями электронной почты.[17] In some embodiments of the technology, digital objects are email messages.
[18] В некоторых вариантах осуществления технологии, способ дополнительно включает в себя приступание к последовательному исполнению сервером подзапросов до получения сервером с клиентского устройства по сети передачи данных второго запроса на выполнение второй задачи.[18] In some embodiments of the technology, the method further includes initiating sequential execution by the server of subqueries until the server receives from the client device via the data network a second request to perform the second task.
[19] Другим объектом настоящей технологии является сервер. Сервер включает в себя процессор. Конфигурация процессора настроена таким образом, чтобы сервер мог осуществлять: получение с клиентского устройства по сети передачи данных первого запроса на выполнение первой задачи, первый запрос на выполнение первой задачи, включающий в себя первую задачу и указание на цифровые объекты из первого множества цифровых объектов, связанных с первой задачей; разделение первого запроса на множество подзапросов, каждый из подзапросов относящийся к части цифровых объектов из первого множества цифровых объектов, связанных с первым запросом, каждый из подзапросов, включающий в себя: информацию о первой задаче и указание на цифровые объекты из соответствующей части цифровых объектов; расчет уникального идентификатора подзапроса, причем уникальный идентификатор подзапроса основывается по меньшей мере частично на содержимом соответствующего подзапроса; сохранение подзапросов в хранилище подзапросов совместно с соответствующими им идентификаторами подзапросов; получение с клиентского устройства по сети передачи данных второго запроса на выполнение второй задачи, второй запрос на выполнение второй задачи, включающий в себя вторую задачу и указание на по меньшей мере один цифровой объект, связанный со вторым запросом; основываясь на уникальных идентификаторах подзапросов, хранящихся в хранилище подзапросов, определение по меньшей мере одного подзапроса из множества подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи; обращение к указанному по меньшей мере одному подзапросу из множества подзапросов, и удаление из этого подзапроса указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи; выполнение подзапросов в отношении цифровых объектов, указания на которые содержатся в подзапросах после удаления из по меньшей мере одного подзапроса указанного по меньшей мере одного цифрового объекта.[19] Another object of the present technology is a server. The server includes a processor. The processor configuration is configured so that the server can: receive from the client device via the data network the first request for the first task, the first request for the first task, which includes the first task and an indication of digital objects from the first set of digital objects connected with the first task; dividing the first request into a plurality of subqueries, each of the subqueries relating to a part of digital objects from the first set of digital objects associated with the first request, each of the subqueries including: information about the first task and pointing to digital objects from the corresponding part of digital objects; calculating a unique subquery identifier, wherein the unique subquery identifier is based at least in part on the contents of the corresponding subquery; saving subqueries to the subquery repository together with their corresponding subquery identifiers; receiving from the client device via the data network a second request for a second task, a second request for a second task, including a second task and an indication of at least one digital object associated with the second request; based on the unique identifiers of the subqueries stored in the subquery repository, determining at least one subquery from a plurality of subqueries containing references to that at least one digital object, an indication of which is also contained in the second request for the second task; accessing said at least one subquery from a plurality of subqueries, and removing from this subquery indications of that at least one digital object, an indication of which is also contained in the second request for performing the second task; the execution of subqueries in relation to digital objects, the references to which are contained in subqueries after the deletion of at least one digital object from at least one subquery.
[20] В некоторых вариантах воплощения сервера, конфигурация процессора настроена таким образом, чтобы сервер мог дополнительно осуществлять выполнение второго запроса.[20] In some embodiments of the server, the processor configuration is configured so that the server can further execute the second request.
[21] В некоторых вариантах воплощения сервера, выполнение второго запроса осуществляется параллельно с выполнением по меньшей мере одного подзапроса.[21] In some embodiments of the server, the second request is executed in parallel with the execution of at least one subquery.
[22] В некоторых вариантах воплощения сервера, выполнение второго запроса осуществляется после выполнения по меньшей мере одного подзапроса.[22] In some embodiments of the server, the second request is executed after at least one subquery has been completed.
[23] В некоторых вариантах воплощения сервера, разделение первого запроса на множество подзапросов включает в себя определение сервером количества цифровых объектов в первом множестве цифровых объектов, и в котором разделение первого запроса на множество подзапросов осуществляется в случае, когда количество цифровых объектов в первом множестве цифровых объектов превышает пороговое значение.[23] In some embodiments of the server, dividing the first request into a plurality of subqueries includes determining by the server the number of digital objects in the first plurality of digital objects, and in which dividing the first request into a plurality of subqueries is performed when the number of digital objects in the first plurality of digital objects exceeds the threshold value.
[24] В некоторых вариантах воплощения сервера, расчет уникального идентификатора подзапроса осуществляется с использованием алгоритма хеширования.[24] In some embodiments of the server, the calculation of the unique identifier of the subquery is performed using a hashing algorithm.
[25] В некоторых вариантах воплощения сервера, определение по меньшей мере одного подзапроса из множества подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи, осуществляется с использованием алгоритма вероятностной структуры данных.[25] In some embodiments of the server, the determination of at least one subquery from a plurality of subqueries containing references to that at least one digital object, which is also indicated in the second request for the second task, is performed using the probabilistic data structure algorithm .
[26] В некоторых вариантах воплощения сервера, алгоритм вероятностной структуры данных является фильтром Блума.[26] In some embodiments of the server, the probabilistic data structure algorithm is a Bloom filter.
[27] В некоторых вариантах воплощения сервера, конфигурация процессора настроена таким образом, чтобы сервер, в ответ на получение сервером с клиентского устройства третьего запроса на выполнение третьей задачи, мог дополнительно осуществлять блокировку исполнения третьего запроса на выполнение третьей задачи.[27] In some embodiments of the server, the processor configuration is configured so that the server, in response to the server receiving from the client device the third request for the third task, can additionally block the execution of the third request for the third task.
[28] В некоторых вариантах воплощения сервера, конфигурация процессора настроена таким образом, чтобы сервер, после выполнения подзапросов в отношении цифровых объектов из первого множества цифровых объектов, мог дополнительно осуществлять разблокировку исполнения третьего запроса на выполнение третьей задачи.[28] In some embodiments of the server, the processor configuration is configured so that the server, after performing subqueries on digital objects from the first set of digital objects, can further unlock the execution of the third request for the third task.
[29] В некоторых вариантах воплощения сервера, конфигурация процессора настроена таким образом, чтобы сервер, после выполнения второго запроса в отношении цифровых объектов, мог дополнительно осуществлять разблокировку исполнения третьего запроса на выполнение третьей задачи.[29] In some embodiments of the server, the processor configuration is configured so that the server, after executing the second request for digital objects, can further unlock the execution of the third request to perform the third task.
[30] В некоторых вариантах воплощения сервера, цифровые объекты являются сообщениями электронной почты.[30] In some embodiments of the server, the digital objects are email messages.
[31] В некоторых вариантах воплощения сервера, конфигурация процессора настроена таким образом, чтобы сервер мог дополнительно осуществлять приступание к последовательному исполнению сервером подзапросов до получения сервером с клиентского устройства по сети передачи данных второго запроса на выполнение второй задачи.[31] In some embodiments of the server, the processor configuration is configured so that the server can further initiate the sequential execution of the server sub-requests before the server receives from the client device via the data network a second request for the second task.
[32] В контексте описания настоящей технологии, «сервер» представляет собой программу, выполняемую на соответствующем оборудовании и способную осуществлять прием запросов (например, подаваемых клиентскими устройствами), передаваемых по сети, и выполнять эти запросы или обеспечивать их выполнение. Оборудование может представлять собой один компьютер или одну компьютерную систему, однако ни одно, ни другое не является обязательным в отношении предлагаемой технологии. В данном контексте выражение «по меньшей мере один сервер» не означает, что каждая задача (например, предусмотренная принятыми инструкциями или запросами) или какая-либо конкретная задача будет принята, выполнена или ее выполнение будет обеспечено тем же самым сервером (то есть тем же самым программным обеспечением и/или оборудованием); предполагается, что прием и передача, выполнение или обеспечение выполнения любой задачи или запроса либо обработка результатов задачи или запроса может осуществлять любое число компонентов программного обеспечения или устройств и все эти компоненты программного обеспечения или оборудования могут быть представлены одним сервером или несколькими серверами, причем термин «сервер» охватывает оба указанных варианта.[32] In the context of the description of the present technology, a “server” is a program running on appropriate equipment and capable of receiving requests (for example, submitted by client devices) transmitted over the network, and executing these requests or ensuring their execution. The equipment may be a single computer or a single computer system, however, neither one nor the other is mandatory in relation to the proposed technology. In this context, the expression “at least one server” does not mean that each task (for example, provided for by accepted instructions or requests) or any specific task will be accepted, completed, or its execution will be provided by the same server (that is, the same most software and / or hardware); it is assumed that the reception and transmission, execution or enforcement of any task or request, or the processing of the results of a task or request, can be carried out by any number of software or device components, and all these software or equipment components can be represented by one server or several servers, the term " server ”covers both of these options.
[33] В контексте описания настоящей технологии, «клиентское устройство» представляет собой любое компьютерное оборудование, обеспечивающее возможность выполнения программного обеспечения, предназначенного для решения требуемой задачи. В контексте настоящего описания, термин «клиентское устройство» в основном ассоциируется с пользователем клиентского устройства. Некоторые (не имеющие ограничительного характера) примеры клиентских устройств включают в себя персональные компьютеры (настольные компьютеры, переносные компьютеры, нетбуки и т.д.), смартфоны и планшеты, а также сетевое оборудование, такое как маршрутизаторы, коммутаторы и шлюзы. Следует отметить, что в данном контексте тот факт, что устройство функционирует в качестве клиентского устройства, не исключает возможности его функционирования в качестве сервера для других клиентских устройств. Использование выражения «клиентское устройство» не препятствует применению нескольких клиентских устройств в процессе приема и передачи, выполнения или обеспечения выполнения задачи либо запроса или обработки результатов задачи или запроса либо этапов способа, представленного в настоящем описании.[33] In the context of the description of this technology, a "client device" is any computer equipment that provides the ability to run software designed to solve the required task. In the context of the present description, the term "client device" is mainly associated with the user of the client device. Some (non-restrictive) examples of client devices include personal computers (desktop computers, laptop computers, netbooks, etc.), smartphones and tablets, and network equipment such as routers, switches, and gateways. It should be noted that in this context, the fact that the device functions as a client device does not exclude the possibility of its functioning as a server for other client devices. The use of the expression “client device” does not impede the use of several client devices in the process of receiving and transmitting, executing, or ensuring the completion of a task or request or processing the results of a task or request or the steps of the method described in the present description.
[34] В контексте описания настоящей технологии, термин «сообщение электронной почты» включает в себя файл, содержащий текст, формируемый отправителем и предназначенный для передачи одному или нескольким получателям посредством электронной почты. Сообщение электронной почты включает в себя также метаданные, в том числе такие метаданные, которые позволяют идентифицировать соответствующее сообщение электронной почты.[34] In the context of the description of the present technology, the term "email message" includes a file containing text generated by the sender and intended to be transmitted to one or more recipients by e-mail. The e-mail message also includes metadata, including such metadata, which allows the identification of the corresponding e-mail message.
[35] В контексте описания настоящей технологии, термин «информация» включает в себя информацию любого характера или типа, которая может быть записана в базе данных. Таким образом, информация охватывает, среди прочего, аудиовизуальную информацию (изображения, фильмы, звукозаписи, презентации и т.д.), данные (данные местоположения, числовые данные и т.д.), текстовую информацию (высказывания, комментарии, вопросы, сообщения и т.д.), документы, электронные таблицы и т.д.[35] In the context of the description of the present technology, the term "information" includes information of any nature or type that can be recorded in a database. Thus, information covers, among other things, audiovisual information (images, films, sound recordings, presentations, etc.), data (location data, numerical data, etc.), text information (statements, comments, questions, messages etc.), documents, spreadsheets, etc.
[36] В контексте описания настоящей технологии, термин «компонент программного обеспечения» охватывает программное обеспечение (соответствующее конкретному оборудованию), которое является одновременно необходимым и достаточным для выполнения конкретной указанной функции (функций).[36] In the context of the description of this technology, the term "software component" covers software (corresponding to a specific hardware), which is both necessary and sufficient to perform a specific specified function (s).
[37] В настоящем описании выражение «носитель информации, предназначенный для использования компьютером» (также кратко именуемый «носитель информации») охватывает носители любого характера и типа, в том числе оперативные запоминающие устройства, постоянные запоминающие устройства, диски (компакт-диски, DVD-диски, гибкие диски, жесткие диски и т.д.), USB-ключи, твердотельные накопители, ленточные накопители и т.д.[37] In the present description, the expression "storage medium intended for use by a computer" (also referred to as "storage medium") encompasses storage media of any nature and type, including random-access memory, read-only memory devices, disks (CDs, DVDs) disks, floppy disks, hard drives, etc.), USB keys, solid state drives, tape drives, etc.
[38] В контексте описания настоящей технологии, «база данных» представляет собой любой структурированный набор данных, независимо от конкретной структуры, программы управления базой данных или оборудования, на котором осуществляется хранение данных, реализована память или иным способом обеспечивается возможность использования данных. База данных может быть реализована на том же оборудовании, что и процесс, осуществляющий хранение или использование информации, записанной в базе данных, или на отдельном оборудовании, таком как выделенный сервер или множество серверов.[38] In the context of describing this technology, a “database” is any structured data set, regardless of the particular structure, database management program or equipment on which data is stored, memory is implemented, or the data can be used in any other way. The database can be implemented on the same equipment as the process that stores or uses the information recorded in the database, or on separate equipment, such as a dedicated server or multiple servers.
[39] В настоящем описании слова «первый», «второй», «третий» и т.д. используются только в качестве описательных элементов для целей разделения существительных, отличающихся друг от друга, а не с целью определения какого-либо конкретного соотношения между указанными существительными. Таким образом, например, следует понимать, что термины «первая база данных» и «третий сервер» не означают введения конкретной последовательности, типа, хронологии, иерархии или ранжирования (например) конкретного сервера или нескольких серверов, а их использование (само по себе) не означает, что в какой-либо конкретной ситуации должен обязательно существовать какой-либо «второй сервер». Кроме того, как указано в данном описании относительно других примеров осуществления технологии, ссылка на «первый» элемент и «второй» элемент не означает, что два элемента не могут представлять собой в реальном мире фактически один и тот же элемент. Таким образом, например, в некоторых случаях «первый» сервер и «второй» сервер могут представлять собой один компонент программного обеспечения и (или) оборудования, а в других ситуациях могут быть реализованы на различном программном обеспечении и (или) оборудовании.[39] In the present description, the words “first”, “second”, “third”, etc. are used only as descriptive elements for the purpose of separating nouns that differ from each other, and not for the purpose of determining any specific relationship between these nouns. Thus, for example, it should be understood that the terms “first database” and “third server” do not mean the introduction of a specific sequence, type, chronology, hierarchy or ranking (for example) of a particular server or several servers, but their use (by itself) does not mean that in any particular situation there must necessarily exist some kind of “second server”. In addition, as indicated in this description regarding other embodiments of the technology, a reference to the “first” element and the “second” element does not mean that two elements cannot actually represent the same element in the real world. Thus, for example, in some cases, the “first” server and the “second” server can be one component of software and (or) equipment, and in other situations can be implemented on various software and (or) equipment.
[40] Каждый из вариантов реализации технологии имеет по меньшей мере одну из вышеупомянутых целей и/или один из вышеупомянутых аспектов, но не обязательно все их. Следует иметь в виду, что некоторые аспекты настоящей технологии, которые стали результатом попытки достичь вышеупомянутой цели, могут не достигать этой цели и/или могут достигать другие цели, специально не упомянутые здесь.[40] Each of the technology implementation options has at least one of the above objectives and / or one of the above aspects, but not all of them. It should be borne in mind that some aspects of this technology that are the result of an attempt to achieve the aforementioned goal may not achieve this goal and / or may achieve other goals not specifically mentioned here.
[41] Дополнительные и/или альтернативные особенности, цели, аспекты и преимущества данной технологии станут очевидны из нижеследующего описания, сопровождающих чертежей и прилагаемой формулы изобретения.[41] Additional and / or alternative features, objectives, aspects and advantages of this technology will become apparent from the following description, accompanying drawings, and the attached claims.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS
[42] Для лучшего понимания настоящей технологии, а также других ее аспектов и особенностей, предлагается обратиться к нижеследующему описанию, которым следует пользоваться совместно с прилагаемыми чертежами, на которых:[42] For a better understanding of the present technology, as well as its other aspects and features, it is proposed to refer to the following description, which should be used in conjunction with the accompanying drawings, in which:
[43] Фиг. 1 является схематическим изображением варианта воплощения сетевой компьютерной системы 100, реализованной в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.[43] FIG. 1 is a schematic illustration of an embodiment of a
[44] Фиг. 2 является схематическим изображением способа разделения первого запроса пользователя на выполнение задачи в отношении множества цифровых объектов на множество подзапросов на выполнение задачи в отношении подмножеств цифровых объектов, выполняемого в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.[44] FIG. 2 is a schematic depiction of a method for dividing a first user request to complete a task regarding a plurality of digital objects into a plurality of subqueries to perform a task on a subset of digital objects performed in accordance with embodiments of the present technology that do not limit its scope.
[45] Фиг. 3 является схематическим изображением структуры первого запроса пользователя на выполнение задачи в отношении множества цифровых объектов, и структуры подзапросов, образованных в результате разделения указанного первого запроса, реализованной в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.[45] FIG. 3 is a schematic diagram of the structure of a first user request to perform a task with respect to a plurality of digital objects, and the structure of subqueries generated by dividing said first request, implemented in accordance with embodiments of the present technology, not limiting its scope.
[46] Фиг. 4 является схематическим изображением структуры хранения подзапросов в хранилище подзапросов с использованием Апачи Зукипер™, реализованной в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.[46] FIG. 4 is a schematic representation of a subquery storage structure in a subquery storage using Apache Zukiper ™ implemented in accordance with embodiments of the present technology that do not limit its scope.
[47] Фиг. 5 является блок-диаграммой способа 500, выполняемого на сервере 102, изображенном на Фиг. 1, выполняемого в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.[47] FIG. 5 is a flowchart of a
[48] Фиг. 6 является схематическим изображением структуры второго запроса пользователя на выполнение второй задачи, и структуры подзапросов, образованных в результате разделения первого запроса, реализованных в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.[48] FIG. 6 is a schematic diagram of the structure of a second user request for a second task, and the structure of subqueries generated by dividing the first request, implemented in accordance with embodiments of the present technology, not limiting its scope.
ПОДРОБНОЕ ОПИСАНИЕDETAILED DESCRIPTION
[49] На Фиг. 1 изображена принципиальная схема сетевой компьютерной системы 100, компоненты которой находятся в связи друг с другом с помощью сети 112 передачи данных.[49] In FIG. 1 is a schematic diagram of a
[50] Важно иметь в виду, что сетевая компьютерная система 100 представлена как наглядный вариант осуществления настоящей технологии. Таким образом, нижеследующее описание должно рассматриваться исключительно как описание наглядных примеров настоящей технологии. Это описание не предназначено для определения объема или установления границ настоящей технологии. Некоторые полезные примеры модификаций сетевой компьютерной системы 100 также могут быть охвачены нижеследующим описанием. Целью этого описания является исключительно оказание помощи в понимании, а не определение объема и границ настоящей технологии. Эти модификации не представляют собой исчерпывающий список, и специалистам в данной области техники будет понятно, что возможны и другие модификации. Кроме того, это не должно интерпретироваться так, что там, где это еще не было сделано, т.е. там, где не были изложены примеры модификаций, никакие модификации невозможны, и/или что то, что описано, является единственным способом осуществления этого элемента данной технологии. Как будет понятно специалисту в данной области техники, это, скорее всего, не так. Кроме того, следует иметь в виду, что сетевая компьютерная система 100 представляет собой в некоторых конкретных проявлениях достаточно простой вариант осуществления настоящей технологии, и в подобных случаях представлен здесь с целью облегчения понимания. Как будет понятно специалисту в данной области техники, многие варианты осуществления настоящей технологии будут обладать гораздо большей сложностью.[50] It is important to keep in mind that the
[51] Сетевая компьютерная система 100 включает в себя множество серверов 102. Серверы 102 являются обычными компьютерными серверами. Ниже будет дано описание одного компьютерного сервера 102. Как будет понятно специалистам в данной области техника, другие компьютерные серверы 102 могут иметь аналогичную структуру, и поэтому не будут описываться отдельно. В некоторых воплощениях настоящей технологии, все компьютерные серверы 102 будут иметь функциональность, описанную ниже применительно к серверу 102. В других воплощениях настоящей технологии, функциональность сервера 102, описанного ниже, может быть разделена между несколькими серверами. Кроме того, в некоторых воплощениях настоящей технологии, некоторые серверы будут иметь всю функциональность сервера 102, как она описана ниже, в то время как один или несколько других серверов могут иметь часть функциональности сервера 102.[51] The
[52] Сервер 102 может представлять собой обычный компьютерный сервер. В примере варианта осуществления настоящей технологии, сервер 102 представляет собой сервер Dell™ PowerEdge™, на котором используется операционная система Microsoft™ Windows Server™.[52]
[53] Излишне говорить, что сервер 102 может представлять собой любое другое подходящее аппаратное и/или прикладное программное, и/или системное программное обеспечение или их комбинацию. В представленном варианте осуществления настоящей технологии, не ограничивающем ее объем, сервер 102 является одиночным сервером. В других вариантах осуществления настоящей технологии, не ограничивающих ее объем, функциональность сервера 102 может быть разделена, и может выполняться с помощью нескольких серверов.[53] Needless to say, the
[54] В целом, варианты осуществления сервера 102 хорошо известны в данной области техники. Таким образом, достаточно отметить, что сервер 102 содержит, среди прочего, интерфейс сетевой связи (не изображен) для двусторонней связи по сети 112 передачи данных; и процессор (не изображен), соединенный с интерфейсом сетевой связи, который выполнен с возможностью выполнять различные процедуры, включая те, что описаны ниже. С этой целью процессор может сохранять или иметь доступ к машиночитаемым инструкциям, выполнение которых инициирует процессор, и выполнять различные описанные здесь процедуры.[54] In general, embodiments of the
[55] К задачам сервера 102 относятся прием сообщений электронной почты, предназначенных пользователю 121, их хранение, передача их из ящика пользователю 121, осуществление с сообщениями электронной почты операций, в том числе операций по запросам пользователя 121. В качестве неограничивающего примера, к операциям, осуществляемым по запросу пользователя, могут относиться удаление одного, нескольких или всех сообщений электронной почты из определенной папки (например, из папки входящие, отправленные, черновики, нежелательная почта, либо из любой иной папки, созданной пользователем либо предоставляемой по умолчанию провайдером услуг пользователю 121). К таким операциям могут также относиться перемещение сообщений электронной почты из одной папки в другую, пометка всех или некоторых сообщений электронной почты как прочитанных, пометка всех или некоторых сообщений электронной почты как непрочитанных, пометка всех или некоторых сообщений электронной почты как нежелательных, присвоение одному, всем или нескольким сообщениям электронной почты определенной категории, создание новых папок, удаление папок, и многие другие.[55] The tasks of the
[56] В альтернативных воплощениях настоящей технологии, в качестве неограничивающего примера, сетевая компьютерная система 100 может включать в себя вместо сервера 102 либо дополнительно к у серверу 102, сервер облачного хранилища данных, либо иной сервер цифровых объектов, каковыми могут являться отдельные файлы, либо группы файлов, в том числе упорядоченные группы файлов. В качестве неограничивающего примера, к операциям, осуществляемым по запросу пользователя, могут относиться удаление одного, нескольких или всех файлов, хранящихся в определенной папке облачного хранилища данных, перемещение файлов из одной папки в другую, переименование файлов, создание, удаление, переименование папок, перемещение папок, в том числе вкладывание одной папки в другую папку, и многие другие.[56] In alternative embodiments of the present technology, as a non-limiting example, the
[57] Сервер 102 соединен с сетью 112 передачи данных через линию связи (не пронумерована).[57] The
[58] Сервер 102 включает в себя носитель информации 104, который может использоваться сервером 102. В принципе, данный носитель информации 104 может быть носителем абсолютно любого типа и характера, включая ОЗУ, ПЗУ, диски (компакт диски, DVD-диски, дискеты, жесткие диски и т.д.), USB флеш-накопители, твердотельные накопители, накопители на магнитной ленте и т.д., а также их комбинации.[58]
[59] Носитель информации 104 сервера 102 предназначен также для хранения модуля 106 почтового сервиса.[59] The
[60] Модуль 106 почтового сервиса может представлять собой программу или часть программы, выполняемую на соответствующем оборудовании и способную осуществлять хранение и/или обработку сообщений электронной почты. Оборудование для модуля 106 почтового сервиса может представлять собой один компьютер или одну компьютерную систему, однако ни одно, ни другое не является обязательным в отношении предлагаемой технологии.[60] The
[61] В данном контексте, использование термина «модуль 106 почтового сервиса» не означает, что каждая задача (например, предусмотренная принятыми инструкциями или запросами) или какая-либо конкретная задача будет принята, выполнена или ее выполнение будет обеспечено тем же самым программным обеспечением и/или оборудованием; предполагается, что выполнение любой задачи или запроса либо обработка результатов задачи или запроса может осуществлять любое число компонентов программного обеспечения или устройств.[61] In this context, the use of the term "
[62] В данном воплощении настоящей технологии, модуль 106 почтового сервиса включает в себя почтовые ящики пользователей, в том числе ящик пользователя 121, сообщения электронной почты пользователя 121 и папки сообщений электронной почты в почтовом ящике пользователя 121, в том числе папки «входящие», «исходящие», «отправленные», «черновики», «нежелательная почта», «удаленные».[62] In this embodiment of the present technology, the
[63] Почтовые ящики представляют собой часть дискового пространства, выделяемого на носителе информации 104 для хранения сообщений электронной почты пользователей, в том числе пользователя 121, где на указанной части дискового пространства ящик хранится как обычный каталог файловой системы. При этом сообщения электронной почты представляют собой файлы данных, находящиеся в данном каталоге файловой системы.[63] Mailboxes are part of the disk space allocated on the
[64] Модуль 106 почтового сервиса может включать в себя базы данных (не изображены), обеспечивающие хранение сообщений электронной почты.[64] The
[65] Модуль 106 почтового сервиса может также обеспечивать хранение метаданных сообщений электронной почты, в том числе идентификаторов сообщений электронной почты.[65] The
[66] Модуль 106 почтового сервиса может включать в себя также системы управления базами данных.[66] The
[67] В данном воплощении настоящей технологии, системы управления базами данных реализованы с использованием Апачи Зукипер™ (Apache ZooKeeper™), являющимся централизованным сервисом для поддержки информации о конфигурации, поддержки присвоения наименований, для обеспечения распределенной синхронизации, и для обеспечения групповых сервисов. Апачи Зукипер™ является программным обеспечением Апачи Софтвере Фаундейшн, предоставляющим программное обеспечение с открытым исходным кодом для обеспечения распределенных координации между серверами, а также обеспечивающее ведение регистра имен для крупных распределенных систем. Апачи Зукипер™ включает в себя набор утилит, которые могут использоваться для имплементации блокировок, барьеров, и прочих механизмов координации между серверами.[67] In this embodiment of the present technology, database management systems are implemented using Apache ZooKeeper ™, which is a centralized service for supporting configuration information, supporting naming, for providing distributed synchronization, and for providing group services. Apache Zukiper ™ is the Apache Software Foundation software, which provides open source software for distributed coordination between servers, as well as name register management for large distributed systems. Apache Zukiper ™ includes a set of utilities that can be used to implement locks, barriers, and other coordination mechanisms between servers.
[68] Особенностью Апачи Зукипер™ является то, что его архитектура предусматривает возможность резервного обеспечения выполнения задач. Если один из ведущих элементов системы (главный сервер 102) дает сбой, то роль главного сервера 102 может взять на себя другой сервер 102.[68] A feature of Apache Zukiper ™ is that its architecture provides the ability to back-up tasks. If one of the leading elements of the system (main server 102) fails, then the
[69] В альтернативных воплощениях настоящей технологии, системы управления базами данных могут быть основаны на использовании любого другого подходящего программного обеспечения. Например, системы управления базами данных могут быть основаны на использовании Redis (REmote Dictionary Server), сетевого журналируемого хранилища данных типа «ключ - значение» с открытым исходным кодом. В других альтернативных воплощениях настоящей технологии, системы управления базами данных могут быть основаны на использовании RabbitMQ. RabbitMQ представляет собой платформу, реализующую систему обмена сообщениями между компонентами программной системы (Message Oriented Middleware) на основе стандарта AMQP (Advanced Message Queuing Protocol).[69] In alternative embodiments of the present technology, database management systems may be based on any other suitable software. For example, database management systems can be based on the use of Redis (REmote Dictionary Server), an open-source, key-value networked journaling data warehouse. In other alternative embodiments of the present technology, database management systems may be based on the use of RabbitMQ. RabbitMQ is a platform that implements a messaging system between components of a software system (Message Oriented Middleware) based on the AMQP (Advanced Message Queuing Protocol) standard.
[70] Модуль 106 почтового сервиса включает в себя также рабочие приложения 108. В данном воплощении настоящей технологии, синхронизацию и координацию работы рабочих приложений 108 обеспечивает Апачи Зукипер™.[70] The
[71] Рабочие приложения 108 могут обеспечивать получение, хранение и отправку сообщений электронной почты пользователя 121.[71]
[72] Рабочие приложения 108 могут также обеспечивать получение, по сети передачи данных 112, одного или нескольких запросов пользователя 121 на выполнение задач, направляемых на сервер 102 с клиентского устройства 114.[72]
[73] Запросы пользователя 121 включают в себя собственно задачу, подлежащую выполнению (например, удаление сообщений электронной почты без возможности восстановления), и указание на цифровые объекты из первого множества цифровых объектов, связанные с данной задачей (например, пометка в качестве подлежащих удалению без возможности восстановления всех сообщений электронной почты, полученных с адреса электронной почты spam @ spam . com и находящихся в папке «удаленные»).[73] Requests of
[74] Рабочие приложения 108 могут также обеспечивать исполнение запросов пользователя 121. В случае получения нескольких запросов пользователя 121 на выполнение задач, рабочие приложения 108 могут осуществлять их исполнение последовательно либо параллельно.[74] Working
[75] Рабочие приложения 108 могут также осуществлять определение количества цифровых объектов, в отношении которых поступил запрос на выполнение определенной задачи.[75] Working
[76] Рабочие приложения 108 могут также осуществлять разделение запроса пользователя 121 на множество подзапросов.[76] Working
[77] Порядок разделения запроса 202 на множество 2020 подзапросов будет проиллюстрирован ниже со ссылками на Фиг. 2 при описании способа 500. Структура запроса 202 и подзапросов 2022, 2024 и 2026 из множества 2020 подзапросов будет ниже проиллюстрирована со ссылками на Фиг. 3 при описании способа 500.[77] The procedure for dividing a
[78] Рабочие приложения 108 могут также обеспечивать расчет уникальных идентификаторов подзапросов.[78] Working
[79] Рабочие приложения 108, разделив запрос на множество подзапросов и произведя расчет уникальных идентификаторов подзапросов, могут сохранять подзапросы из множества подзапросов вместе с уникальными идентификаторами соответствующих подзапросов в хранилище 110 подзапросов.[79] Working
[80] Носитель информации 104 сервера 102 предназначен также для хранения данных, сохраненных в хранилище 110 подзапросов. Хранилище 110 подзапросов, в частности, хранит подзапросы 2022, 2024 и 2026 из множества 2020 подзапросов.[80] The
[81] В одном из воплощений данной технологии, для обеспечения хранения подзапросов в хранилище 110 подзапросов, используется Апачи Зукипер™. В других воплощениях настоящей технологии могут использоваться библиотеки RabbitMQ, ZeroMQ, либо любое другое подходящее программное обеспечение.[81] In one embodiment of this technology, Apache Zukiper ™ is used to provide storage of the subqueries in the 110 subquery storage. In other embodiments of the present technology, RabbitMQ, ZeroMQ, or any other suitable software may be used.
[82] На Фиг. 4 схематически представлена структура хранения подзапросов в хранилище 110 подзапросов с использованием Апачи Зукипер™, которая будет объяснена подробнее при описании этапа 508 способа 500.[82] In FIG. 4 schematically illustrates a structure for storing subqueries in a
[83] При разделении одним из рабочих приложений 108 запроса 202 на множество 2020 подзапросов, рабочее приложение 108 формирует множество 2020 подзапросов и сохраняет подзапросы в вышеуказанное хранилище 110 подзапросов. Хранилище 110 подзапросов доступно для рабочих приложений 108, которые могут считывать информацию из хранилища 110 подзапросов.[83] When one of the working
[84] Как было отмечено выше, сервер 102, изображенный на Фиг. 1, может быть реализован как один сервер 102 либо как несколько взаимосвязанных серверов 102. Рабочие приложения 108 могут быть распределены между этими серверами 102. Говоря о сервере 102 в целом, важно иметь в виду, что различные воплощения сервера 102 даны исключительно в иллюстрационных целях. Таким образом, специалисты в данной области техники смогут понять подробности других конкретных вариантов осуществления воплощения почтовых серверов, которые могут использоваться для реализации настоящей технологии. Таким образом, представленный здесь пример не ограничивает объем настоящей технологии.[84] As noted above, the
[85] Сервер 102, изображенный на Фиг. 1, соединен с сетью 112 передачи данных через линию связи (не пронумерована). В некоторых вариантах осуществления настоящей технологии, не ограничивающих ее объем, сеть 112 передачи данных связи может представлять собой Интернет. В других вариантах осуществления настоящей технологии, сеть 112 передачи данных может быть реализована иначе - в виде глобальной сети передачи данных, локальной сети передачи данных, частной сети передачи данных и т.п.[85] The
[86] Реализация линии связи не ограничена, и будет зависеть от того, какие устройства присоединены к сети 112 передачи данных. В качестве примера, но не ограничения, подключение сервера 102 к сети 112 передачи данных может быть осуществлено по проводной связи (соединение на основе сети Ethernet).[86] The implementation of the communication line is not limited, and will depend on which devices are connected to the
[87] Через сеть передачи данных 112, сервер 112 соединен с клиентским устройством 114.[87] Through the
[88] Клиентское устройство 114 обычно связано с пользователем 121. Пользователем 121 является лицо, чей аккаунт электронной почты размещен на сервере 102.[88]
[89] Следует отметить, что тот факт, что клиентское устройство 114 связано с пользователем 121, не подразумевает какого-либо конкретного режима работы.[89] It should be noted that the fact that
[90] Изображенное на Фиг. 1 клиентское устройство 114 реализовано в виде персонального компьютера Dell™ Precision Т1700 МТ CA033PT170011RUWS с процессором Intel® Xeon™, частота процессора: 3300 МГц, с видеокартой nVIDIA Quadro К2000, с установленной и действующей операционной системой Windows 7 Pro 64-bit. Однако, как будет понятно специалистам в данной сфере, варианты первого клиентского устройства 114 конкретно не ограничены. В качестве клиентского устройства 114 могут использоваться, например, персональные компьютеры (настольные компьютеры, ноутбуки, нетбуки и т.п.), устройства беспроводной связи (мобильные телефоны, смартфоны, планшеты и т.п.), и другое оборудование.[90] Depicted in FIG. 1
[91] Клиентское устройство 114 включает в себя носитель информации (не изображен), реализованный как жесткий диск объемом 500 Гб. Однако, как будет понятно специалистам в данной сфере, данный носитель информации может быть реализован как носитель абсолютно любого типа и характера, включая ОЗУ, ПЗУ, диски (компакт диски, DVD-диски, дискеты, жесткие диски и т.д.), USB флеш-накопители, твердотельные накопители, накопители на магнитной ленте и т.д., а также их комбинации.[91]
[92] Носитель информации может сохранять файлы пользователя и программные инструкции. В частности, носитель информации может хранить программное обеспечение, реализующее функции браузера (не изображен). В общем случае, целью браузера является предоставление возможности пользователю 121 подключаться к у серверу 102, получать и принимать сообщения электронной почты с помощью веб-интерфейса, показывать получаемые и отправляемые сообщения электронной почты на дисплее (не пронумерован), направлять на сервер 102 запросы на выполнение задач. В клиентском устройстве 114 браузер реализован как браузер Яндекс™. Однако, как будет понятно специалистам в данной сфере, реализация браузера никак конкретно не ограничена. В качестве неограничивающих примеров, такими браузерами могут быть Google Chrome, Internet Explorer, и другие. Важно иметь в виду, что любое другое коммерчески доступное или собственное приложение может быть использовано для реализации вариантов осуществления настоящей технологии, не ограничивающих ее объем.[92] The storage medium may store user files and program instructions. In particular, the storage medium may store software that implements browser functions (not shown). In general, the goal of a browser is to enable
[93] Клиентское устройство 114 включает в себя также дисплей (не пронумерован), являющийся монитором Монитор Dell™ Е2214Н 2214-7803, диагональ 21,5", с разрешением 1920×1080, позволяющий представлять видеоинформацию пользователю 121. Таким образом, пользователь 121 имеет возможность видеть на дисплее в интерфейсе браузера клиентского устройства 114 различные объекты, сообщения электронной почты, папки сообщений электронной почты, а также графические элементы интерфейса, позволяющие пользователю 121 выбирать определенные сообщения электронной почты и делать запросы на выполнение задач с такими сообщениями электронной почты.[93]
[94] В альтернативных воплощениях настоящей технологии, клиентское устройство 114, может быть реализовано таким образом, чтобы обеспечивать возможность совершать операции с другими цифровыми объектами, в том числе формировать запросы на выполнение задач с такими цифровыми объектами и направлять их на сервер 102.[94] In alternative embodiments of the present technology, the
[95] Фиг. 5 является блок-диаграммой способа 500, выполняемого на множестве серверов 102, изображенном на Фиг. 1, и выполненного в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем. Способ 500 является способом выполнения очереди запросов в отношении цифровых объектов. В данном воплощении настоящей технологии, цифровые объекты являются сообщениями электронной почты. В других воплощениях настоящей технологии, цифровые объекты могут быть файлами любого типа.[95] FIG. 5 is a flowchart of a
[96] В вариантах осуществления настоящей технологии способ 500 может выполняться на серверах 102, изображенных на Фиг. 1. Для этого серверы 102 включают в себя носители информации 104, хранящие машиночитаемые инструкции, при выполнении которых серверы 102 выполняют этапы способа 500. Однако, как это будет понятно специалистам в данной области техники, метод 500 может быть осуществлен на других серверах, либо на одном сервере 102. В нижеследующем описании ссылки на сервер 102, рабочие приложения 108, в том числе рабочее приложение 1082, на хранилище данных 110 подразумевает, что рабочие приложения 108, в том числе рабочее приложение 1082, хранилище данных 110 могут быть реализованы одновременно на одном или нескольких серверах 102. Соответственно, обращение к ним и выполнение шагов может осуществляется на соответствующем сервере 102, либо параллельно на нескольких советующих серверах 102.[96] In embodiments of the present technology,
[97] Этап 502 - получение с клиентского устройства 114 по сети 112 передачи данных первого запроса 202 на выполнение первой задачи[97] Step 502 - receiving from a
[98] На этапе 502, сервер 102 осуществляет получение с клиентского устройства 114 по сети 112 передачи данных первого запроса 202 пользователя 121 на выполнение первой задачи.[98] At
[99] Запросы пользователя 121 включают в себя собственно задачу, подлежащую выполнению, и указание на цифровые объекты из первого множества цифровых объектов, связанных с данной задачей.[99]
[100] В данном воплощении настоящей технологии, запрос 202 пользователя 121 включает в себя задачу удалить без возможности восстановления сообщения электронной почты, и указывает на цифровые объекты, связанные с данной задачей: все сообщения электронной почты, полученных с адреса электронной почты spam @ spam . com и находящихся в папке «удаленные». Соответственно, запрос 202 пользователя 121 на выполнение задачи в отношении определенных сообщений электронной почты содержит идентификатор 300 задачи (удаление сообщений электронной почты без возможности восстановления), и идентификаторы 301-310 всех сообщений электронной почты, в отношении которых должна быть выполнена задача.[100] In this embodiment of the present technology, the
[101] Затем способ 500 переходит к этапу 504[101] Then, the
[102] Этап 504 - определение сервером 102 количества цифровых объектов в первом множестве цифровых объектов[102]
[103] На этапе 504, рабочее приложение 1082 сервера 102 осуществляет определение количества цифровых объектов в первом множестве цифровых объектов.[103] At
[104] В данном воплощении настоящей технологии, пользователь 121 направил с клиентского устройства 114 по сети передачи данных на сервер 102 запрос на удаление без возможности восстановления всех сообщений электронной почты, полученных с адреса электронной почты spam@spam.com, и находящихся в папке «удаленные». Для этого пользователь 121 выделил в папке «удаленные» одно из сообщений, полученных с адреса spam @ spam . com, и выбрал опцию «удалить все сообщения данного пользователя из данной папки». В этом случае один или несколько рабочих приложений 108 может идентифицировать все сообщения электронной почты, соответствующие заданным критериям (отправитель - spam@spam.com, папка - «удаленные»), и определить их количество. Допустим, в качестве примера, что количество сообщений электронной почты, соответствующих данным критериям, оказалось равно десяти, то есть что в папке «удаленные» в момент осуществления соответствующей операции пользователем 121 оказалось десять сообщений электронной почты от отправителя spam@spam.com.[104] In this embodiment of the present technology, the
[105] Этап 506 - разделение первого запроса 202 на множество 2020 подзапросов[105] Step 506 - splitting the
[106] На этапе 506, рабочее приложение 1082 сервера 102 осуществляет разделение первого запроса 202 пользователя 121 на множество 2020 подзапросов, а именно на подзапросы 2022, 2024 и 2026, причем каждый из подзапросов 2022, 2024 и 2026 относится к части цифровых объектов из первого множества цифровых объектов, связанных с первым запросом. Такое разделение запроса 220 на множество 2020 подзапросов осуществляется в случае, когда количество цифровых объектов, в отношении которых поступил запрос 220 пользователя 121 на выполнение задачи, превышает пороговое значение. В случаях, когда количество цифровых объектов, в отношении которых поступил запрос 220 пользователя 121 на выполнение задачи, не превышает порогового значения, способ 500 заканчивается.[106] At
[107] Пороговое значение может быть предварительно запрограммировано. Пороговое значение может быть установлено для каждого типа задачи отдельно. Например, для задачи по удалению сообщений электронной почты без возможности восстановления может быть установлено одно пороговое значение, и для копирования из одной папки в другую папку помеченных пользователем 121 сообщений электронной почты может быть установлено другое пороговое значение.[107] The threshold value may be preprogrammed. The threshold value can be set for each type of task separately. For example, for the task of deleting e-mail messages without the possibility of recovery, one threshold value can be set, and for copying from one folder to another
[108] Порядок разделения запроса на множество подзапросов в упрощенном виде проиллюстрирован на следующем примере со ссылками на Фиг. 2.[108] The procedure for splitting a query into multiple subqueries in a simplified form is illustrated in the following example with reference to FIG. 2.
[109] Сервер 102 получает по сети передачи данных 112 с клиентского устройства 114 запрос 202 пользователя 121 на выполнение задачи по удалению без возможности восстановления всех сообщений электронной почты, полученных с адреса электронной почты spam @ spam . com. и находящихся в папке «удаленные». Допустим, в качестве примера, что рабочее приложение 1082, являющееся одним из рабочих приложений 108, определило, что количество сообщений электронной почты, соответствующих данным критериям, равно десяти, и идентифицировало данные сообщения электронной почты. Допустим, что для задачи по удалению сообщений электронной почты без возможности восстановления установлено пороговое значение, равное четырем сообщениям электронной почты. Исходя из этих данных и допущений, запрос на выполнение задачи удалению без возможности восстановления всех сообщений электронной почты, полученных с адреса электронной почты spam @ spam . com, и находящихся в папке «удаленные», будет разделен на множество 2020 подзапросов, включающее в себя подзапросы 2022, 2024 и 2026.[109] The
[110] При разделении запроса на множество подзапросов, рабочее приложение 1082 формирует множество подзапросов таким образом, чтобы каждый из подзапросов включал бы в себя информацию о задаче, а также указание на цифровые объекты из соответствующей части цифровых объектов, в отношении которых запрос на выполнение задачи был сформирован.[110] When dividing a request into many subqueries, the working
[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.[111] For example, as schematically represented in FIG. 3, a
[112] В данном воплощении настоящей технологии подзапросы 2022, 2024 и 2026 будут затем, после расчета уникальных идентификаторов подзапросов, сохранены рабочим приложением 1082 в хранилище 110 подзапросов.[112] In this embodiment of the present technology, the
[113] Затем, способ 500 переходит к этапу 508.[113] Then, the
[114] Этап 508 - расчет уникальных идентификаторов подзапросов 2022,2024 и 2026[114]
[115] На этапе 508, рабочее приложение 1082 сервера 102 осуществляет расчет уникального идентификатора подзапроса, причем уникальный идентификатор подзапроса основывается по меньшей мере частично на содержимом соответствующего подзапроса.[115] At
[116] В данном воплощении настоящей технологии, расчет уникального идентификатора подзапроса осуществляется с использованием алгоритма хеширования, с использованием в качестве входящих данных идентификатора 300 задачи и идентификаторов сообщений электронной почты, в отношении которых должен быть выполнен соответствующий подзапрос. Для расчета уникальных идентификаторов подзапроса создается битовый массив из m бит. Изначально, когда структура данных хранит пустое множество, все m бит обнулены. Пользователь должен определить k независимых хеш-функций h1, …, hk, отображающих каждый элемент в одну из m позиций битового массива достаточно равномерным образом. Для добавления элемента е необходимо записать единицы на каждую из позиций h1(e), …, hk(e) битового массива. Созданный таким образом уникальный идентификатор подзапроса может иметь следующий вид:[116] In this embodiment of the present technology, the calculation of the unique identifier of the subquery is carried out using a hashing algorithm using the
4f594a90_6370b0b7b9514f594a90_6370b0b7b951
где часть «4f594a90» уникального идентификатора подзапроса является номером подзапроса, и где часть «6370b0b7b951», отделенная от номера подзапроса нижним подчеркиванием, является элементом, используемым фильтра Блума.where the “4f594a90” part of the unique subquery identifier is the subquery number, and where the “6370b0b7b951” part, separated from the subquery number by an underscore, is the element used by the Bloom filter.
[117] Расчет уникальных идентификаторов подзапросов в дальнейшем позволит рабочим приложениям 108 применить фильтр Блума (англ.: Bloom filter) при проверке, содержат ли по меньшей мере два разных подзапроса идентификаторы одного и того же сообщения электронной почты. Такая ситуация (наличие двух и более двух подзапросов на выполнение разных задач в отношении одного и того же сообщения электронной почты) возможна, когда такие подзапросы были образованы в результате разделения разных запросов одного и того же пользователя, причем оба запроса, хотя бы частично, сделаны в отношении одного и того же сообщения электронной почты.[117] The calculation of the unique identifiers of the subqueries in the future will allow working
[118] Затем, способ 500 переходит к этапу 510.[118] Then, the
[119] Этап 510 - сохранение подзапросов 2022, 2024 и 2026 в хранилище 110 подзапросов совместно с соответствующими им идентификаторами подзапросов 2022,2024 и 2026[119]
[120] На этапе 510, рабочее приложение 1082 сервера 102, разделив запрос 202 на множество 2020 подзапросов и произведя расчет уникальных идентификаторов подзапросов 2022, 2024 и 2026, сохраняет множество 2020 подзапросов, в данном воплощении настоящей технологии состоящее из подзапросов 2022, 2024 и 2026, вместе с уникальными идентификаторами подзапросов 2022, 2024 и 2026, в хранилище 110 подзапросов.[120] At
[121] В данном воплощении настоящей технологии, для обеспечения хранения подзапросов в хранилище 110 подзапросов, используется Апачи Зукипер™.[121] In this embodiment of the present technology, Apache Zukiper ™ is used to provide storage of the subqueries in the 110 subquery storage.
[122] На Фиг. 4 схематически представлена структура хранения подзапросов в хранилище 110 подзапросов с использованием Апачи Зукипер™. Для хранения данных используются z-узлы (z-nodes). На фиг. 4 изображены следующие z-узлы: 402, 404, 406, 408, 410, 4062, 4064, 4066. Особенностью z-узлов Апачи Зукипер™ является то, что с одним z-узлом в определенный момент времени возможно осуществление только одного процесса при многопоточной обработке данных. По этой причине, если одно из рабочих приложений 108 осуществляет операцию с определенным z-узлом, то другое рабочее приложение 108 не может осуществлять операцию с этим же самым z-узлом.[122] In FIG. 4 schematically illustrates the structure of the storage of subqueries in the
[123] Z-узел 402 является корневым узлом.[123] Z-
[124] Затем следуют z-узлы 404, 406, 408, … 410, каждый для отдельного пользователя, сделавшего запрос на выполнение по меньшей мере одного задания в отношении множества сообщений электронной почты. На Фиг. 4 изображены четыре z-узла для пользователей. Однако, как будет понятно специалисту в данной области техники, в действительности количество таких узлов будет значительно большим.[124] Then follow the z-
[125] Z-узел 406, изображенный на Фиг. 4, является z-узлом, созданным в отношении пользователя 121, поскольку пользователь 121 направил с клиентского устройства 114 по сети передачи данных на сервер 102 запрос на удаление без возможности восстановления множества сообщений электронной почты, полученных с адреса электронной почты spam@spam.com. и находящихся в папке «удаленные».[125] The Z-
[126] Затем, в отношении каждого из пользователей, каждый из которых сделал по меньшей мере один запрос на выполнение одного или нескольких заданий в отношении множества сообщений электронной почты, существуют z-узлы, каждый из которых хранит подзапрос, подлежащими обработке. На Фиг. 4 изображены не все такие z-узлы, а только z-узлы, каждый из которых хранит подзапрос, сформированный при разделении запроса пользователя 121. В данном случае, это z-узлы 4062, 4064 и 4066.[126] Then, for each of the users, each of whom has made at least one request to perform one or more tasks for a plurality of email messages, there are z-nodes, each of which stores a subquery to be processed. In FIG. 4, not all such z-nodes are shown, but only z-nodes, each of which stores a subquery formed when splitting
[127] Z-узел 4062 хранит подзапрос 2022.[127] Z-
[128] Z-узел 4064 хранит подзапрос 2024.[128] Z-
[129] Z-узел 4066 хранит подзапрос 2026.[129] Z-
[130] В каждом таком z-узле, хранящем подзапрос, подлежащими обработке, имеется запись в формате JSON (от англ. JavaScript Object Notation), которая содержит в себе идентификатор задания и идентификаторы сообщений.[130] Each such z-node that stores the subquery to be processed has a JSON format entry (from the JavaScript Object Notation), which contains the job identifier and message identifiers.
[131] Соответственно, z-узел 4062, хранящий подзапрос 2022, содержит в себе запись 422 в формате JSON, включающую в себя идентификатор задания 300 и идентификаторы сообщений 301, 302, 303, и 304.[131] Accordingly, the z-
[132] Запись 422 может, условно, иметь следующий вид:[132]
[133] Z-узел 4064, хранящий подзапрос 2024, содержит в себе запись 424 в формате JSON, включающую в себя идентификатор задания 300 и идентификаторы сообщений 305, 306, 306, и 308.[133] Z-
[134] Запись 424 может, условно, иметь следующий вид:[134]
[135] Z-узел 4066, хранящий подзапрос 2026, содержит в себе запись 426 в формате JSON, включающую в себя идентификатор задания 300 и идентификаторы сообщений 309 и 310.[135] Z-
[136] Запись 426 может, условно, иметь следующий вид:[136]
[137] Дополнительно, в каждом z-узле, хранящем подзапрос, подлежащими обработке (то есть в z-узлах 4062, 4064, 4066), могут быть записаны уникальные идентификаторы подзапросов 2022, 2024 и 2026, рассчитанные на этапе 506.[137] Additionally, in each z-node storing the subquery to be processed (that is, in z-
[138] Хранилище 110 подзапросов доступно для рабочих приложений 108, которые могут считывать информацию из хранилища 110 подзапросов.[138]
[139] Как было отмечено выше, серверы 102, изображенные на Фиг. 1, могут быть реализованы как один сервер 102, либо как несколько взаимосвязанных серверов 102. Рабочие приложения 108 могут быть, соответственно, распределены между этими серверами, а хранилище данных может быть реализовано как множество хранилищ данных. Соответственно, подзапросы 2022, 2024 и 2026 могут быть сохранены в разные хранилища данных на разных серверах.[139] As noted above, the
[140] Затем, способ 500 переходит к этапу 512.[140] Then, the
[141] Этап 512 - получение с клиентского устройства 114 по сети 112 передачи данных второго запроса 604 на выполнение второй задачи[141] Step 512 - receiving from the
[142] На этапе 512, сервер 102 получает с клиентского устройства 114 по сети 112 передачи данных второй запрос 604 пользователя 121 на выполнение второй задачи. Структура второго запроса 604 схематически представлена на Фиг. 6.[142] At step 512, the
[143] В данном воплощении настоящей технологии, второй запрос 604 пользователя 121 включает в себя вторую задачу переместить сообщения электронной почты из папки «удаленные» в папку «входящие», и указывает на сообщения электронной почты, связанные с данной второй задачей: три сообщения электронной почты, выделенные пользователем 121 мышью в веб-интерфейсе почтового сервиса в браузере клиентского устройства 114. Соответственно, второй запрос 604 пользователя 121 на выполнение второй задачи в отношении определенных сообщений электронной почты содержит идентификатор 600 задачи (перемещение сообщений электронной почты из папки «удаленные» в папку «входящие»), и идентификаторы 307, 601 и 309 трех выделенных пользователем 121 сообщений электронной почты, в отношении которых должна быть выполнена задача.[143] In this embodiment of the present technology, the
[144] В данном воплощении настоящей технологии, до получения сервером 102 с клиентского устройства 114 по сети 112 передачи данных второго запроса 604 пользователя 121 на выполнение второй задачи, ни одно из рабочих приложений 108 сервера 102 еще не начало выполнять ни один из подзапросов из множества 2020 подзапросов. Однако в других воплощениях настоящей технологии, до получения сервером 102 с клиентского устройства 114 по сети 112 передачи данных второго запроса 604 пользователя 121 на выполнение второй задачи, одно или несколько рабочих приложений 108 сервера 102 начнут выполнять один или несколько подзапросов из множества 2020 подзапросов.[144] In this embodiment of the present technology, before the
[145] Затем, способ 500 переходит к этапу 512.[145] Then, the
[146] Этап 514 - определение по меньшей мере одного подзапроса из множества 2020 подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который по меньшей мере один цифровой объект также содержится во втором запросе 604 на выполнение второй задачи[146] Step 514 - determining at least one subquery from a plurality of 2020 subqueries containing indications of that at least one digital object, the indication of which at least one digital object is also contained in the
[147] На этапе 514, рабочие приложения 108 сервера 102 осуществляют определение по меньшей мере одного подзапроса из множества 2020 подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе 604 на выполнение второй задачи.[147] At
[148] Определение по меньшей мере одного подзапроса из множества 2020 подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе 604 на выполнение второй задачи, может быть выполнено различными способами. Говоря в общем, рабочие приложения 108 сервера 102 должны выявить, имеются ли в подзапросах из множества 2020 подзапросов такие подзапросы, которые содержат те же самые идентификаторы, что и второй запрос 604.[148] The determination of at least one subquery from a plurality of 2020 subqueries containing indications of that at least one digital object, the indication of which is also contained in the
[149] Один из способов указанного определения может заключаться в полной проверке всех подзапросов 2022, 2024, 2026 на наличие в них идентификаторов сообщений электронной почты 307, 301 и 309, содержащихся во втором запросе 604 на выполнение второй задачи. Как это будет понятно специалистам в данной области техники, множество 2020 подзапросов обычно включает значительно большее количество подзапросов, чем это показано для простоты понимания на Фиг. 3. Подзапросы, входящие в множество 2020 подзапросов, могут содержать сотни, тысячи и десятки тысяч сообщений.[149] One of the methods for this determination can be to fully check all
[150] В данном воплощении настоящей технологии, определение по меньшей мере одного подзапроса из множества 2020 подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе 604 на выполнение второй задачи, осуществляется с использованием алгоритма вероятностной структуры данных. Более конкретно, в данном воплощении настоящей технологии, таком алгоритмом вероятностной структуры данных является фильтр Блума. [151] Фильтр Блума (англ.: Bloom filter) является вероятностной структурой данных, позволяющей компактно хранить множество элементов и проверять принадлежность заданного элемента к множеству. При этом существует возможность получить ложноположительное срабатывание (элемента в множестве нет, но структура данных сообщает, что он есть), но не ложноотрицательное.[150] In this embodiment of the present technology, the determination of at least one subquery from a plurality of 2020 subqueries containing references to that at least one digital object, which is also indicated in the
[152] Фильтр Блума представляет собой битовый массив из m бит. Изначально, когда структура данных хранит пустое множество, все m бит обнулены. Пользователь должен определить k независимых хеш-функций h1, …, hk, отображающих каждый элемент в одну из m позиций битового массива достаточно равномерным образом. [153] Для добавления элемента е необходимо записать единицы на каждую из позиций h1(е), …, hk(e) битового массива.[152] The Bloom filter is a bit array of m bits. Initially, when the data structure stores an empty set, all m bits are reset to zero. The user must determine k independent hash functions h1, ..., hk that map each element to one of the m positions of the bit array in a fairly uniform way. [153] To add the element e, it is necessary to write units at each of the positions h1 (e), ..., hk (e) of the bit array.
[154] Для проверки принадлежности элемента е к множеству хранимых элементов, необходимо проверить состояние битов h1(е), …, hk(e). Если хотя бы один из них равен нулю, элемент не может принадлежать множеству (иначе бы при его добавлении все эти биты были установлены). Если все они равны единице, то структура данных сообщает, что е принадлежит множеству. При этом может возникнуть две ситуации: либо элемент действительно принадлежит к множеству, либо все эти биты оказались установлены по случайности при добавлении других элементов, что и является источником ложных срабатываний в этой структуре данных.[154] To check whether an element e belongs to the set of stored elements, it is necessary to check the state of bits h1 (e), ..., hk (e). If at least one of them is equal to zero, the element cannot belong to the set (otherwise, if it were added, all these bits would be set). If they are all equal to one, then the data structure reports that e belongs to the set. In this case, two situations may arise: either the element really belongs to the set, or all these bits turned out to be set by chance when adding other elements, which is the source of false positives in this data structure.
[155] В данном воплощении настоящей технологии, уникальный идентификатор подзапроса, рассчитанный на этапе 506 с использованием алгоритма хеширования, с использованием в качестве входящих данных идентификатора 300 задачи и идентификаторов сообщений электронной почты, в отношении которых должен быть выполнен соответствующий подзапрос, обеспечивает возможность осуществить с помощью фильтра Блума отсев таких подзапросов из множества 2020 подзапросов, в которых идентификаторы 307, 601 и 309 сообщений электронной почты отсутствуют. Следует учитывать, что фильтр Блума позволяет отсеивать подзапросы, в которых идентификаторы 307, 601 и 309 сообщений электронной почты отсутствуют; однако, учитывая возможность ложноположительного срабатывания, среди не отсеянных подзапросов могут оказаться такие подзапросы, в которых идентификаторы 307, 601 и 309 сообщений электронной почты отсутствуют. Соответственно, рабочие приложения 108 сервера 102, после применения фильтра Блума, должны будут осуществить определение по меньшей мере одного подзапроса из множества 2020 подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе 604 на выполнение второй задачи, среди таких подзапросов, которые были не отсеяны фильтром Блума. Однако, как это будет понятно специалистам в данной области техники, объем такой проверки будет значительно меньшим, чем если бы рабочие приложения 108 сервера 102 должны были бы проверять на наличие идентификаторов 307, 601 и 309 сообщений электронной почты все подзапросы во множестве 2020 подзапросов.[155] In this embodiment of the present technology, a unique subquery identifier calculated in
[156] В данном воплощении настоящей технологии, рабочие приложения 108 сервера 102 определили, что в двух подзапросах - подзапросе 2024 и в подзапросе 2026 - из множества 2020 подзапросов, содержатся указания на два сообщения электронной почты 307 и 309, указания на которые также содержатся во втором запросе 604 на выполнение второй задачи.[156] In this embodiment of the present technology,
[157] Следует отметить, что в других вариантах воплощения настоящей технологии, когда до получения сервером 102 с клиентского устройства 114 по сети 112 передачи данных второго запроса 604 пользователя 121 на выполнение второй задачи, одно или несколько рабочих приложений 108 сервера 102 начали выполнять один или несколько подзапросов из множества 2020 подзапросов, шаг 516 будет выполнен с несколькими особенностями, а именно: (1) при определении по меньшей мере одного подзапроса из множества 2020 подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе 604 на выполнение второй задачи, не будут приниматься во внимание те подзапросы, которые уже были выполнены, и (2) при определении по меньшей мере одного подзапроса из множества 2020 подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе 604 на выполнение второй задачи, не будут приниматься во внимание те подзапросы, выполнение которых уже начато рабочими приложениями 108, поскольку факт выполнения операции одним из приложений 108 в отношении соответствующего z-узла блокирует доступ к этому z-узлу для других процессов, как это было объяснено при описании Фиг. 4.[157] It should be noted that in other embodiments of the present technology, when one or
[158] Затем, способ 500 переходит к этапу 516.[158] Then, the
[159] Этап 516 - обращение к указанному по меньшей мере одному подзапросу из множества 2020 подзапросов, и удаление из этого подзапроса указания на тот по меньшей мере один цифровой объект, указание на который по меньшей мере один цифровой объект также содержится во втором запросе 604 на выполнение второй задачи[159] Step 516 - accessing said at least one subquery from a plurality of 2020 subqueries, and removing from this subquery indications of that at least one digital object, an indication of which at least one digital object is also contained in the
[160] На этапе 516, рабочие приложения 108 сервера 102 осуществляют обращение ко всем подзапросам из множества 2020, в которых имеются идентификаторы цифровых объектов, чьи идентификаторы также имеются во втором запросе.[160] At step 516, the
[161] Как было показано выше, рабочие приложения 108 сервера 102 определили, что идентификаторы 307 и 309 присутствуют как во втором запросе 604, так и в подзапросах 2024 и 2026. Соответственно, рабочие приложения 108 обращаются к подзапросам 2024 и 2026, и удаляют из них соответственно идентификаторы 307 и 310.[161] As shown above, the working
[162] Затем, способ 500 переходит к этапу 518.[162] Then, the
[163] Этап 518 - выполнение подзапросов 2022, 2024 и 2026 в отношении цифровых объектов, указания на которые содержатся в подзапросах 2022, 2024 и 2026 после удаления из по меньшей мере одного подзапроса указанного по меньшей мере одного цифрового объекта, и выполнение второго запроса 604[163]
[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.[164] At
[165] В практическом плане это означает, что, в данном воплощении настоящей технологии, при исполнении рабочими приложениями 108 сервера 108 подкоманд из первого множества 2020 подкоманд после удаления из них идентификаторов 307 и 309, ни один из файлов, которые были выделены пользователем с целью перемещения из папки «удаленные» в папку «входящие», не будут удалены, а будут перемещены из папки «удаленные» в папку «входящие».[165] In practical terms, this means that, in this embodiment of the present technology, when the working
[166] В данном воплощении настоящей технологии, рабочие приложения 108 сервера 102 осуществляют выполнение подзапросов 2022, 2024, 2026 и второго запроса 604 в произвольном порядке. Это значит, что рабочие приложения 108 сервера 102 могут осуществлять (а) сначала выполнение подзапросов 2022, 2024, 2026, и затем второго запроса 604, либо, (б) наоборот, сначала выполнение второго запроса 604, и затем выполнение подзапросов 2022, 2024, 2026, либо (в) сначала некоторых подзапросов из множества 2020 подзапросов, затем второй запрос 604, и затем оставшиеся подзапросы из множества 2020 подзапросов, (г) выполнение второго запроса 604 параллельно с выполнением по меньшей мере одного подзапроса из множества 2020 подзапросов; в данном последнем случае, затем могут быть выполнены подзапросы, которые не были выполнены параллельно с выполнением второго запроса 604.[166] In this embodiment of the present technology, the
[167] В альтернативных воплощениях настоящей технологии,[167] In alternative embodiments of the present technology,
[168] Затем, способ 500 завершается.[168] Then,
[169] В рамках настоящего описания следует понимать, что везде, где указано получение данных от любого клиентского устройства и/или от любого сервера, и/или от любого другого сервера, может использоваться получение электронного или иного сигнала от соответствующего клиентского устройства (сервера, сервера), а отображение на экране устройства может быть реализовано как подача сигнала экрану, в котором содержится определенная информация, которая в дальнейшем может быть интерпретирована определенными образами и по меньшей мере частично отображена на экране клиентского устройства. Подача и получение сигнала не везде указаны в рамках настоящего описания для упрощения изложения и облегчения понимания настоящего решения. Сигналы могут передаваться оптическими методами (по волоконно-оптической связи, например), электронными методами (по проводной или беспроводной связи), механическими методами (передача давления, температуры и/или других физических параметров посредством которых возможна передача сигнала).[169] In the framework of the present description, it should be understood that wherever it is indicated that data is received from any client device and / or from any server and / or from any other server, the receipt of electronic or other signal from the corresponding client device (server, server), and display on the device’s screen can be implemented as giving a signal to the screen, which contains certain information, which can be further interpreted by certain images and at least partially selected displayed on the screen of the client device. The supply and receipt of a signal are not always indicated in the framework of the present description to simplify the presentation and facilitate understanding of the present solution. Signals can be transmitted by optical methods (via fiber-optic communication, for example), electronic methods (by wire or wireless), mechanical methods (transmission of pressure, temperature and / or other physical parameters by which a signal can be transmitted).
Claims (56)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2015106007A RU2609089C2 (en) | 2015-02-24 | 2015-02-24 | System and method of performing queue of requests for digital objects |
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 (en) | 2015-02-24 | 2015-02-24 | System and method of performing queue of requests for digital objects |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2015106007A RU2015106007A (en) | 2016-09-20 |
RU2609089C2 true RU2609089C2 (en) | 2017-01-30 |
Family
ID=56787959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2015106007A RU2609089C2 (en) | 2015-02-24 | 2015-02-24 | System and method of performing queue of requests for digital objects |
Country Status (2)
Country | Link |
---|---|
RU (1) | RU2609089C2 (en) |
WO (1) | WO2016135537A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2822554C1 (en) * | 2023-09-18 | 2024-07-09 | Общество с ограниченной ответственностью "Облачные технологии" (ООО "Облачные технологии") | Method and system for moving data in cloud environment |
Families Citing this family (1)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7353227B2 (en) * | 2004-07-23 | 2008-04-01 | Sap Aktiengesellschaft | Conflict resolution engine |
RU2465634C2 (en) * | 2008-02-29 | 2012-10-27 | Евро Клиа Са/Нв | Real-time instruction processing system |
RU2469388C1 (en) * | 2011-09-19 | 2012-12-10 | Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" - Госкорпорация "Росатом" | Method of handling data stored in parallel file system with hierarchical memory organisation |
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)
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 |
DE602006017089D1 (en) * | 2005-09-29 | 2010-11-04 | Teamon Systems Inc | E-MAIL SERVER FOR PROCESSING A THRESHOLD NUMBER OF E-MAIL JOBS FOR A GIVEN USER AND METHOD THEREOF |
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 |
US20140181203A1 (en) * | 2011-06-15 | 2014-06-26 | Telefonaktiebolaget L M 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 |
-
2015
- 2015-02-24 RU RU2015106007A patent/RU2609089C2/en active
- 2015-06-18 WO PCT/IB2015/054607 patent/WO2016135537A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7353227B2 (en) * | 2004-07-23 | 2008-04-01 | Sap Aktiengesellschaft | Conflict resolution engine |
RU2465634C2 (en) * | 2008-02-29 | 2012-10-27 | Евро Клиа Са/Нв | Real-time instruction processing system |
RU2469388C1 (en) * | 2011-09-19 | 2012-12-10 | Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" - Госкорпорация "Росатом" | Method of handling data stored in parallel file system with hierarchical memory organisation |
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 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2822554C1 (en) * | 2023-09-18 | 2024-07-09 | Общество с ограниченной ответственностью "Облачные технологии" (ООО "Облачные технологии") | Method and system for moving data in cloud environment |
Also Published As
Publication number | Publication date |
---|---|
RU2015106007A (en) | 2016-09-20 |
WO2016135537A1 (en) | 2016-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12079255B1 (en) | Systems and methods for updating a status indication in a system providing dynamic indexer discovery | |
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 | |
US11221995B2 (en) | Data replication from a cloud-based storage resource | |
RU2646334C2 (en) | File management using placeholders | |
JP6381776B2 (en) | Generating unregistered user accounts for sharing content items | |
US20160253339A1 (en) | Data migration systems and methods including archive migration | |
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 (en) | Automatic synchronization of most recently used document lists | |
TW201712565A (en) | Technologies for predictive file caching and synchronization | |
JP5395517B2 (en) | Distributed data management system, data management apparatus, data management method, and program | |
RU2643429C2 (en) | Management method of synchronization of files (options), electronic device (options) and computer-readable medium | |
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 (en) | System and method of performing queue of requests for digital objects | |
CN113157716B (en) | Data processing method, device, equipment and medium | |
US20140114918A1 (en) | Use of proxy objects for integration between a content management system and a case management system | |
JP5472885B2 (en) | Program, stream data processing method, and stream data processing computer | |
US20140280347A1 (en) | Managing Digital Files with Shared Locks |