Код документа: RU2577191C2
ОБЛАСТЬ ТЕХНИКИ
[001] Настоящее изобретение относится к компьютерной системе и способу электронного хранения и распространения информации, в частности, распространения информации авторизованным получателям.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
[002] Глобальные компьютерные сети, такие как Интернет, позволяют распространять информацию широкому кругу людей по всему миру. Одним из преимуществ Интернета является то, что используемые протоколы связи не являются частными, что позволяет конечным пользователям осуществлять доступ к Интернету и использовать Интернет без необходимости персонализированного аппаратного или программного обеспечения. Большое число различных предприятий использует компьютерные сети для предоставления своим клиентам быстрого доступа к большому объему информации. В этих областях скорость предоставления удаленным пользователям как защищенных, так и незащищенных данных является крайне важным показателем и зачастую их отличительной чертой. Один из распространенных способов, позволяющих бизнесу распространять данные пользователям с более высокой скоростью, включает использование прокси-серверов, которые размещены в сети ближе к пользователям, запрашивающим данные. Посредством использования прокси-сервера для кэширования ответа на первый пользовательский запрос данных, последующие идентичные запросы данных от того же пользователя могут обрабатываться прокси-сервером без необходимости запроса сервера данных повторно извлекать одну и ту же информацию.
[003] Однако использование прокси-серверов для обеспечения пользователям данных может быть непригодным, когда провайдерам данных требуется надежный контроль доступа к данным. Например, провайдерам финансовых данных необходимо выполнять требования законов и регламентов, регулирующих распространение финансовых данных. Кроме того, финансовая информация является достаточно ценной и провайдеры финансовых данных должны иметь средства для предотвращения доступа неавторизованным пользователям и/или неплательщикам. Следовательно, провайдеры финансовых данных, а также провайдеры данных в других областях могут формировать доступные по разрешению данные, которые предназначены для ограниченной подгруппы пользователей. Во многих используемых в настоящее время системах доступные по разрешению данные запрашиваются из источника данных, а данные, которые передаются, помечаются как некэшируемые для предотвращения доступа к кэшированным данным неавторизованным пользователям. Например, после того как пользователь запрашивает и получает доступные по разрешению данные от провайдера защищенных данных, эти пользовательские разрешения доступа к защищенным данным могут быть впоследствии отменены. Некэшируемые данные не будут кэшироваться на прокси-сервере, и последующие запросы данных для одних и тех же данные потребуют повторного их извлечения с сервера данных.
[004] Однако в более крупных клиент-серверных системах, предоставляющих доступные по разрешению данные пользователям, емкость сервера более или менее линейно зависит от числа пользователей в системе. Соответственно для каждого запроса, формируемого пользователем, или для добавления нового пользователя, увеличивается требуемая емкость сервера для формирования и передачи доступных по разрешению данных. Серверы могут обрабатывать только фиксированное число запросов в единицу времени, и с ростом числа запросов должно увеличиваться и число серверов, что существенно увеличивает затраты финансовых фирм для формирования и передачи доступных по разрешению данных. Соответственно, необходимы дополнительные способы и системы для обеспечения доступа к доступным по разрешению данным.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[005] Настоящее изобретение, как будет более подробно описано ниже и показано на чертежах, относится к системе управления данными для управления доступными по разрешению данными. Аспекты этого изобретения относятся к кэшированию доступных по разрешению данных на сервере кэширования данных для обеспечения более быстрого доступа и доставки данных.
[006] По меньшей мере в одном варианте осуществления изобретения описывается компьютерная система, такая как сервер кэша данных, который кэширует данные вблизи точки входа в сеть провайдера. Возможность кэшировать или хранить данные в месте, расположенном вблизи пользователя, может позволить увеличить число пользователей и число пользовательских запросов без увеличения числа серверов данных, которые формируют данные. Расположение сервера кэша данных вблизи точки входа в сеть провайдера позволяет уменьшить время, необходимое для передачи данных конечному пользователю, так как передача данных в сервер кэша данных обычно осуществляется до пользовательского запроса данных. Дополнительно, серверы кэша данных являются более дешевыми, чем серверы данных, что уменьшает расходы финансовых фирм на формирование и передачу данных пользователю.
[007] По меньшей мере в одном варианте осуществления изобретения компьютерный сервер сконфигурирован для приема доступных по разрешению данных от сервера данных и кэширования принятых данных. Доступные по разрешению данные могут иметь ассоциированные разрешения данных, соответствующие по меньшей мере одному пользователю, авторизованному для доступа к компьютерному серверу. Компьютерный сервер может кэшировать доступные по разрешению данные и хранить эти данные и связанный идентификатор, соответствующий ассоциированным разрешениями данных для доступных по разрешению данных. Компьютерный сервер может извлекать пользовательские разрешения, соответствующие пользователю, и определять, пересекаются ли пользовательские разрешения с ассоциированными разрешениями данных для кэшированных доступных по разрешению данных. Если пользовательские разрешения пересекаются с ассоциированными разрешениями данных для кэшированных доступных по разрешению данных, компьютерный сервер может отправить пользователю по меньшей мере поднабор кэшированных доступных по разрешению данных.
[008] По меньшей мере в одном варианте осуществления изобретения способ управления кэшированием данных может включать прием компьютерной системой первого запроса данных, соответствующего первому пользователю, имеющему разрешения первого пользователя. Компьютерная система может определять, хранятся ли в локальном кэше данных данные первого ответа, соответствующие первому запросу данных и разрешениям первого пользователя. Если данные первого ответа хранятся в локальном кэше, первому пользователю могут быть переданы данные ответа. Может быть принят второй запрос данных, соответствующий второму пользователю, имеющему разрешения второго пользователя. Разрешения второго пользователя могут отличаться от разрешений первого пользователя. Компьютерная система может определять, хранятся ли в локальном кэше данных данные второго ответа, соответствующие запросу второго пользователя и разрешениям второго пользователя, и, если данные второго ответа хранятся в локальном кэше данных, отправлять второму пользователю данные второго ответа. Данные второго ответа могут отличаться отданных первого ответа.
[009] Другие возможности и преимущества изобретения станут очевидны специалистам из последующего подробного описания, формулы изобретения и чертежей, на которых одинаковые цифровые обозначения используются для указания одинаковых частей.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0010] На фиг.1 представлен пример осуществления сети и устройства обработки данных, используемого в системе управления кэшем данных, в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0011] На фиг.2 представлена структурная схема примера системы управления кэшем доступных по разрешению данных в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0012] На фиг.3 представлена блок-схема управления кэшем доступных по разрешению данных в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0013] На фиг.4 представлена другая структурная схема примера системы управления кэшем данных в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0014] На фиг.5а представлена таблица, содержащая пример данных, соответствующих разрешениям данных в примере системы управления кэшем данных в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0015] На фиг.5b представлена таблица, содержащая пример разрешений пользователя в примере системы управления кэшем данных в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0016] На фиг.6 представлена блок-схема примера управления кэшем доступных по разрешению данных в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0017] На фиг.7 представлена блок-схема другого примера управления кэшем доступных по разрешению данных в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0018] На фиг.8 представлена блок-схема другого примера управления кэшем доступных по разрешению данных в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0019] Перед рассмотрением подробного описания вариантов осуществления изобретения необходимо понимать, что изобретение не ограничено в применении деталями конструкции и схемой размещения компонентов, указанными в последующем описании или на чертежах. Изобретение может быть реализовано в других вариантах осуществления и может быть практически применимо или выполнено различными способами. Также необходимо понимать, что используемая терминология предназначена для описания, а не для ограничения изобретения. Наоборот, используемые фразы и термины, должны пониматься в широком значении. Использование термина «включает» и его различных вариаций предназначено для охвата элементов, перечисленных после, и их эквивалентов, а также дополнительных элементов и их эквивалентов. Использование терминов «установленный», «соединенный», «связанный», «размещенный», «сцепленный» и аналогичных терминов означает как прямые, так и непрямые установку, соединение, связь, размещение и сцепление.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
[0020] На фиг.1 представлен пример сетевой архитектуры и устройства обработки данных, которые могут быть использованы для реализации одного и более аспектов изобретения. Различные сетевые узлы 103, 105, 107 и 109 могут быть соединены между собой посредством глобальной сети 101 (WAN - wide area network), такой как Интернет. Другие сети, включая частные внутренние сети, корпоративные сети, сети LAN, беспроводные сети, персональные сети (PAN - personal networks) и т.п., также могут использоваться совместно или в качестве альтернативы. Сеть 101 представлена лишь в качестве примера и может быть заменена меньшими или дополнительными компьютерными сетями. Локальная сеть (LAN - local area network) может иметь одну и более известных LAN-топологий и может использовать один и более из множества различных протоколов, таких как Ethernet. Устройства 103, 105, 107, 109 и другие устройства (не показаны) могут быть соединены с одной и более сетями посредством проводов витой пары, коаксиального кабеля, оптоволокна, радиоволн и другой среды передачи данных.
[0021] Термин «сеть», используемый в описании и на чертежах, относится не только к системам, в которых удаленные устройства хранения данных соединены вместе посредством одного и более путей связи, но также и к отдельным устройствам с возможностью хранения данных, которые могут быть время от времени подключены к таким системам. Следовательно, термин «сеть» охватывает не только «физическую сеть», но также и «сеть контента», которая содержит данные, приписываемые отдельному объекту, которые размещаются по всем физическим сетям.
[0022] Компоненты могут включать один и более серверов 103 данных, web-серверов 105 и клиентских компьютеров 107, 109. Сервер 103 данных обеспечивает общий доступ, управление и администрирование базами данных и управление программным обеспечением для реализации одного и более аспектов настоящего изобретения. Сервер 103 данных может быть соединен с web-сервером 105, с которым пользователи взаимодействуют и получают запрашиваемые данные. Альтернативно, сервер 103 данных может выступать в роли web-сервера и напрямую подключаться к Интернету. Сервер 103 данных может подключаться к web-серверу 105 через сеть 101 (например, Интернет), посредством прямого или непрямого соединения, или через другую сеть. Пользователи могут взаимодействовать с сервером 103 данных с использованием удаленных компьютеров 107, 109, например, используя web-браузер для соединения с сервером 103 данных посредством одного и более открытых web-сайтов, размещенных на web-сервере 105. Клиентские компьютеры 107, 109 могут быть использованы совместно с сервером 103 данных для доступа к данным, хранящимся на нем, или могут использоваться для других целей. Например, пользователь с клиентского устройства 107 может получать доступ к web-серверу 105, используя Интернет-браузер, как известно в данной области техники, или посредством выполнения программного приложения, которое взаимодействует с web-сервером 105 и/или сервером 103 данных по компьютерной сети (такой как Интернет).
[0023] Серверы и приложения могут размещаться совместно на одних и тех же физических машинах и содержать отдельные виртуальные или логические адреса, или могут размещаться на отдельных физических машинах. На фиг.1 представлен только один пример сетевой архитектуры, которая может быть использована, и специалистам понятно, что конкретная сетевая архитектура и используемые устройства обработки данных могут меняться и являются второстепенным по отношению к описанной далее функциональности, которую они обеспечивают. Например, услуги, предоставляемые web-сервером 105 и сервером 103 данных, могут быть объединены в одном сервере.
[0024] Каждый компонент 103, 105, 107, 109 может являться любым из известных типов компьютера, сервера или устройства обработки данных. Сервер 103 данных, например, может включать процессор 111, управляющий общей работой сервера 103 данных. Сервер 103 данных может также включать RAM 113, ROM 115, сетевой интерфейс 117, интерфейсы 119 ввода/вывода (I/O) (например, клавиатура, мышь, монитор, принтер и т.д.) и память 121. Интерфейсы I/O 119 могут включать различные интерфейсные модули и приводы для чтения, записи, отображения и/или печати данных или файлов. Память 121 может также хранить программное обеспечение 123 операционной системы для управления общей работой устройства 103 обработки данных, логику 125 управления для выдачи инструкций серверу 103 данных для реализации аспектов настоящего изобретения и другие программные приложения 127, осуществляющие вторичную функциональность, функциональность поддержки и/или другую функциональность, которая может использоваться или не использоваться в связи с аспектами настоящего изобретения. Логика управления может также упоминаться в данном описании как программное обеспечение 125 сервера данных. Под функциональностью программного обеспечения сервера данных могут подразумеваться операции или решения, принимаемые автоматически на основе правил, закодированных в виде логики управления, или выполняемых вручную пользователем посредством ввода данных в систему, и/или в виде комбинации автоматической обработки на основе пользовательского ввода (например, запросы, обновления данных и т.п.).
[0025] Память 121 может также хранить данные, используемые при реализации одного и более аспектов настоящего изобретения, и включать первую базу 129 данных и вторую базу 131 данных. В некоторых вариантах осуществления изобретения первая база данных может включать вторую базу данных (например, в виде отдельной таблицы, отчета и т.д.). То есть информация может храниться в одной базе данных или раздельно в различных логических, виртуальных или физических базах данных в зависимости от дизайна системы. Устройства 105, 107, 109 могут иметь схожую или различную архитектуру в сравнении с архитектурой, описанной в отношении устройства 103. Специалистам понятно, что функциональность устройства 103 обработки данных (или устройств 105, 107, 109) может распространяться на множество устройств обработки данных, например, для распределения нагрузки обработки между множеством компьютеров, выделения транзакций на основе географического местоположения, уровня пользовательского доступа, качества обслуживания (QoS - quality of service) и т.д.
[0026] Один и более аспектов настоящего изобретения могут быть реализованы в виде машиночитаемых данных и/или исполняемых компьютером инструкций, например, в одном и более программных модулях, исполняемых одним и более компьютерами или другими устройствами. Как правило, программные модули включают процедуры, программы, объекты, компоненты, структуры данных и т.д., которые выполняют определенные задачи или реализуют определенные абстрактные типы данных, когда исполняются процессором компьютера или другого устройства. Модули могут быть написаны на языке программирования исходного кода, который далее компилируется для исполнения, или на скриптовом языке, таком как (но не ограничиваясь этим) HTML или XML. Исполняемые компьютером инструкции могут хранится на машиночитаемом носителе данных, таком как жесткий диск, оптический диск, съемный носитель данных, твердотельный накопитель, RAM и т.д. Как понятно специалистам, функциональность программных модулей может объединяться или распределяться в различных вариантах осуществления изобретения. Кроме того, функциональность может быть реализована полностью или частично в эквивалентном встроенном программном обеспечении или аппаратном обеспечении, таких как интегральные схемы, программируемые вентильные матрицы (FPGA - field programmable gate arrays) и т.п. Конкретные структуры данных могут более эффективно реализовывать один и более аспектов настоящего изобретения, и такие структуры данных рассматриваются в рамках исполняемых компьютером инструкций и данных, используемых компьютером.
[0027] На фиг.2 показан пример осуществления системы 200 управления данными. Как показано на фиг.2, система 200 управления данными может включать сервер 202 кэша данных, сервер 204 данных и сервер 206 разрешений. Сервер 202 кэша данных может быть компьютерным сервером любого типа, сконфигурированным для хранения кэшированных данных для доставки пользователям, и может располагаться отдельно от сервера 204 данных. В одном из вариантов осуществления изобретения сервер 202 кэша данных может являться оконечным устройством, расположенным на краю компьютерных ресурсов (например, компьютерной сети) провайдера данных и может являться для пользователей точкой входа в сеть провайдера данных. Экономия времени и затрат, посредством кэширования данных на краю компьютерных ресурсов, расположенном ближе к пользователю, чем сервер 204 данных, может привести к передаче данных пользователям с сервера 202 кэша данных, без осуществления запроса данных с сервера 204 данных каждый раз, когда делается запрос. Путем устранения необходимости осуществления запроса и получения данных с сервера 204 данных может быть уменьшено время доставки данных пользователю. Кроме того, может быть снижена нагрузка от многочисленных запросов данных с сервера 204 данных, что потенциально может увеличить производительность и надежность системы.
[0028] Как показано на фиг.2, сервер 202 кэша данных может взаимодействовать с сервером 204 данных, который содержит доступные по разрешению данные. Под доступными по разрешению данными понимаются данные, которые защищены, так что доступ к конкретным доступным по разрешению данным может быть разрешен только для конкретных пользователей. В некоторых примерах, пользователи могут иметь ассоциированные наборы разрешений (например, прав), которые определяют их доступ к различным данным в системе. Например, пользователям может быть предоставлено право просматривать весь набор данных или лишь отдельные строки данных внутри этого набора. Кроме того, для доступных по разрешению данных может требоваться, чтобы пользовательские разрешения проверялись перед передачей этих данных пользователю. Например, доступные по разрешению данные могут включать данные о финансовых транзакциях. В одном примере каждый раз, когда пользователь запрашивает данные, пользовательские разрешения должны быть проверены с помощью сервера 206 разрешений перед передачей доступных по разрешению данных пользователю. По меньшей мере в одном варианте осуществления изобретения сервер 204 данных содержит данные, которые являются одновременно доступными по разрешению и временными. Под временными данными понимаются данные, которые могут изменяться или могут иметь различные значения с течением времени. Например, временными данными может быть курс акций компании, который имеет различные значения в различное время в течение дня, недели, месяца, года и т.д.
[0029] Сервер 206 разрешений может хранить пользовательские разрешения для множества различных пользователей и/или групп пользователей в системе и может извлекать пользовательские разрешения в ответ на запрос с сервера 202 кэша данных или сервера 204 данных, идентифицирующих одного и более пользователей системы. Например, пользователь может иметь разрешения на просмотр всего набора данных, только отдельных строк и/или столбцов набора данных или некоторых частей набора данных, не имея при этом разрешений просмотра остальных. В другом примере пользователь может принадлежать одной и более группам (например, покупатели, брокеры, администраторы), так что все пользователи группы могут иметь разрешения, которые позволяют пользователям просматривать определенные данные (например, данные биржи, клиентские данные). Когда пользователи отправляют запросы данных системе, идентификаторы пользователя(-ей) могут быть определены из информации идентификации и/или аутентификации пользователя, содержащейся в запросах данных. В одном варианте осуществления изобретения сервер 206 разрешений предоставляет пользовательские разрешения серверу 202 кэша данных. Сервер 206 разрешений может также передавать пользовательские разрешения в сервер 204 данных, а сервер 204 данных может отправлять как доступные по разрешению данные, так и пользовательские разрешения в сервер 202 кэша данных. В некоторых примерах сервер 206 разрешений может представлять собой отдельное от сервера 204 данных и сервера 202 кэша данных устройство. Альтернативно, сервер 206 разрешений может быть физически расположен в защищенной части сервера 204 данных или сервера 202 кэша данных. В некоторых реализациях ввиду защищенности пользовательских разрешений может быть нежелательным передавать данные разрешений пользователя или группы по общественной сети или другой незащищенной компьютерной сети. Поэтому для передачи данных разрешений из сервера 206 и серверов 202, 204 и в эти сервера могут использоваться защищенные компьютерные сети и/или шифрование. Кроме того, могут быть реализованы другие механизмы защиты во время передачи данных, такие как запрет передачи разрешений пользователя во время передачи идентификатора пользователя.
[0030] Обратимся к фиг.3. Когда сервер 202 кэша данных принимает данные с сервера 204 данных, как показано на шаге S305, сервер 202 кэша данных сохраняет локально копию данных (то есть кэширует данные) в памяти сервера 202 кэша данных, как показано на шаге S310. Данные, принимаемые от сервера 204 данных, могут содержать идентификатор данных (Data ID), который может использоваться для обновления кэшированных данных без пользовательского запроса. Идентификатор данных может формироваться сервером 204 данных. Данные, принимаемые от сервера 204 данных, могут также содержать список пользовательских разрешений или указателей разрешений, которые позволяют пользователю получать доступ к данным. Сервер 202 кэша данных может принимать и кэшировать множество различных наборов данных. В некоторых примерах сервер 202 кэша данных может принимать данные в ответ на начальный пользовательский запрос данных. В других примерах данные могут передаваться в сервер 202 кэша данных до осуществления любых пользовательских запросов данных. В еще одном примере, данные могут передаваться в сервер 202 кэша данных, когда поступает новая версия данных. В этом примере данные могут быть переданы в сервер 202 кэша данных, когда сервер 204 данных был оповещен о том, что данные изменились. В этом примере сервер 204 данных может оповещать сервер 202 кэша данных об измененных данных. В ответ сервер 204 кэша данных обновляет копию соответствующих кэшированных данных. При таком оповещении об измененных данных может использоваться полученный ранее идентификатор данных.
[0031] При сохранении данных сервер 202 кэша данных может также «помечать» данные сигнатурой кэша и/или списком разрешаемых объектов (РЕ - permissionable entities), которые позволяют серверу 202 кэша данных просматривать данные в более позднее время для различных пользователей, без запроса сервера 204 данных, как показано на шаге S315. Как показано на фиг.5а и 5b, шаг S315 может включать сохранение на сервере 202 кэша данных одной и более переменных, соответствующих контексту запроса данных (например, сигнатуре кэша) вне зависимости от пользователя, запрашивающего данные, и одну и более дополнительных переменных, соответствующих пользовательским разрешениям, ассоциированным с запрашиваемыми данными (например, разрешаемыми объектами). Как показано на фиг.5а и 5b, сигнатура кэша, объекты РЕ и указатели разрешений могут храниться в одной и той же таблице, или на них может быть ссылка из другой таблицы, или они могут быть иным образом связаны с доступными по разрешению данными, к которым они относятся. В некоторых примерах сигнатура кэша может основываться на запросе данных, принятом от пользователя (например, тип/диапазон запрашиваемых данных и другие критерии), но не обязана основываться на каких-либо индивидуальных или групповых разрешениях пользователя, запрашивающего данные. Например, сигнатура кэша может быть сформирована путем хэширования (HMAC-SHA1) запроса данных или части запроса данных без использования каких-либо пользовательских данных или разрешений. Сервер 202 кэша данных может формировать несколько указателей разрешений на одни и те же данные и, таким образом, обновлять множество копий данных, хранящихся на сервере 202 кэша данных, для обеспечения быстрого просмотра кэша при осуществлении доступа пользовательского запроса к нему.
[0032] В некоторых примерах для конкретного набора данных, переданного с сервера 204 данных в сервер 202 кэша данных, переданный набор данных может содержать одни и те же данные, несмотря на разрешения пользователя, запрашивающего данные. Однако данные, переданные пользователю, например, пользователю 222 или пользователю 224, могут быть ограничены в зависимости от разрешений запрашивающего пользователя. Таким образом, сервер 202 кэша данных может определять и передавать все или часть набора доступных по разрешению данных запрашивающему пользователю в зависимости от уровня разрешений пользователя (то есть прав), но может кэшировать весь набор данных для ответа на будущие запросы от того же самого пользователя и/или других пользователей. Пользователь может иметь разрешения, которые определяют, к каким частям набора данных (или всему набору данных) пользователю будет разрешен доступ. Например, пользователь может иметь разрешения уровня строки, которые позволяют пользователю осуществлять доступ к определенным строкам данных внутри набора данных. Другим типом прав или разрешений могут быть разрешения уровня выбора, которые определяют список строк, которых необходимо возвратить в зависимости от пользовательских разрешений. При разрешениях уровня выбора сервер 202 кэша данных может запросить конкретные строки данных, при этом данные, передаваемые сервером 204 данных, будут содержать только строки, соответствующие пользовательским разрешениям уровня выбора. Следует отметить, что, если запрашиваемые строки не находятся в кэше, то данные, содержащие запрашиваемые строки, могут быть также возвращены в запросе серверу 202 кэша данных и затем кэшированы в сервере 202 кэша данных. Вновь кэшированные данные могут быть отправлены или не отправлены пользователю в зависимости от того, имеет ли запрашивающий пользователь разрешения для этих данных. В некоторых примерах пользовательские разрешения могут храниться в бинарном формате. Например, разрешение пользователя может быть установлено в «1» для определенной строки данных для указания на то, что пользователь имеет разрешения осуществлять доступ к этой строке, и в «0» для указания на то, что сервер 202 кэша данных должен запретить пользователю доступ к данным. Посредством установки пользовательских разрешений сервер 202 кэша данных способен получать один набор данных и отправлять различные поднаборы данных множеству пользователей с различными наборами пользовательских разрешений. Например, первый пользователь, имеющий первый набор пользовательских разрешений, может получить первый поднабор данных из исходного набора данных, а второй пользователь, имеющий второй набор пользовательских разрешений, может получить второй поднабор данных из исходного набора данных, без необходимости повторного запрашивания сервера 204 данных сервером 202 кэша данных.
[0033] Наборы данных, передаваемые в сервер 202 кэша данных с сервера 204 данных, могут включать соответствующие разрешения данных для пользователя, который инициировал запрос данных, и для других пользователей системы. Каждый набор данных может быть ассоциирован с множеством доступных разрешений. Таким образом, если пользователь имеет какие-либо из доступных разрешений данных, так что пользовательские разрешения пересекаются с разрешениями набора данных, то пользователю может быть разрешено осуществлять доступ (например, просмотр, изменение, удаление и т.д.) к поднаберу данных, к которому пользователь имеет право доступа.
[0034] Когда на сервере 202 кэша данных принимают пользовательский запрос данных, как показано на шаге S320, пользовательский запрос обрабатывают на шаге S325 для вычисления сигнатуры кэша, ассоциированной с запросом данных. В одном примере такое вычисление производится посредством хэширования запроса, в котором нет специфичных для пользователя данных. Затем на шаге S330 запрашивают сервер 202 кэша данных для определения того, были ли данные с совпадающей сигнатурой кэша ранее кэшированы. Если запрашиваемые данные имеются на сервере 202 кэша данных (например, если найдена совпадающая сигнатура кэша), то на шаге S335 проверяют разрешения запрашивающего пользователя для определения того, имеется ли пересекающийся набор разрешений для кэшированных данных. Если разрешения запрашивающего пользователя и запрашиваемых кэшированных данных пересекаются, так что имеется по меньшей мере одно разрешение пользователя, которое совпадает с по меньшей мере одним разрешением кэшированных данных, поднабор данных может быть отправлен пользователю на шаге S340. Например, как показано на фиг.5а, набор данных может содержать определенные разрешения (например, разрешаемые объекты), такие как разрешения Р1 и Р2 уровня строки для строки 1 данных, разрешение Р1 для строки 2 данных, разрешение Р2 для строки 3 данных и разрешение Р4 для строки 4 данных. В примере, показанном на фиг.5b, пользователь 1 имеет ассоциированное пользовательское разрешение Р1, пользователь 2 имеет ассоциированные пользовательские разрешения Р2 и Р6, пользователь 3 имеет ассоциированное пользовательское разрешение Р2, и пользователь 4 имеет ассоциированные пользовательские разрешения Р3 и Р5. Следовательно, в данном примере сервер 202 кэша данных может определить, что права пользователя 1 пересекаются со строкой 1 данных и строкой 2 данных (так как пользователь 1 имеет разрешение Р1 и обе строки 1 и 2 данных также имеют разрешение Р1) и может отправить как строку 1 данных, так и строку 2 данных пользователю 1. Затем при обработке второго запроса от пользователя 4 сервер 202 кэша данных может определить, что разрешения пользователя 4 пересекаются только со строкой 1 данных (так как и пользователь 4 и строка 4 данных имеют разрешение Р3) и может отправить только строку 1 данных пользователю 4.
[0035] Как показано на сриг.5b, в дополнение к тому, что пользователи могут обладать разрешениями, пользователи могут также быть ассоциированы с одной и более группами (например, пользовательские роли). В данном примере, пользователь 1 и пользователь 3 являются членами группы А, а пользователь 2 является членом группы В. Группы, как и пользователи, также могут иметь ассоциированные разрешения данных. В данном примере группа А имеет разрешения Р1 и Р5, группа В имеет разрешения Р1, Р2 и Р3, а группа С имеет разрешения Р4 и Р5. Каждой группе назначается уникальный указатель разрешений. В данном примере группа А имеет указатель 1 разрешений, группа В имеет указатель 2 разрешений, а группа С имеет указатель 3 разрешений. В результате, пользователю 1 назначается указатель 1 разрешений по принадлежности к группе А, пользователю 2 назначается указатель 2 разрешений по принадлежности к группе В, а пользователю 3 назначается указатель 3 разрешений по принадлежности к группам А и С. В данном примере пользователь 4 не имеет тега прав, поскольку он не является членом группы. Указатель разрешений соответствует группе разрешений. Различные указатели разрешений могут включать одно и то же разрешение. По меньшей мере в некоторых примерах число указателей разрешений, ассоциированных с пользователем, может быть меньше, чем число ассоциированных пользовательских разрешений.
[0036] На фиг.6 показан пример блок-схемы, в которой различные поднаборы доступных по разрешению данных передаются различным пользователям, имеющим различные разрешения. В данном примере на шаге S610 сервер 202 кэша данных получает от первого пользователя запрос данных на доступные по разрешению данные. На шаге S615 сервер 202 кэша данных определяет, имеют ли запрашиваемые доступные по разрешению данные на сервере 202 кэша данных разрешения, пересекающиеся с разрешениями первого пользователя. Это может быть выполнено посредством сначала формирования сигнатуры кэша из запроса и может включать формирование указателя разрешений. На шаге S620 для поднабора ответных данных, имеющего разрешения, которые пересекаются с разрешениями первого пользователя, сервер 202 кэша данных передает первому пользователю первый поднабор. На шаге S625 сервер 202 кэша данных принимает аналогичный запрос данных (например, запрос данных, запрашивающий те же самые столбцы и строки данных и/или запрос с тем же самым контекстом запроса) от второго пользователя, имеющего отличные от первого пользователя пользовательские разрешения. На шаге S630 сервер 202 кэша данных может определить, пересекаются ли запрашиваемые вторым пользователем кэшированные доступные по разрешению данные с разрешениями второго пользователя. На шаге S635, если разрешения второго пользователя пересекаются с разрешениями данных, которые имеются в кэше, сервер 202 кэша данных отправляет второй поднабор кэшированных данных. Как было описано ранее, второй набор кэшированных данных, отправляемый второму пользователю, может отличаться от первого поднабора кэшированных данных, отправляемых первому пользователю в ответ на аналогичные (или те же самые) запросы данных. Кроме того, как первый поднабор кэшированных данных, так и второй набор кэшированных данных получают из одного набора кэшированных данных на сервере 202 кэша данных.
[0037] В некоторых вариантах осуществления изобретения данные, хранящиеся на сервере 202 кэша данных, могут также включать дату и/или время истечения срока. В этих примерах, если сервер 202 кэша данных принимает запрос данных, и срок ответа на данные уже истек, сервер 202 кэша данных может не отправлять пользователю кэшированные данные, а вместо этого может запросить обновленные данные с сервера 204 данных и затем отправить обновленные данные пользователю. Если срок действительности кэшированных данных еще не истек, то сервер 202 кэша данных может отправить кэшированные данные пользователю. В других вариантах осуществления изобретения сервер 202 кэша данных может использовать другие способы определения, устарели ли кэшированные доступные по разрешению данные (например, были ли они изменены) и требуют ли они обновления.
[0038] Как показано на фиг.4, сервер 204 данных может принимать обновленные данные. При приеме новых данных сервер 204 данных может использовать сервер 208 публикации для оповещения сервера 202 кэша данных об обновленных данных. Для своевременного предоставления обновленных данных серверу 202 кэша данных сервер 208 публикации будет оповещать сервер 202 кэша данных о том, что получены новые данные, при помощи идентификатора данных, соответствующего данным. Идентификатор данных представляет собой иерархию связанных кэшированных данных на сервере 202 кэша данных. При приеме этого оповещения сервер 202 кэша данных отправляет запрос обновленных данных на сервер 204 данных. Сервер 204 данных активно обновляет сервер 202 кэша данных, когда сервер 204 данных получает новые данные посредством сервера 208 публикации.
[0039] На фиг.5а линия 1 показывает идентификатор данных Fund.Est.Cons.group1.IBM. Этот идентификатор данных, который включает домены: Funds, Est, Cons. Groupl и IBM, может рассматриваться как иерархия, начинающаяся от корня Fund и заканчивающаяся листом IBM. Сервер 204 данных может оповещать сервер 202 кэша данных об измененных данных путем передачи какой-либо части идентификатора данных, ограниченной символом «.». Например, передача оповещения идентификатора данных Fund.Est приведет к тому, что сервер кэша данных извлечет данные для Fund.Est.Cons.Group1.IBM, Fund.Est.Cons.Group1.INTC, Fund.Est.Det.Group2.IBM и Fund.Est.Det.Group2.INTC. В другом примере передача оповещения идентификатора данных Fund.Est.Cons повлечет за собой извлечение данных сервером кэша данных для Fund.Est.Cons.Group1.IBM и Fund.Est.Cons.Group1.INTC. Идентификатор данных предоставляет возможность обновления большого числа различных кэшей данных с использованием небольшого числа оповещений.
[0040] В некоторых вариантах осуществления изобретения сервер кэша данных будет отправлять оповещение пользователям (например, пользователю 1 и пользователю 2) о том, что идентификатор данных изменился. Пользователь 1 и пользователь 2 могут обладать собственными системами кэширования и могут захотеть получать своевременное оповещение об изменениях данных. На фиг.7 показан пример блок-схемы, описывающий способ обновления кэша данных. На шаге S710 сервер 202 кэша данных получает пользовательский запрос на доступные по разрешению данные, которые могут быть кэшированы на сервере 202 кэша данных. На шаге S715 сервер 202 кэша данных извлекает разрешения запрашивающего пользователя, например, посредством идентификации пользователя и передачи запроса разрешения в сервер 206 разрешений для извлечения разрешений, групп и указателей разрешений, ассоциированных с пользователем. На шаге S720 сервер 202 кэша данных определяет, имеют ли запрашиваемые данные, хранящиеся в кэше данных, разрешения, которые пересекаются с извлеченными пользовательскими разрешениями. Если данные хранятся в кэше, то сервер 202 кэша данных подтверждает, что срок действительности кэшированных данных еще не истек, как показано на шаге S725. Если срок действительности запрашиваемых кэшированных данных еще не истек, то сервер 202 кэша данных может на шаге S730 передать пользователю поднабор кэшированных данных на основе разрешений пользователя. На шаге S735 сервер 202 кэша данных принимает асинхронные оповещения от сервера 208 публикации. Необходимо понимать, что прием оповещений о данных от сервера 208 публикации не должен происходить только после ответа на пользовательский запрос. То есть прием оповещений об обновленных данных на шаге S735 может происходить один и более раз перед ответом, в течение ответа или после ответа на пользовательские запросы, как показано на фиг.7. В некоторых примерах сервер 204 данных и/или сервер 208 публикации могут определять события или расписание, по которому обновленные данные передаются в сервер 202 кэша данных, не имея информации о том, когда сервер 202 кэша данных может отвечать на пользовательские запросы. Поэтому сервер 202 кэша данных может быть сконфигурирован для одновременного ответа на пользовательские запросы кэшированных данных, во время приема и обработки оповещений о данных, таким образом, принимая новые данные от сервера 208 публикации и/или сервера 204 данных.
[0041] В некоторых примерах сервер 208 публикации может использовать такое же (или аналогичное) программное обеспечение, что и сервер 204 данных, для обеспечения связи между сервером 208 публикации и сервером 204 данных. Например, сервер 208 публикации может использовать web-службы для управления подписками. В некоторых вариантах осуществления изобретения удаленный пользователь, такой как пользователь 222, может подписываться на сервер 208 публикации для получения асинхронных обновлений. В этом варианте осуществления изобретения для обновления удаленного пользователя сервер 208 публикации может размещать данные на web-сайте, используя XML посредством HTTP. Сервер 208 публикации может также включать таблицу регистрации для регистрирования и отмены регистрации удаленных пользователей. В одном варианте осуществления изобретения сервер 208 публикации может снабжать удаленного пользователя указателем URL для оповещения удаленного пользователя о новых данных, размещенных на web-сервисе.
[0042] Сервер 208 публикации может также включать таблицу публикации/подписки для управления обновлениями сервера 202 кэша данных. В данном варианте осуществления изобретения в таблицу подписчика добавляют сервер 202 кэша данных, а в таблицу публикации/подписки добавляют данные. Как только данные изменяются, сервер 204 данных оповещает сервер 208 публикации о том, что в таблице публикации/подписки была сделана запись. Если сервер 202 кэша данных расположен в таблице публикации/подписки с такой же сигнатурой, то кэш на сервере 202 кэша данных может быть обновлен.
[0043] В некоторых примерах сервер 208 публикации может также включать систему оповещения. По меньшей мере в одном варианте осуществления изобретения система оповещения может быть физически размещена на сервере 208 публикации. Когда пользователь 222 или сервер 202 кэша данных подписывается на сервер 208 публикации для получения обновленных данных, система оповещения может помещать в очередь оповещений об обновлениях запись в форме запроса на обновленные данные. Данная очередь может содержать все данные, требуемые для обновления подписанного пользователя, такого как сервер 202 кэша данных или пользователь 222. Посредством размещения запроса в очередь может быть проверена вся очередь на наличие предыдущих запросов на одни и те же данные. Если имеется предыдущий запрос, то запись в очереди обновляется, вместо создания новой записи. Очередь может быть реализована как очередь FIFO («первым пришел - первым обслужен» - First In First Out). Программное обеспечение оповещения может отправлять оповещение подписчикам о том, что данные были обновлены, и удалять соответствующую запись из очереди. Система оповещения может также управлять несколькими оповещениями об обновленных данных, формируемых на сервере 204 данных. Система оповещения может определять, имеются ли одновременно предыдущее оповещение и более позднее оповещение, и удалять одно из этих оповещений, так как это оповещение уже не является значимым. Управление очередью может предотвращать дублирование оповещений с определенной пороговой частотой. Например, система управления очередью может устранять дублированные оповещения в течение заранее заданного временного окна (например, 1 минуты). Посредством предотвращения дублирования оповещений может быть уменьшено число запросов, передаваемых в сервер 204 данных.
[0044] В некоторых примерах при приеме оповещения об измененных кэшированных данных от сервера 208 публикации, сервер 202 кэша данных может принимать решение признать недействительной (то есть пометить как устарелую) часть кэша данных, содержащую устаревшие данные, и/или запросить с сервера 208 публикации или сервера 204 данных обновленные данные (например, асинхронный запрос) для всех устаревших данных. Когда сервер 204 кэша данных принимает запрос от пользователя 222 на данные, о которых известно, что они устарели, может быть дан один из двух ответов. В зависимости от распределения обновлений новых данных во времени и/или пользовательских разрешений запрашивающего пользователя, сервер 202 кэша данных может отправлять пользователю старую версию запрашиваемых данных или может откладывать отправление запрашиваемых данных пользователю до тех пор, пока обновленные данные не будут приняты сервером 202 кэша данных. Например, программное приложение на сервере 202 кэша данных, обрабатывающее пользовательский запрос, может определять, нужно ли пользователю передавать обновленные данные, или пользователю достаточно старых данных.
[0045] Как было упомянуто выше, когда сервер 202 кэша данных определяет, что часть кэшированных данных устарела (или могла устареть), то он может запросить обновленные данные с сервера 204 данных. Если сервер 204 данных не может обеспечить обновленные данные серверу 202 кэша данных, то запрос на обновление от сервера 202 кэша данных может оставаться в очереди до тех пор, пока сервер 204 данных не будет способен обработать запрос и отправить обновленные данные. В некоторых примерах, если сервер 204 данных не может обновить кэш, система может отправить предупреждение об этом администратору или службе мониторинга провайдера данных.
[0046] По меньшей мере в одном варианте осуществления изобретения оповещение в очереди может содержать числа возрастающей последовательности, так что множество кэшей могут иметь возможность запрашивать друг друга о последнем числе последовательности. Например, кэш может передавать всем свое число последовательности для конкретного разрешения, и все дополнительные кэши на сервере 202 кэша данных могут отвечать и отправлять всем свои числа последовательности, соответствующие конкретному разрешению. В данном примере, если кэш имеет число последовательности, которое больше числа другого кэша, то кэш, имеющий большее число последовательности, может пометить свои данные как устаревшие и затем запросить обновленные данные с сервера 204 данных. По меньшей мере в одном варианте осуществления изобретения, если кэш получает оповещение от службы оповещения, то кэш обновляет и сохраняет новое число последовательности.
[0047] По меньшей мере в одном варианте осуществления изобретения сервер 202 кэша данных может использовать распределенный кэш. В данном случае один сервер может рассматриваться как главный и осуществлять управление оповещениями и обновлениями кэша, которые распространяются среди всех серверов кэша данных (или группы серверов). При возникновении сбоя в работе главного сервера кэша данных выбирается другой главный сервер из группы серверов.
[0048] Как было упомянуто выше, данные, отправляемые пользователю в ответ на пользовательский запрос, могут зависеть от разрешений пользователя. Кроме того, в других вариантах осуществления изобретения данные ответа, отправляемые пользователю, могут быть впоследствии ограничены или сегментированы в зависимости от других характеристик пользователя. Например, пользователь может получать только дополнительные данные (или меньше данных) в зависимости от географического региона пользователя. В другом варианте осуществления изобретения в зависимости от типа аккаунта, который пользователь имеет у финансового провайдера, пользователь может видеть только выбранное количество или выбранный тип данных. Зависимость ответа, который пользователь получает с сервера 202 кэша данных, от этих дополнительных характеристик может называться сегментацией. Для использования этого типа сегментации обычный набор кодов может быть ассоциирован с множеством наборов данных для задания разрешений на эти наборы данных. Разрешения, заданные обычным набором кодов, могут привести к тому, что пользователь не сможет видеть данные вне пользовательского текущего региона и страны, или может ограничить данные от пользователей на основе других характеристик. На фиг.6 показан пример блок-схемы, в которой различные поднаборы доступных по разрешению данных доставляются различным пользователям, имеющим различные разрешения. На фиг.7 показан пример блок-схемы, описывающей способ обновления кэша данных. Как правило, пользователям назначаются указатели разрешений для управления разрешениями таким способом. Указатель разрешений позволяет группировать большое число разрешений в меньшее число наборов, как описано выше.
[0049] На фиг.8 показана блок-схема, иллюстрирующая некоторые из указанных выше аспектов обеспечения пользователей котированными доступными по разрешению данными. Как показано на шаге S805, сервер 202 кэша данных получает зарос на доступные по разрешению данные от пользователя, такого как пользователь 222. На шаге S810 сервер 202 кэша данных может сначала хэшировать запрос и затем определить, имеются ли данные в памяти локального кэша. Если запрашиваемые данные представлены в локальном кэше (S810:Да), то на шаге S815 сервер 202 кэша данных может извлечь разрешения запрашивающего пользователя с сервера 206 разрешений и на шаге S820 определить, пересекаются ли разрешения пользователя с разрешениями кэшированных данных (например, имеются ли совпадающие или соответствующие разрешения). Указатели разрешений пользователей могут позволять разрешениям групп быть представленными как меньшее число элементов. Если разрешения пользователя пересекаются с разрешениями данных или имеется указатель разрешений, объединенный с сигнатурой кэша, (8820:Да), то на шаге S825 сервер 202 кэша данных может определить, истек ли срок действительности кэшированных данных. Если срок действительности кэшированных данных не истек (S825:Нет), то на шаге S830 сервер 202 кэша данных может отправить данные пользователю. Если разрешения пользователя не пересекаются с разрешениями данных (S820:Нет), то сервер 202 кэша данных отвечает пользователю, что пользователь не имеет разрешения просматривать данные.
[0050] В данном примере, если срок действительности кэшированных данных истек (S825:Да), то на шаге S835 сервер 202 кэша данных может запросить обновленные данные с сервера 204 данных. На шаге S840 сервер 204 данных передает запрашиваемые обновленные данные в сервер 202 кэша данных. Затем, на шаге S845, сервер 202 кэша данных принимает обновленные данные и локально кэширует данные перед передачей обновленных данных запрашивающему пользователю на шаге S830.
[0051] Возвращаясь к шагу S810, если сервер 202 кэша данных определяет, что в кэше нет данных, соответствующих запросу пользователя, (S810:Нет), то на шаге S835 сервер 202 кэша данных может запросить данные с сервера 204 данных. В некоторых примерах на шаге S815 сервер 202 кэша данных может также одновременно запрашивать разрешения пользователя или указатели разрешений для достижения потенциально более эффективной работы. На шаге S845 сервер 202 кэша данных получает обновленные данные и кэширует локально данные и может затем на шаге S830 отправить обновленные данные пользователю.
[0052] Как было описано выше, сервер 202 кэша данных может также подписываться на один и более серверов 208 публикации для получения обновлений кэша, как только данные изменятся, как показано на шаге S850. Когда сервер 202 кэша данных подписывается на сервер 208 публикации, сервер 208 публикации передает в сервер 202 кэша данных либо обновленные данные, либо оповещение о том, что данные были изменены, как показано на шаге S855. В некоторых примерах, асинхронные процессы, запущенные на сервере 208 публикации и/или сервере 202 кэша данных, могут планироваться периодически и/или управляться событиями для эффективного хранения в обновленном состоянии доступных по разрешению данных кэша на сервере 202 кэша данных. На фиг.8 прерывистая линия между шагами S850 и S855 предназначена для того, чтобы показать временную природу подписки на сервер 208 публикации и время, когда данные асинхронно поступают на сервер 202 кэша данных вследствие их изменения.
[0053] Необходимо понимать, что изобретение не ограничено в применении описанными деталями конструкции и схемой расположения компонентов и шагами способа набора. Изобретение охватывает и другие варианты его осуществления и может быть выполнено различными способами. Варианты и модификации описанных вариантов осуществления изобретения находятся в рамках настоящего изобретения. Например, специалисту понятно, что шаги, показанные на чертежах, могут быть выполнены в отличном от указанного порядке, могут повторяться, и один и более показанных шагов могут быть опциональными в соответствии с аспектами настоящего изобретения. Необходимо понимать, что настоящее изобретение может быть расширено всеми альтернативными комбинациями двух и более отдельных признаков, упомянутых или очевидных из описания и/или чертежей. Все эти различные комбинации образуют различные альтернативные аспекты настоящего изобретения. Описанные варианты осуществления являются предпочтительными и позволяют специалистам использовать изобретение.
Изобретение относится к вычислительной технике. Технический результат заключается в обеспечении более быстрого доступа и доставки данных. Устройство для управления кэшем данных содержит один или более процессор; и память, хранящую исполняемые инструкции, которые при исполнении процессором обеспечивают: получение доступных по разрешению данных с сервера данных, при этом доступные по разрешению данные имеют ассоциированные разрешения данных, определяющие одно или более разрешение, необходимое запрашивающему пользователю для доступа к доступным по разрешению данным; хранение доступных по разрешению данных и сигнатуры кэша, соответствующей доступным по разрешению данным; получение и хэширование первого запроса данных от первого пользователя с получением сигнатуры кэша; извлечение разрешений пользователя, соответствующих первому пользователю и их сравнение с разрешениями данных для определения того, что разрешения пользователя, соответствующие первому пользователю, пересекаются с разрешениями данных; после чего осуществляют определение поднабора доступных по разрешению данных, который соответствует упомянутому пересечению; и передачу упомянутого поднабора доступных по разрешению данных в ответ на первый запрос данных для доступных по разрешению данных. 4 н. и 19 з.п. ф-лы, 9 ил.
Способ, система и устройство для контроля и управления передачей данных в сетях связи