регистрация и извлечение информации об изменении таблицы базы данных, которая может использоваться для признания недействительными элементов кэша

Классы МПК:G06F17/30 информационный поиск; структуры баз данных для этой цели
G06F12/14 защита от обращений к памяти посторонних пользователей
G11C16/22 схемы безопасности или защиты, предотвращающие несанкционированный или случайный доступ к ячейкам памяти
G11B13/00 Одновременная или выборочная запись способами или средствами, отнесенными к различным рубрикам; носители записи для этого; одновременное или выборочное воспроизведение
Автор(ы):, , , ,
Патентообладатель(и):МАЙКРОСОФТ КОРПОРЕЙШН (US)
Приоритеты:
подача заявки:
2004-06-24
публикация патента:

Изобретение относится к управлению содержимым в кэше. Техническим результатом является расширение функциональных возможностей. Сервер обеспечивает ответы Web, которые могут содержать содержимое из таблиц данных в базе данных. Сервер поддерживает кэш (например, в системной памяти), в котором может храниться содержимое (включая содержимое из таблиц данных) для повышения эффективности последующего обеспечения этого содержимого для удовлетворения запросов клиентов Web. Сервер осуществляет мониторинг таблиц данных в отношении изменений, и при изменении в конкретной таблице данных элементы в кэше, зависимые от конкретной таблицы данных, признаются недействительными. Дополнительно, в ответ на запрос Web клиента на ответ Web сервер назначает зависимость кэша от базы данных по меньшей мере части созданного ответа Web (например, для содержимого, извлеченного из таблицы данных) на основе команд, исполняемых при создании ответа Web. По меньшей мере часть созданного ответа Web впоследствии кэшируется в области кэша в сервере. 2 н. и 10 з.п. ф-лы, 5 ил. регистрация и извлечение информации об изменении таблицы базы   данных, которая может использоваться для признания недействительными   элементов кэша, патент № 2380748

регистрация и извлечение информации об изменении таблицы базы   данных, которая может использоваться для признания недействительными   элементов кэша, патент № 2380748 регистрация и извлечение информации об изменении таблицы базы   данных, которая может использоваться для признания недействительными   элементов кэша, патент № 2380748 регистрация и извлечение информации об изменении таблицы базы   данных, которая может использоваться для признания недействительными   элементов кэша, патент № 2380748 регистрация и извлечение информации об изменении таблицы базы   данных, которая может использоваться для признания недействительными   элементов кэша, патент № 2380748 регистрация и извлечение информации об изменении таблицы базы   данных, которая может использоваться для признания недействительными   элементов кэша, патент № 2380748

Формула изобретения

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

действие определения того, существует ли уже в кэше элемент кэша для основывающегося на Web содержимого, запрошенного посредством запроса основывающегося на Web содержимого,

причем при определении того, что такой элемент кэша не существует, выполняют следующие действия:

действие выбора таблицы данных, которая должна отслеживаться в отношении изменений содержимого, причем выбираемая таблица данных выбирается среди упомянутых одной или большего количества таблиц данных базы данных,

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

действие назначения триггера выбранной таблице данных, при этом триггер сконфигурирован для обновления информации контроля версий для выбранной таблицы данных в таблице уведомлений об изменениях при изменении содержимого в выбранной таблице данных,

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

действие приема основывающегося на Web запроса в отношении основывающегося на Web ответа, который должен включать в себя упомянутые промежуточные результаты вслед за кэшированием промежуточных результатов в элементе кэша,

действие запрашивания через заданные интервалы таблицы уведомлений об изменениях в отношении информации контроля версий, идентифицирующей и соответствующей выбранной таблице данных,

действие приема текущей информации контроля версий, идентифицирующей и соответствующей выбранной таблице данных,

действие сравнения кэшированной информации контроля версий с текущей информацией контроля версий,

действие определения того, как осуществлять доступ к упомянутым промежуточным результатам для включения в основывающийся на Web ответ, на основе результатов сравнения информации контроля версий и в качестве реакции на прием основывающегося на Web запроса части содержимого,

действие осуществления доступа к упомянутым промежуточным результатам в соответствии с упомянутым определением,

действие выполнения команд для создания основывающегося на Web ответа в качестве реакции на основывающийся на Web запрос на основе упомянутых промежуточных результатов,

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

2. Способ по п.1, в котором действие выбора таблицы данных, которая должна отслеживаться в отношении изменений содержимого, включает в себя действие получения ввода пользователя, который осуществляет выбор таблицы данных, которая должна отслеживаться в отношении изменений содержимого.

3. Способ по п.1, в котором действие выбора таблицы данных, которая должна отслеживаться в отношении изменений содержимого, включает в себя действие автоматического выбора таблицы данных компьютерной системой в ответ на принятый основывающийся на Web запрос.

4. Способ по п.1, в котором действие вставки записи для выбранной таблицы данных в таблицу уведомлений об изменениях согласуется с действием вставки записи в ответ на ввод пользователя.

5. Способ по п.1, в котором действие вставки записи для выбранной таблицы данных в таблицу уведомлений об изменениях согласуется с действием автоматической вставки записи компьютерной системой в ответ на основывающийся на Web запрос.

6. Способ по п.1, в котором действие вставки записи для выбранной таблицы данных в таблицу уведомлений об изменениях согласуется с действием вставки записи в таблицу SQL (языка структурированных запросов).

7. Способ по п.1, в котором действие назначения триггера выбранной таблице данных включает в себя действие получения ввода пользователя, предписывающего назначение триггера выбранной таблице данных.

8. Способ по п.1, в котором действие назначения триггера выбранной таблице данных включает в себя действие автоматического назначения триггера выбранной таблице компьютерной системой в ответ на прием основывающегося на Web запроса содержимого, содержащегося в выбранной таблице.

9. Способ по п.1, в котором действие назначения триггера выбранной таблице данных включает в себя действие назначения триггера, который при выполнении в ответ на изменение содержимого в выбранной таблице данных осуществляет обновление соответствующего идентификатора изменения в таблице уведомлений об изменениях.

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

причем при определении того, что такой элемент кэша не существует, выполняются следующие действия:

действие выбора таблицы данных, которая должна отслеживаться в отношении изменений содержимого, причем выбираемая таблица данных выбирается среди упомянутых одной или большего количества таблиц данных базы данных,

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

действие назначения триггера выбранной таблице данных, при этом триггер сконфигурирован для обновления информации контроля версий для выбранной таблицы данных в таблице уведомлений об изменениях при изменении содержимого в выбранной таблице данных,

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

действие приема основывающегося на Web запроса в отношении основывающегося на Web ответа, который должен включать в себя упомянутые промежуточные результаты вслед за кэшированием промежуточных результатов в элементе кэша,

действие запрашивания через заданные интервалы таблицы уведомлений об изменениях в отношении информации контроля версий, идентифицирующей и соответствующей выбранной таблице данных,

действие приема текущей информации контроля версий, идентифицирующей и соответствующей выбранной таблице данных,

действие сравнения кэшированной информации контроля версий с текущей информацией контроля версий,

действие определения того, как осуществлять доступ к упомянутым промежуточным результатам для включения в основывающийся на Web ответ на основе результатов сравнения информации контроля версий и в качестве реакции на прием основывающегося на Web запроса части содержимого,

действие осуществления доступа к упомянутым промежуточным результатам в соответствии с упомянутым определением,

действие выполнения команд для создания основывающегося на Web ответа в качестве реакции на основывающийся на Web запрос на основе упомянутых промежуточных результатов,

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

действие кэширования, по меньшей мере, части созданного основывающегося на Web ответа в элементе кэша в кэше.

11. Машиночитаемый носитель информации по п.10, который является физическим носителем информации.

12. Машиночитаемый носитель информации по п.10, который содержит системную память.

Описание изобретения к патенту

Область техники, к которой относится изобретение

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

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ

Вычислительные системы и относящаяся к ним технология влияют на многие аспекты жизни общества. Действительно, возможности обработки информации, обеспечиваемые вычислительной системой, преобразовали образ жизни и способы работы. Многие задачи (например, электронная обработка текста, планирование и управление базами данных), которые до появления вычислительной системы выполнялись вручную, сейчас обычно выполняются вычислительными системами. Последнее время осуществлялось соединение вычислительных систем друг с другом для формирования проводных и беспроводных вычислительных сетей, через которые вычислительные системы могут осуществлять электронную связь для совместного использования данных. В результате многие задачи, выполняемые в вычислительной системе (например, речевая связь, электронная почта для организации связи с абонентами, электронная конференц-связь, web-просмотр (браузинг)), включают электронную связь с одной или большим количеством других вычислительных систем через проводные и/или беспроводные вычислительные сети.

В частности, значимым механизмом обмена информацией стала всемирная паутина ("WWW"). В основном, доступ к содержимому WWW осуществляется согласно модели клиент/сервер. "Web-браузер" в вычислительной системе-клиенте передает запрос на доступ к содержимому (контенту), поддерживаемому "web-сервером" в вычислительной системе-сервере. Когда это предусмотрено, впоследствии web-сервер предоставляет Web-браузеру запрошенное содержимое.

Одним способом сделать содержимое доступным для Web-браузеров является создание разработчиком статической web-страницы, которая включает набор жестко закодированных машиночитаемых инструкций, например, на языке гипертекстовой разметки ("HTML"). Затем web-страница хранится в доступном для web-сервера месте (например, в вычислительной системе-сервере, в сети, соединенной с базой данных и т.д.). Web-сервер в ответ на запрос из Web-браузера может передать статическую web-страницу в Web-браузер (например, в результате ввода пользователем, приводящего к доступу Web-браузера к унифицированному указателю информационного ресурса ("URL"), соответствующему статической web-странице). После получения статической web-страницы Web-браузер может представить содержимое статической web-страницы (например, текст, графические данные и т.д.) в вычислительной системе-клиенте.

Для экономии сетевых ресурсов Web-браузер может также кэшировать копию статической web-страницы в вычислительной системе-клиенте (например, в системной памяти или в запоминающем устройстве большой емкости). При последующем запросе статической web-страницы Web-браузер до инициализации нового сетевого запроса в web-сервер осуществляет попытку разместить статическую web-страницу из кэша. Если web-страница размещена в кэше, то Web-браузер вместо инициализации сетевого запроса извлекает статическую web-страницу в кэше. Так как доступ к локально хранимым данным может быть осуществлен более эффективно, то кэширование статических web-страниц в вычислительной системе-клиенте уменьшает время ожидания, связанное с представлением содержимого статической web-страницы.

Часто запрашиваемые статические web-страницы, для уменьшения времени ожидания, могут также кэшироваться в вычислительной системе-сервере (что обычно определяется, как кэширование при выводе данных). Например, чтобы устранить необходимость извлечения web-страницы из устройства памяти большой емкости при каждом запросе web-страницы, часто запрашиваемая web-страница может кэшироваться в системной памяти в вычислительной системе-сервере. Благодаря своей статической сущности, статические web-страницы могут быть кэшированы (в вычислительной системе-клиенте или в вычислительной системе-сервере) в продолжение длительных периодов времени, потенциально неограниченно.

Однако использование статических web-страниц, по существу, не допускает представление Web-браузером данных в реальном масштабе времени или индивидуально конфигурируемых данных. Часто требуется представление в Web-браузере динамических данных (например, ежедневных данных о продажах, текущем курсе акций и т.д.). Соответственно, были разработаны механизмы для включения динамических данных в динамические web-страницы, предназначенные для представления в Web-браузере. Одним механизмом для включения динамических данных в динамические web-страницы является использование модульных фрагментов машиноисполняемых инструкций (обычно определяемых как "сценарии").

Сценарии могут быть разработаны с использованием языков сценариев, например, таких как JavaScript и VBScript, и внедрены наряду с инструкциями HTML и расширяемой спецификации языка, предназначенного для создания страниц WWW ("XML"), в файл страницы (например, файл Активных Страниц Сервера ("ASP")). При приеме запроса на динамическую web-страницу компьютерная система-сервер перенаправляет запрос в модуль обработки (например, модуль ASP), который обрабатывает соответствующий файл страницы. Модуль обработки исполняет любые сценарии, включенные в файл страницы, и формирует соответствующие инструкции HTML для возвращения в ответ на запрос. Сценарии могут содержать машиноисполняемые инструкции для доступа к данным из динамических местоположений, например, таких как база данных, поддерживающая текущие данные продаж или биржевых ставок. Так как сценарии, по существу, исполняются при приеме запроса, то они могут использоваться для формирования динамических web-страниц, которые содержат данные реального масштаба времени.

Подобно статическим web-страницам, динамическая web-страница может быть кэширована для обеспечения более эффективного доступа к динамической web-странице. Однако динамическое содержимое (например, котировка цен), включенное в динамическую web-страницу, обычно является действительным в течение ограниченного периода времени (например, до изменения значений в местоположении, где было извлечено динамическое содержимое). Часто динамическое содержимое (например, биржевая ставка) является действительным в течение очень короткого периода времени, например всего несколько секунд. Когда значение динамического содержимого изменяется, динамическое содержимое в кэше может стать недействительным. Например, при изменении курса акций с 20.00$ до 21.00$ значение в кэше в 20.00$ не является действительным (или даже корректным). Когда динамическое содержимое, не являющееся действительным, остается в кэше, остается некоторая потенциальная возможность предоставления web-сервером в Web-браузер неправильного динамического содержимого. Например, если курс акций, не являющийся действительным, остается в кэше, то web-сервер может извлечь из кэша курс акций, не являющийся действительным, вместо повторного выполнения сценария для извлечения из базы данных обновленного курса акций. Соответственно, были разработаны механизмы управления кэшем, которые направлены на обеспечение действительности динамического содержимого в кэше.

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

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

Другие механизмы управления кэшем отслеживают или осуществляют мониторинг файлов (например, файлов XML), которые хранятся в вычислительной системе-сервере, и, при изменении отслеживаемого файла, признаются недействительными значения динамического содержимого из отслеживаемого файла, находящиеся в кэше. Еще одни механизмы управления кэшем осуществляют мониторинг элементов кэша, и один элемент кэша признается недействительным, когда становится недействительным другой элемент кэша. Соответственно, некоторые механизмы управления кэшем приводят к зависимости действительности элементов кэша от времени, соответствующего файла или другого соответствующего элемента кэша.

Однако существующие механизмы управления кэшем (включая механизмы, использующие зависимости от времени, файла и кэша) не достаточно хорошо приспособлены для признания недействительными значения динамического содержимого в кэше, извлеченные из местоположений, которые являются внешними по отношению к компьютерной системе-серверу. Например, Web-браузер может запросить web-страницы, которые должны содержать значения динамического содержимого из нескольких различных таблиц в базе данных. Соответственно, в вычислительной системе-сервере может быть осуществлена обработка файла страницы с соответствующими сценариями для извлечения значений динамического содержимого и формирования соответствующих инструкций HTML.

Однако извлечение данных из базы данных потребляет ресурсы базы данных и сети. При необходимости выполнения вычислений на извлеченных данных также потребляются дополнительные ресурсы вычислительной системы-сервера. Дополнительно, вычислительная система-сервер может одновременно запрашивать базу данных на несколько различных частей динамического содержимого, которые будут включены в различные web-страницы. Также каждый из нескольких вычислительных систем-серверов может осуществлять доступ к динамическому содержимому из одной базы данных.

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

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

Принципы настоящего изобретения, ориентированные на системы, способы, компьютерные программные продукты и структуры данных для регистрации и извлечения информации об изменении таблиц базы данных, которая может использоваться для признания недействительными элементов кэша, преодолевают вышеупомянутые проблемы, характерные для предшествующего уровня техники. Вычислительная система-клиент с браузером может быть подсоединена через сеть к вычислительной системе-серверу, которая может формировать и предоставлять ответы Web (например, web-страницы и/или результаты web-услуг) в вычислительную систему-клиент. Вычислительная система-сервер осуществляет доступ по меньшей мере к части содержимого для ответов Web из таблиц данных в базе данных. Вычислительная система-сервер поддерживает кэш (например, в системной памяти), который может хранить предоставляемое содержимое для повышения эффективности последующего предоставления этого содержимого для удовлетворения запросов Web клиентов.

Вычислительная система-сервер выбирает таблицу данных (например, в ответ на ввод пользователя), содержащуюся в базе данных (например, в базе данных SQL языка структурированных запросов), которая должна отслеживаться в отношении изменения данных. В таблицу уведомлений об изменениях (также содержится в базе данных) вставляется запись, соответствующая выбранной таблице данных. Соответствующая запись содержит информацию контроля версий для выбранной таблицы данных, например, такую как идентификатор (ИД, ID) изменения. Выбранной таблице данных назначается триггер (процедура, запускаемая автоматически при возникновении определенных условий), который при изменении содержимого в выбранной таблице данных приводит к обновлению информации контроля версий для выбранной таблицы данных в таблице уведомлений об изменениях.

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

В виде другого варианта, вычислительная система-сервер может выдать запрос таблице уведомлений об изменениях и запросить, чтобы выданный запрос был задержан в вычислительной системе-сервере до обновления информации контроля версий для запрошенной таблицы (таблиц). Например, вычислительная система-сервер может выдать запрос, который задерживается в вычислительной системе-сервере, пока текущая информация о версии не превысит заданное пороговое значение. Выданный запрос блокировки может быть выполнен синхронно, чтобы соответствующий поток в вычислительной системе-сервере был блокирован, пока не будут доступны результаты. С другой стороны, выданный запрос блокировки может быть выполнен асинхронно, чтобы соответствующий поток в вычислительной системе-сервере не был блокирован, и, когда становятся доступны результаты, в вычислительной системе-сервере активируется обратный вызов (например, в отдельном потоке).

Вычислительная система-сервер определяет, что содержимое в кэше является зависимым от одной из таблиц данных (например, в результате предварительно назначенной зависимости кэша от базы данных). Вычислительная система-сервер сравнивает текущую информацию контроля версий (принятую в списке) с информацией контроля версий в кэше (например, информацией контроля версий, кэшированной совместно с частью содержимого в кэше). Указанное сравнение может включать в себя сравнение принятого ИД изменения с ИД изменения в кэше. Когда это предусмотрено, например, когда содержимое в таблице данных изменяется после кэширования части содержимого, основанного на таблице данных, часть содержимого в кэше удаляется из кэша. Соответственно, содержимое в кэше, которое является зависимым от отслеживаемой таблицы данных, может быть в предусмотренном случае признано недействительным и удалено из кэша. Предусмотренное признание недействительным и удаление содержимого в кэше снижает вероятность включения вычислительной системой-сервером в ответ кэшированного Web содержимого, являющегося недействительным. Дополнительно, также уменьшается возможность удаления действительных данных (например, что может произойти при зависимости от времени), вследствие этого потенциально увеличивая эффективность формирования ответов Web.

В некоторых вариантах осуществления содержимое в кэше находится в виде объектов или результатов, используемых для формирования ответа Web, например, в виде табличных данных, объектов, коллекций или частичных ответов. Кэширование таких промежуточных результатов предусмотрено, когда результаты могут быть использованы для формирования более одного ответа Web, где каждый ответ Web содержит дополнительную дифференцирующую информацию (например, индивидуальную настройку или включение другой релевантной информации). В других вариантах осуществления ответ Web кэшируется полностью. Кэширование ответа Web полностью предусмотрено, когда ответ Web полностью может совместно использоваться по нескольким запросам Web. При кэшировании ответа Web полностью ответ Web может продвигаться вплоть до кэширования в нижних уровнях вычислительной системы-сервера, например, в кэше ответа режима ядра. Соответственно, при признании ответа Web недействительным он удаляется из кэша нижнего уровня.

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

Вычислительная система-сервер назначает зависимость кэша от базы данных по меньшей мере части созданного ответа Web на основе инструкций, исполняемых при создании ответа Web. Назначение зависимости кэша от базы данных может включать назначение зависимости ответа Web от таблицы данных или назначение зависимости содержимого, основанного на данных, извлеченных из таблицы данных, от таблицы данных. Зависимость кэша от базы данных может быть назначена посредством использования директивы или программного кода, включенных в файл страницы (например, в файл Активных Страниц Сервера ("ASP")), который обрабатывается в вычислительной системе-сервере для создания ответа Web. В вычислительной системе-сервере кэшируется по меньшей мере часть созданного ответа Web. Соответственно, в ответ на последующие запросы Web на созданный ответ Web вычислительная система-сервер может извлекать по меньшей мере часть созданного ответа Web в кэше. При извлечении содержимого в кэше (возможно, ответа Web полностью) осуществляется экономия как ресурсов вычислительной системы-сервера (так как не выполняются повторно части файла страницы), так и ресурсов сети и базы данных (так как не происходит повторного запроса к базе данных и, следовательно, данные не передаются через сеть). Соответственно, при сокращении обработки уменьшается время ожидания, и при сокращении одновременного доступа к совместно используемым ресурсам, таким как база данных, увеличиваются ресурсы, требуемые для ответа на запрос Web, и повышается масштабируемость.

Дополнительные признаки и преимущества изобретения будут изложены в последующем описании и частично будут очевидны из описания, или могут стать понятны при практическом осуществлении изобретения. Признаки и преимущества изобретения могут быть реализованы посредством инструментальных средств и комбинаций, точно определенных в формуле изобретения. Указанные и другие признаки настоящего изобретения будут более ясны из последующего описания и формулы изобретения, или могут стать понятны при практическом осуществлении изобретения, как описано далее.

ПЕРЕЧЕНЬ ФИГУР ЧЕРТЕЖЕЙ

Для описания способа, которым могут быть реализованы упомянутые выше, а также другие преимущества и признаки изобретения, будет приведено более подробное описание изобретения, кратко описанного выше, в отношении его конкретных вариантов осуществления, которые поясняются приложенными чертежами. Следует учесть, что указанные чертежи изображают только типичные варианты осуществления изобретения и не должны рассматриваться, как ограничивающие его объем, изобретение будет описано и пояснено более конкретно и подробно посредством использования приложенных чертежей.

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

Фиг.2 - возможная блок-схема последовательности операций способа конфигурирования базы данных для предоставления уведомлений об изменениях таблицы, согласно принципам настоящего изобретения.

Фиг.3 - возможная блок-схема последовательности операций способа для признания недействительной части содержимого в кэше, согласно принципам настоящего изобретения.

Фиг.4 - возможная блок-схема последовательности операций способа доступа к содержимому для представления в запрашивающую вычислительную систему-клиент, согласно принципам настоящего изобретения.

Фиг.5 - соответствующая операционная среда для принципов настоящего изобретения.

ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ

Настоящее изобретение распространяется на способы, системы, компьютерные программные продукты и структуры данных для регистрации и извлечения информации об изменении таблиц базы данных, которая может быть использована для признания недействительными элементов кэша. Вычислительная система-клиент с браузером может быть подсоединена через сеть к вычислительной системе-серверу, который может формировать и предоставлять в вычислительную систему-клиент ответы Web (например, web-страницы и/или результаты web-услуг). Вычислительная система-сервер осуществляет доступ по меньшей мере к части содержимого для ответов Web из таблиц данных в базе данных. Вычислительная система-сервер поддерживает кэш (например, в системной памяти), в котором может храниться предоставляемое содержимое (включая содержимое из таблиц данных) для повышения эффективности последующего предоставления этого содержимого для удовлетворения запросов Web клиентов.

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

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

Варианты осуществления настоящего изобретения могут содержать компьютер специального или общего назначения, содержащий различные вычислительные аппаратные средства и программное обеспечение, как описано более подробно ниже. В частности, варианты осуществления в пределах объема настоящего изобретения содержат машиночитаемый носитель информации для переноса или хранения на нем машиноисполняемых инструкций или структур данных. Таким машиночитаемым носителем информации может быть любой доступный носитель информации, к которому может осуществить доступ компьютер общего или специального назначения. В виде возможного варианта, но не ограничения, такой машиночитаемый носитель информации может включать в себя ОЗУ (RAM), ПЗУ (ROM), электрически стираемое программируемое ПЗУ (EEPROM), компакт-диск (CD-ROM) или другие физические носители информации, такие как оптический диск, магнитный диск или другие магнитные запоминающие устройства, или любой другой носитель, который может использоваться для переноса или хранения требуемых средств программного кода в виде машиноисполняемых инструкций или структур данных, и к которому может осуществить доступ компьютер общего или специального назначения.

При передаче или предоставлении в компьютер через сеть или другое соединение связи (проводное, беспроводное, или комбинацию проводного или беспроводного) информации компьютер, по существу, интерпретирует такое соединение, как машиночитаемый носитель. Следовательно, любое такое соединение, по существу, охватывается термином регистрация и извлечение информации об изменении таблицы базы   данных, которая может использоваться для признания недействительными   элементов кэша, патент № 2380748 машиночитаемый носительрегистрация и извлечение информации об изменении таблицы базы   данных, которая может использоваться для признания недействительными   элементов кэша, патент № 2380748 . Комбинации упомянутых выше носителей также должны быть включены в диапазон машиночитаемых носителей информации. Машиноисполняемые инструкции содержат, например, инструкции и данные, которые предписывают компьютеру общего назначения, компьютеру специального назначения или специализированному устройству обработки данных, такому как графический процессор (GPU), выполнение определенной функции или группы функций.

В этом описании и в последующей формуле изобретения "вычислительная система" определена как один или большее количество программных модулей, один или большее количество аппаратных блоков или как их комбинации, которые осуществляют совместную работу для выполнения операций в отношении электронных данных. Например, определение вычислительной системы включает в себя аппаратные компоненты персонального компьютера, а также программные модули, например операционную систему персонального компьютера. Физическая компоновка модулей является не существенной. Вычислительная система может содержать один или большее количество компьютеров, соединенных через сеть. Аналогично, вычислительная система может содержать одно физическое устройство (например, мобильный телефон или персональное информационное устройство (PDA)), где внутренние блоки (такие как память и процессор) осуществляют совместную работу для выполнения операций в отношении электронных данных.

В этом описании и в последующей формуле изобретения "ответ Web" определен как страница, читаемая для человека, например, такая как web-страница, и/или результаты web-услуг. Web-страница может быть извлечена из сети, например, такой как всемирная паутина ("WWW"), посредством доступа к соответствующему унифицированному указателю информационного ресурса ("URL"), Web-страница может содержать одну или большее количество инструкций языка гипертекстовой разметки ("HTML"), которые представимы в Web-браузере, например браузере 102. Web-услуга обеспечивает механизм для связи (возможно, независимо от взаимодействия с пользователем) различных приложений из различных источников, без необходимости разработки заказных инструкций. Web-услуги могут интегрировать несколько различных технологий, например, расширяемую спецификацию языка, предназначенного для создания страниц WWW, ("XML") для разметки данных с помощью тэгов (неотображаемых элементов разметки) данных, простой протокол доступа к объектам ("SOAP") для передачи данных, язык описания web-услуг ("WSDL") для описания доступных услуг, и универсальную систему предметного описания и интеграции ("UDDI") для перечисления доступных услуг. Web-услуги могут совместно использовать бизнес логику, данные и процессы посредством программного интерфейса через сеть.

В этом описании и в последующей формуле изобретения "запрос Web" определен как запрос на "ответ Web". Для инициирования запроса Web могут быть введены пользователем соответствующие команды в интерфейс пользователя. Например, пользователь в вычислительной системе-клиенте 101 может ввести в браузер 102 соответствующие команды для доступа к URL, соответствующему web-странице. С другой стороны, запрос Web может быть инициирован приложением. Например, приложение web-услуг в вычислительной системе-клиенте 101 может инициировать запрос Web к приложению web-услуг в вычислительной системе-сервере 111.

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

Фиг.1 иллюстрирует возможную сетевую архитектуру 100, обеспечивающую конфигурирование элементов кэша зависимыми от изменений в таблицах базы данных и признание недействительными элементов кэша на основе изменений в таблицах базы данных, согласно принципам настоящего изобретения. Прямоугольные элементы в сетевой архитектуре 100 (например, браузер 102, модуль 132 интерфейса кэша, модуль 133 создания ответа, модуль 136 интерфейса базы данных, триггер 167 и триггер 177) представляют исполняемые модули, способствующие реализации принципов настоящего изобретения. Прокручиваемые элементы (элементы 121 и 126 кэша, содержимое 134 ответа, записи 151 и 156 и данные 163 и 164) представляют данные, обрабатываемые исполняемыми модулями. Соответственно, исполняемые модули и прокручиваемые элементы, указанные в сетевой архитектуре 100, совместно взаимодействуют для реализации принципов настоящего изобретения.

Внутри сетевой архитектуры 100 вычислительная система-клиент 101 и вычислительная система-сервер 111 подсоединены к сети 106 посредством соответствующих линий 103 и 104 связи, соответственно. Сеть 106 может быть локальной сетью (ЛС, LAN), глобальной сетью (ГС, WAN) или даже Интернет. Вычислительная система-клиент 101 содержит браузер 102, который может передавать запросы Web (например, запросы протокола передачи гипертекстовых файлов ("HTTP")) на web-страницы и получать web-страницы, возвращаемые вычислительной системе 101 в ответ на запрос Web. Браузер 102 также может представлять в вычислительной системе-клиенте 101 полученное содержимое web-страницы (например, текст, графические данные, видеоданные и звуковые данные). Вычислительная система-клиент 101 также может содержать приложения web-услуг, которые осуществляют связь с соответствующими приложениями web-услуг в вычислительной системе-сервере 111.

Вычислительная система-сервер 111 содержит модуль 133 создания ответа, который может создавать ответы Web в ответ на запросы Web клиента. Модуль 133 создания ответа может осуществлять обработку файлов страницы, например, таких как файлы активных страниц сервера ("ASP"), для создания web-страниц. Файл страницы может содержать инструкции и/или команды на нескольких различных языках, например, таких как язык гипертекстовой разметки ("HTML"), расширяемая спецификация языка, предназначенного для создания страниц WWW ("XML"), JavaScript и VBScript. Модуль 133 создания ответа может осуществлять обработку инструкций и/или команд в файле страницы для формирования содержимого для ответа Web. Модуль 133 создания ответа может быть сконфигурирован для формирования web-страниц, например, в ответ на запрос Web из браузера, и сконфигурирован для сформированных результатов web-служб, например, в ответ на запрос Web из приложения web-службы.

Вычислительная система-сервер 111 соединена с базой данных 141 (например, базой данных SQL) посредством линии 107 связи. Модуль 136 интерфейса базы данных может осуществлять передачу команд базы данных через линию 107 связи в базу данных 141. Команды базы данных могут использоваться для манипулирования содержимым (например, добавления, удаления или изменения строк или записей) или извлечения содержимого из базы данных 141. Модуль 136 интерфейса базы данных может получать ввод пользователя (например, из клавиатуры или мыши), который преобразуется в команды базы данных и передается в базу данных 141. Альтернативно, модуль 136 интерфейса базы данных может получать входные данные из модуля 133 создания ответа, запрашивающего содержимое для включения в ответ Web. В ответ модуль 136 интерфейса базы данных может извлекать содержимое из базы данных 141 и предоставлять извлеченное содержимое модулю 133 создания ответа. Модуль 133 создания ответа, для создания соответствующего ответа Web, может комбинировать извлеченное содержимое со статическим содержимым в содержимое 134 ответа.

База данных 141 может хранить информацию контроля версий для таблиц данных, содержащихся в базе данных 141. Модуль 136 интерфейса базы данных может извлекать информацию контроля версий для таблиц данных и предоставлять извлеченную информацию контроля версий модулю 132 интерфейса кэша. Модуль 132 интерфейса кэша может использовать извлеченную информацию контроля версий для определения того, когда должны быть признаны недействительными (и впоследствии удалены) элементы из кэша 112. Например, основываясь на извлеченной информации контроля версий, модуль 132 интерфейса кэша может определить, когда следует признать недействительным элемент 121 кэша или элемент 126 кэша. Кэш 112 может быть областью хранилища данных с сокращенным временем ожидания, например, такой как системная память вычислительной системы-сервера 111.

Информация контроля версий может храниться в структурах данных информации контроля версий, которые представляют версии таблиц данных, содержащихся в базе данных 141. Одним из полей структуры данных информации контроля версий может быть поле ИД таблицы, которое представляет ИД таблицы, идентифицирующей таблицу данных в базе данных 141. ИД таблицы может быть значение, например, содержащее цифровые и/или буквенные знаки, которое однозначно идентифицируют таблицу данных. Например, для идентификации таблицы 162 может использоваться ИД таблицы "Таблица Продаж 3".

Другим полем структуры данных информации контроля версий может быть поле ИД изменения, которое представляет ИД изменения для таблицы данных, идентифицированной соответствующим ИД таблицы. ИД изменения может быть значение, например, содержащее цифровые знаки, которое идентифицирует текущую версию таблицы данных. При изменении содержимого в таблице данных может быть обновлен (например, посредством приращения ИД изменения) соответствующий ИД изменения. Например, при вставке содержимого в таблицу 172 может быть осуществлено приращение ИД 158 изменения. Другим полем структуры данных информации контроля версий может быть поле даты, представляющее дату начала отслеживания базой данных 141 версии таблицы данных, идентифицированной соответствующим ИД таблицы. Например, дата 154 может указывать, когда база данных 141 начала отслеживать информацию контроля версий таблицы 162. Соответственно, структура данных информации контроля версий может иметь формат:

регистрация и извлечение информации об изменении таблицы базы   данных, которая может использоваться для признания недействительными   элементов кэша, патент № 2380748

Одна или большее количество структур данных информации контроля версий может храниться в виде записей в таблице уведомлений об изменениях, содержащейся в базе данных 141. Например, таблица 142 уведомлений об изменениях содержит записи 151 и 156. Дополнительно, каждая серия из трех вертикальных точек (то есть, каждое из вертикальных троеточий) внутри таблицы 142 уведомлений об изменениях, означает, что таблица 142 уведомлений об изменениях может содержать другие записи. Каждая запись в таблице 142 уведомлений об изменениях соответствует таблице данных, которая была сконфигурирована для отслеживания информации контроля версий. Например, записи 151 и 156 могут соответствовать таблицам 162 и 172, соответственно. Соответственно, ИД 152 таблицы может хранить значение, используемое для идентифицикации таблицы 162, ИД 153 изменения может хранить значение, указывающее текущую версию таблицы 162, и дата 154 может хранить значение, указывающее, когда база данных 141 начала отслеживать информацию контроля версий для таблицы 162. Аналогично, ИД 157 таблицы может хранить значение, используемое для идентификации таблицы 172, ИД 158 изменения может хранить значение, указывающее текущую версию таблицы 172, и дата 159 может хранить значение, указывающее, когда база данных 141 начала отслеживать информацию контроля версий для таблицы 172.

Таблица данных может быть сконфигурирована для отслеживания информации контроля версий посредством использования соответствующего триггера (например, фрагмента машиноисполняемых инструкций), который обновляет соответствующий ИД изменения в таблице уведомлений об изменениях. При изменении содержимого в таблице данных, выполняется триггер базы данных, и обновляется соответствующий ИД изменения. Например, при изменении данных в записи 164, может быть выполнен триггер 167 для обновления значения ИД 153 изменения. Аналогично, при вставке записи 176 в данные 173, может быть выполнен триггер 177 для обновления значения ИД 158 изменения. Администратор или пользователь базы данных 141 (или, альтернативно, вычислительной системы-сервера 111) может осуществить ввод пользователя, который приводит к ассоциированию соответствующего триггера с таблицей данных.

Таблица 162 и таблица 172 являются таблицами данных, содержащимися в базе данных 141. Каждая из таблиц 162 и 172 может содержать содержимое, которое, возможно, извлекается модулем 136 интерфейса базы данных для включения в ответ Web. Например, таблица 162 и таблица 172 могут содержать общую опись и информацию о продажах, соответственно. Содержимое в таблице данных может быть представлено одной или большим количеством записей. Например, данные 163 представлены записями 164 и 166 (и, возможно, другими записями, представленными вертикальными троеточиями). Аналогично, данные 173 представлены записями 174 и 176 (и, возможно, другими записями, представленными вертикальными троеточиями).

Модуль 136 интерфейса базы данных может передавать команды в базу данных 141 (или другие базы данных), которые приводят к извлечению содержимого из базы данных 141 (или других баз данных). Извлеченное содержимое может использоваться в качестве содержимого для ответа Web, который впоследствии передается в запрашивающую вычислительную систему. Например, вычислительная система-сервер 111 может получить запрос Web из вычислительной системы-клиента 101. Запрос Web может быть передан в модуль 133 создания ответа, который, для создания соответствующего ответа Web, осуществляет обработку соответствующего файла страницы. Модуль 133 создания ответа может осуществить проверку кэша 112 для определения того, хранится ли в кэше 112 ответ Web (или его часть). Когда ответ Web хранится в кэше 112, ответ Web может быть непосредственно возвращен вычислительной системе-клиенту 101.

Когда в кэше 112 не хранится ответ Web, для определения ответа Web могут быть выполнены сценарии, включающие в себя соответствующий файл страницы. Выполнение сценария может включать в себя проверку части ответа Web, которая хранится в кэше 112, и ее использование, если это предусмотрено. Когда содержимое не хранится в кэше 112, выполняемые сценарии могут запросить содержимое из базы данных 141. Соответственно, запросы на содержимое передаются в модуль 136 интерфейса базы данных, который может выдать соответствующие команды для извлечения ИД изменений и ИД таблиц и запрошенное содержимое, извлеченное на основе ИД изменений и ИД таблиц. Например, основываясь на ИД 153 изменения и ИД 152 таблицы, модуль 136 интерфейса базы данных может впоследствии извлечь данные из таблицы 162.

Информация о версии может быть извлечена до запрашивания данных. Например, модуль 136 интерфейса базы данных может быть сконфигурирован для извлечения информации о версии (например, одного или большего количества ИД изменений и одного или большего количества соответствующих ИД таблиц) до запрашивания данных (например, данные 163 и/или данные 173). Извлечение информации о версии перед запрашиванием данных существенно уменьшает вероятность регистрация и извлечение информации об изменении таблицы базы   данных, которая может использоваться для признания недействительными   элементов кэша, патент № 2380748 состояния гонокрегистрация и извлечение информации об изменении таблицы базы   данных, которая может использоваться для признания недействительными   элементов кэша, патент № 2380748 , где данные в таблице данных изменяются после запрашивания данных, но до извлечения информации о версии.

Модуль 133 создания ответа может также определять, должно ли быть кэшировано извлеченное содержимое, и является ли извлеченное содержимое зависимым от таблицы данных. Модуль 133 создания ответа может передавать извлеченное содержимое, которое должно быть кэшировано, совместно с указанием относительно зависимостей от любых таблиц данных (например, ИД таблицы и соответствующий ИД изменения), в модуль 132 интерфейса кэша. Модуль 132 интерфейса кэша может вставлять извлеченное содержимое в кэш 112. Соответственно, последующие запросы Web на извлеченное содержимое могут быть обработаны с повышенной эффективностью.

Содержимое в кэше может храниться в структурах данных элементов кэша, которые представляют содержимое в кэше и соответствующие зависимости. Одним из полей структуры данных элемента кэша может быть поле содержимого страницы, которое представляет содержимое, которое было (или должно быть) возвращено компьютеру-клиенту в запрошенном ответе Web. Содержимое страницы может содержать часть ответа Web (например, одну или большее количество записей из таблицы данных) или может содержать ответ Web полностью. Например, содержимое 122 ответа может содержать содержимое из записей 164 и 166. Альтернативно, содержимое 122 ответа может содержать ответ Web полностью, содержащий содержимое из базы данных 141, содержимое из содержимого 134 ответа и содержимое из других местоположений (например, из других баз данных или из других web-услуг).

Другим полем структуры данных элемента кэша может быть поле ИД таблицы, которое представляет ИД таблицы, идентифицирующий таблицу данных в базе данных 141. ИД таблицы может быть значение, например, содержащее цифровые и/или алфавитные знаки, извлеченные из таблицы уведомлений об изменениях. Например, при извлечении содержимого из таблицы 162, также может быть извлечен ИД 152 таблицы из таблицы 142 уведомлений об изменениях. Соответственно, ИД таблицы в кэше 112 может соответствовать ИД таблицы в таблице 142 уведомлений об изменениях. Например, когда содержимое извлекается из таблицы 172, таблицу 172 может идентифицировать как ИД 128 таблицы, так и ИД 157 таблицы.

В некоторых вариантах осуществления в кэше для каждой отслеживаемой таблицы данных поддерживается единый кортеж ИД таблицы/ ИД изменения, например, такой как ключевой элемент.Любое содержимое, основанное на таблице, может быть сделано зависимым от соответствующего ключевого элемента. Соответственно, несколько элементов в кэше может быть сделано зависимыми от одного ключевого элемента. При изменении таблицы, идентифицированной ИД таблицы, может быть обновлен соответствующий ИД изменения в ключевом элементе, или ключ может быть удален. Обновление или удаление ключевого элемента приводит к удалению из кэша всех зависимых элементов кэша (например, элемента 126 кэша). При наличии единой зависимости от ключа признаются недействительными несколько элементов кэша, при этом уменьшается количество запросов и сравнений версий, необходимых для поддержания элементов кэша. Соответственно, ключевые элементы могут использоваться для повышения эффективности определения того, когда должно быть признано недействительным зависимое содержимое.

Другим полем структуры данных элемента кэша может быть поле ИД изменения, которое представляет ИД изменения для таблицы данных, идентифицированной соответствующим ИД таблицы. ИД изменения может быть значение, например, содержащее цифровые знаки, извлеченные из таблицы уведомлений об изменениях. Например, при извлечении содержимого из таблицы 162, может быть также извлечен ИД 153 изменения из таблицы 142 уведомлений об изменениях. Соответственно, ИД изменения в кэше 112 может соответствовать ИД изменения в таблице 142 уведомлений об изменениях. Например, в момент извлечения данных из таблицы 172, ИД 129 изменения и ИД 158 изменения могут быть эквивалентны. Соответственно, структура данных элемента кэша может иметь формат:

регистрация и извлечение информации об изменении таблицы базы   данных, которая может использоваться для признания недействительными   элементов кэша, патент № 2380748

В кэше 112 может храниться одна или большее количество структур данных элемента кэша. Например, кэш 112 содержит элементы 121 и 126 кэша. Дополнительно, каждая серия из трех точек (то есть, каждое троеточие) внутри кэша 112 обозначает, что кэш 112 может содержать другие элементы кэша. Каждый элемент кэша в кэше 112 соответствует части содержимого, которая была включена в предварительно созданный ответ Web. Например, элементы 121 и 126 кэша содержат содержимое 122 и 127 ответа, соответственно, которое может быть включено в ответы Web (или может быть ответами Web), переданные вычислительной системе-клиенту 101.

Время от времени вычислительная система-сервер 111 может запрашивать базу данных 141 в отношении информации контроля версий. Например, модуль 136 интерфейса базы данных может быть сконфигурирован для запроса базы данных 141 в заданные интервалы времени (например, каждые пять секунд). В ответ на прием запроса, база данных 141 может возвращать информацию контроля версий для любых таблиц данных, которые были изменены после приема последнего сигнала опроса. Запросом может быть запрашивание в отношении конкретных таблиц данных, которые имеют информацию контроля версий, отличную от информации контроля версий, содержащейся в запросе. Модуль 136 интерфейса базы данных может принимать информацию контроля версий, возвращенную из базы данных 141 в ответ на запрос. Модуль 136 интерфейса базы данных может передавать принятую информацию контроля версий в модуль 132 интерфейса кэша. Модуль 132 интерфейса кэша может осуществлять обработку принятой информации контроля версий для идентифицирования элементов кэша, которые должны быть признаны недействительными и, возможно, удалены из кэша 112. Альтернативно, модуль 132 интерфейса кэша может осуществлять обработку принятой информации контроля версий для обновления соответствующих ключевых элементов внутри кэша 112.

В альтернативном варианте осуществления вычислительная система-сервер 111 может запрашивать базу данных 141 в отношении информации контроля версий, которая изменилась, и требовать, чтобы запрос не возвращался, пока не будут обнаружены некоторые изменения. Например, модуль 136 интерфейса базы данных может использоваться для выдачи запроса блокировки для каждой отслеживаемой таблицы. Выданный запрос блокировки может содержать имеющуюся текущую информацию о версии для каждой отслеживаемой таблицы. После приема выданного запроса блокировки база данных 141 ожидает, пока не обновится информация о версии для одной или большего количества запрошенных таблиц. В ответ на обновление база данных 141 может возвратить TableID (ИД таблицы) и информацию о версии для измененной таблицы (измененных таблиц). Запросы блокировки могут быть выполнены синхронно, чтобы запрос на данные не возвращался, пока не будет доступна информация об изменении. С другой стороны, запросы блокировки могут быть выполнены асинхронно, чтобы запрос возвратился немедленно, и, когда становится доступной информация об изменении, вычислительной системой-сервером 111 вызывается обратный вызов.

Фиг.2 иллюстрирует возможную блок-схему последовательности операций способа 200 конфигурирования базы данных для предоставления уведомлений об изменениях таблиц, согласно принципам настоящего изобретения. Способ 200 будет описан в отношении вычислительных систем и базы данных, изображенных в сетевой архитектуре 100. Способ 200 включает в себя действие выбора таблицы данных для мониторинга в отношении изменений (действие 201). Действие 201 может включать в себя вычислительную систему, которая может быть подсоединена через сеть к базе данных (или содержит базу данных), выбирающую из базы данных таблицу данных, которая должна отслеживаться в отношении изменения содержимого. Выбор таблицы данных для мониторинга в отношении изменения может включать в себя модуль 136 интерфейса базы данных, получающий ввод пользователя, идентифицирующий таблицу данных, которая должна отслеживаться. Например, администратор вычислительной системы-сервера 111 и/или базы данных 141 может представить команды, выбирающие для мониторинга таблицу 162 и/или таблицу 172. Если таблица уведомлений об изменениях еще не создана, то администратор может также ввести команды для создания таблицы уведомлений об изменениях. Например, администратор вычислительной системы-сервера 111 и/или базы данных 141 может представить в базу данных 141 команды, которые приводят к созданию таблицы 142 уведомлений об изменениях.

Альтернативно, вычислительная система 111 может автоматически представить команды, выбирающие таблицу данных для мониторинга, в ответ на прием запроса Web на соответствующий ответ Web, который должен содержать содержимое из выбранной таблицы данных. Например, в ответ на прием запроса Web на соответствующий ответ Web, который должен содержать содержимое из таблицы 162 и/или таблицы 172, вычислительная система-сервер 111 может автоматически представить команды, выбирающие для мониторинга таблицу 162 и/или таблицу 172. Если таблица уведомлений об изменениях еще не создана, то вычислительная система-сервер 111 может автоматически, например, на основе директив страницы внутри сценария представить команды, которые приводят к созданию таблицы уведомлений об изменениях. Например, в ответ на прием запроса Web на соответствующий ответ Web, который должен содержать содержимое из таблицы данных в базе данных 141, вычислительная система-сервер 111 может автоматически представить команды, которые приводят к созданию таблицы 142 уведомлений об изменениях. Модуль 136 интерфейса базы данных может передать в базу данных 141 введенные пользователем и/или автоматически сформированные команды создания таблицы уведомлений об изменениях и команды выбора таблицы данных.

Способ 200 включает в себя действие вставки записи, которая соответствует таблице данных, в таблицу уведомлений об изменениях (действие 202). Действие 202 может включать в себя вставку записи, которая соответствует таблице данных, в таблицу уведомлений об изменениях, когда таблица уведомлений об изменениях еще не содержит запись, соответствующую таблице данных. Например, вычислительная система, которая может быть подсоединена через сеть к базе данных (или содержит базу данных), может вставить запись, соответствующую выбранной таблице данных, в таблицу уведомлений об изменениях. Вставленная запись может содержать информацию контроля версий (например, представленную структурой данных информации контроля версий), соответствующую выбранной таблице данных. Вставка записи в таблицу уведомлений об изменениях может включать модуль 136 интерфейса базы данных, получающий ввод пользователя, указывающий, что запись должна быть вставлена в таблицу уведомлений об изменениях.

Например, администратор вычислительной системы-сервера 111 и/или базы данных 141 может представить команды, которые приводят к вставке записей 151 и 156 в таблицу 142 уведомлений об изменениях. Альтернативно, вычислительная система 111 может автоматически представить команды, которые приводят к вставке записей в таблицу уведомлений об изменениях, в ответ на прием запроса Web на соответствующий ответ Web, который должен содержать содержимое из соответствующей выбранной таблицы данных. Например, в ответ на прием запроса Web на соответствующий ответ Web, который должен содержать содержимое из таблицы 162 и/или таблицы 172, вычислительная система-сервер 111 может автоматически представить команды, приводящие к вставке записей 151 и 156 в таблицу 142 уведомлений об изменениях. Модуль 136 интерфейса базы данных может передать в базу данных 141 введенные пользователем или автоматически сформированные команды вставки записи.

Способ 200 включает в себя действие назначения триггера выбранной таблице данных (действие 203). Действие 203 может включать в себя назначение триггера выбранной таблице данных, когда триггер еще не назначен выбранной таблице данных. Например, вычислительная система, которая может быть подсоединена через сеть к базе данных (или содержащая базу данных), может назначить триггер выбранной таблице данных. Назначенный триггер может привести к обновлению информации контроля версий для выбранной таблицы данных в таблице уведомлений об изменениях при изменении содержимого в выбранной таблице данных. Например, триггер 167 может вызвать обновление ИД 153 изменения (например, посредством приращения) при изменении содержимого в таблице 162 (например, когда вставлена, удалена или изменена запись в данных 163). Аналогично, триггер 177 может вызвать обновление ИД 158 изменения (например, посредством приращения) при изменении содержимого в таблице 172 (например, когда вставлена, удалена или изменена запись в данных 173).

Назначение триггера может включать модуль 136 интерфейса базы данных, получающий ввод пользователя, указывающий триггер, который должен быть назначен выбранной таблице данных. Администратор вычислительной системы-сервера 111 и/или базы данных 141 может представить команды, приводящие к назначению триггера выбранной таблице данных. Например, администратор может представить входные данные, которые приводят к назначению триггера 167 таблице 162 и назначению триггера 177 таблице 172. Альтернативно, вычислительная система 111 может автоматически назначить триггер в ответ на прием запроса Web на соответствующий ответ Web, который должен содержать содержимое из соответствующей выбранной таблицы данных. Например, в ответ на прием запроса Web на соответствующий ответ Web, который должен содержать данные из таблицы 162 и/или таблицы 172, вычислительная система-сервер 111 может автоматически представить команды, которые приводят к назначению триггера 167 таблице 162, и/или приводят к назначению триггера 177 таблице 172. Модуль 136 интерфейса базы данных может передать в базу данных 141 введенные пользователем или автоматически сформированные команды назначения триггера.

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

Способ 200 включает в себя действие обновления информации контроля версий в ответ на изменение содержимого в выбранной таблице данных (действие 204). Действие 204 может включать в себя вычислительную систему, которая может быть подсоединена через сеть к базе данных (или содержащую базу данных), обновляющую информацию контроля версий в ответ на изменение выбранной таблицы данных. Например, при изменении содержимого в данных 162 (автоматически или в результате ввода пользователя) вычислительная система может выполнить фрагмент машиноисполняемых инструкций, включенных в триггер 167, для приращения ИД 153 изменения.

Способ 200 включает в себя действие возвращения обновленной информации контроля версий в запрашивающую вычислительную систему-сервер (действие 205). Действие 205 может включать в себя возвращение обновленной информации контроля версий в запрашивающую вычислительную систему-сервер, чтобы обновленная информация контроля версий могла использоваться для определения действительности содержимого в элементе кэша в вычислительной системе-сервере. Например, в ответ на запрос из вычислительной системы-сервера 111 база данных 141 может передать в вычислительную систему-сервер 111 записи 151 и 156 (или их части). Модуль 136 интерфейса базы данных может получить записи данных из базы данных 141. Модуль 136 интерфейса базы данных может передать данные из записей 151 и 156 (например, ИД 152 и 157 таблиц и ИД 153 и 158 изменений) в модуль 132 интерфейса кэша для использования при идентификации элементов кэша, которые должны быть признаны недействительными.

В некоторых вариантах осуществления, содержимое в кэше находится в виде объектов или результатов, используемых для формирования ответа Web, таких как табличные данные, объекты, коллекции или частичные ответы Web. Кэширование таких промежуточных результатов предусмотрено, когда результаты могут быть использованы для формирования более одного ответа Web, где каждый ответ Web содержит дополнительную дифференцирующую информацию (например, настройку или включение другой релевантной информации). В других вариантах осуществления ответ Web кэшируется полностью. Кэширование полностью ответа Web предусмотрено, когда ответ Web полностью может быть использован совместно по нескольким различным запросам Web. При кэшировании полностью ответа Web ответ Web может продвигаться вплоть до кэширования в нижних уровнях вычислительной системы-сервера, например, кэше ответа режима ядра. Соответственно, при признании ответа Web недействительным он удаляется из кэша нижнего уровня.

Фиг.3 иллюстрирует возможную блок-схему последовательности операций способа 300 для признания недействительной части содержимого в кэше, согласно принципам настоящего изобретения. Способ 300 будет описан в отношении вычислительных систем и базы данных, изображенных в сетевой архитектуре 100. Способ 300 включает в себя действие запроса таблицы уведомлений об изменениях в отношении информации контроля версий, соответствующее одной или большему количеству таблиц данных (действие 301). Действие 301 может включать в себя вычислительную систему-сервер, которая создает ответы Web, содержащие содержимое из одной или большего количества таблиц данных, запрашивающую таблицу уведомлений об изменениях в отношении информации контроля версий, соответствующей одной или большему количеству таблиц данных. Например, модуль 136 интерфейса базы данных может запросить таблицу 142 уведомлений об изменениях в отношении информации контроля версий, соответствующей таблицам 162 и 163. Модуль 136 интерфейса базы данных может осуществить запрос таблицы 142 уведомлений об изменениях в результате полученного ввода пользователя, наступления определенного интервала опроса, в ответ на запрос на извлечение содержимого в кэше, или запрос блокировки, инициализированный до запрашивания данных из зависимой таблицы.

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

В виде другого варианта, вычислительная система-сервер может выдать запрос в таблицу уведомлений об изменениях и потребовать, чтобы выданный запрос был задержан в вычислительной системе-сервере до обновления информации контроля версий для запрошенной таблицы (таблиц). Например, вычислительная система-сервер может выдать запрос, который задерживается в вычислительной системе-сервере, до превышения текущей информации о версии определенного порогового значения. Выданный запрос блокировки может быть выполнен синхронно, чтобы соответствующий поток в вычислительной системе-сервере был блокирован, пока не будут доступны результаты. С другой стороны, выданный запрос блокировки может быть выполнен асинхронно, чтобы соответствующий поток в вычислительной системе-сервере не был блокирован, и, когда будут доступны результаты, в вычислительной системе-сервере активируется обратный вызов (например, в отдельном потоке).

Способ 300 включает в себя действие получения списка из по меньшей мере одной таблицы данных, которая изменилась с последнего запрашивания таблицы уведомлений об изменениях (действие 302). Действие 302 может включать в себя вычислительную систему-сервер, которая создает ответы Web, содержащие содержимое по меньшей мере из одной таблицы данных, получающую список из по меньшей мере одной таблицы данных, которая изменилась с последнего запрашивания вычислительной системой-сервером таблицы уведомлений об обновлениях. Список из по меньшей мере одной таблицы данных может содержать текущую информацию контроля версий для упомянутой по меньшей мере одной таблицы данных. Например, база данных 141 может возвратить в вычислительную систему-сервер 111 список таблиц данных, содержащий информацию контроля версий для таблицы 162 (например, ИД 152 таблицы и ИД 153 изменения) и информацию контроля версий для таблицы 172 (например, ИД 157 таблицы и ИД 158 изменения). Модуль 136 интерфейса базы данных может получить список таблиц данных, возвращенный из базы данных 141.

Способ 300 включает в себя действие определения того, что содержимое в кэше является зависимым от упомянутой по меньшей мере одной таблицы данных (действие 303). Действие 303 может включать в себя вычислительную систему-сервер, которая создает ответы Web, содержащие содержимое по меньшей мере из одной таблицы данных, определяющую, что содержимое в кэше является зависимым по меньшей мере от одной таблицы данных. Например, вычислительная система-сервер 111 может определить, что содержимое 122 ответа является зависимым от таблицы 162, и содержимое 127 ответа является зависимым от таблицы 172. Модуль 132 интерфейса кэша может осуществить сравнение полученных ИД таблиц (ИД 152 и 157 таблиц) с соответствующими ИД таблицами в кэше (ИД 123 и 128 таблиц). Когда сравнение ИД таблиц таким образом определяет (например, когда принятый ИД таблицы и ИД таблицы в кэше идентифицируют одну и ту же таблицу данных), модуль 132 интерфейса кэша определяет, что содержимое в кэше является зависимым от таблицы данных. Например, когда значение ИД 123 таблицы соответствует значению ИД 152 таблицы, модуль 132 интерфейса кэша 132 может определить, что содержимое 122 ответа является зависимым от таблицы 162. Аналогично, когда значение ИД 128 таблицы соответствует значению ИД 157 таблицы, модуль 132 интерфейса кэша может определить, что содержимое 127 ответа является зависимым от таблицы 172.

Способ 300 включает в себя действие сравнения текущей информации контроля версий с информацией контроля версий в кэше (действие 304). Действие 304 может включать в себя вычислительную систему-сервер, которая создает ответы Web, содержащие содержимое по меньшей мере из одной таблицы данных, сравнивающую текущую информацию контроля версий с информацией контроля версий в кэше. Например, вычислительная система-сервер 111 может сравнить информацию контроля версий из возвращенного списка с информацией контроля версий, содержащейся в кэше 112. Модуль 132 интерфейса кэша может сравнить принятые ИД изменений (ИД 153 и 158 изменения) с соответствующими ИД изменений в кэше (ИД 124 и 129 изменений).

Способ включает в себя действие удаления части содержимого в кэше на основе результатов сравнения (действие 305). Действие 305 может включать в себя вычислительную систему-сервер, которая создает ответы Web, содержащие содержимое по меньшей мере из одной таблицы данных, удаляющую часть содержимого в кэше на основе результатов сравнения. Например, вычислительная система-сервер 111 может удалить содержимое из кэша 112 на основе сравнения текущей информации контроля версий с информацией контроля версий в кэше. Когда сравнение ИД изменений таким образом определяет (например, когда значение полученного ИД изменения больше значения ИД изменения в кэше), модуль 132 интерфейса кэша удаляет содержимое в кэше. Например, когда ИД 153 изменения больше ИД 124 изменения, модуль 132 интерфейса кэша может удалить элемент 121 кэша из кэша 112. Аналогично, когда ИД 158 изменения больше ИД 129 изменения, модуль 132 интерфейса кэша может удалить элемент 126 кэша из кэша 112. Когда ИД изменений идентичны, содержимое из кэша 112 не удаляется.

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

Фиг.4 иллюстрирует возможную блок-схему последовательности операций способа 400 доступа к содержимому для представления в запрашивающую вычислительную систему-клиент, согласно принципам настоящего изобретения. Способ 400 будет описан в отношении вычислительных систем и базы данных, изображенных в сетевой архитектуре 100. Способ 400 включает в себя действие приема запроса Web из вычислительной системы-клиента (действие 401). Действие 401 может включать в себя вычислительную систему-сервер, которая создает ответы Web, содержащие содержимое по меньшей мере из одной таблицы данных, получающую запрос Web из клиента. Например, вычислительная система-сервер 111 может принять запрос Web из вычислительной системы-клиента 101 (например, возникающий в результате ввода пользователя, полученного в браузере 102). Запрос Web может иметь результатом, например, доступ браузера 102 к унифицированному указателю информационного ресурса ("URL"), соответствующему ответу Web.

Запрос Web может запросить выдачу ответа Web, который должен содержать запрошенное содержимое, содержащееся в таблице данных. Например, запросом Web из вычислительной системы-клиента 101 может быть запрос на ответ Web, который должен содержать содержимое из таблицы 162 и/или таблицы 172. В основном, таблицы 162 и 172 могут быть доступны для других приложений (например, рабочего потока или регистрирующих приложений), которые могут изменить содержимое, содержащееся в таблицах 162 и 172 (включая содержимое, которое должно быть включено в запрошенный ответ Web). Соответственно, содержимое, включенное в данные 163 и данные 173, может быть изменено этими или другими приложениями между запросами Web.

В ответ на прием запроса Web вычислительная система-сервер 111 может определить, что соответствующий ответ Web полностью хранится в кэше 112 (или кэше более низкого уровня). Когда соответствующий ответ Web полностью находится в кэше, вычислительная система-сервер 111 может возвратить полностью ответ Web из кэша 112, без необходимости дополнительной обработки вследствие запроса Web. Соответственно, при кэшировании ответа Web полностью может быть существенно сокращено время ожидания, соответствующее выполнению запроса Web.

С другой стороны, в ответ на прием запроса Web вычислительная система-сервер 111 может определить, что по меньшей мере часть соответствующего ответа Web не находится в кэше в текущий момент времени. Способ 400 включает в себя действие определения того, что по меньшей мере часть содержимого, которое будет включено в соответствующий ответ Web, не находится в кэше в текущий момент времени (действие 402). Действие 402 может включать в себя вычислительную систему-сервер, которая создает ответы Web, содержащие содержимое по меньшей мере из одной таблицы данных, определяющую, что по меньшей мере часть содержимого, которое должно быть включено в ответ Web, не находится в кэше в вычислительной системе-сервере в текущий момент времени. Например, вычислительная система-сервер 111 может определить, что по меньшей мере часть содержимого, которое должно быть включено в ответ Web, который будет передан вычислительной системе-клиенту 101, не находится в кэше в вычислительной системе 111.

Запрос Web, полученный в вычислительной системе-сервере 111, может быть передан в модуль 133 создания ответа. Соответственно, модуль 133 создания ответа может извлечь соответствующий файл страницы (например, файл ASP) и осуществить обработку файла страницы для создания соответствующего ответа Web. Сценарии, включенные в файл страницы, могут запросить содержимое, которое хранится в местоположениях, внешних для вычислительной системы-сервера 111 (например, в таблицах 162 и/или 163). При обработке запроса на внешнее содержимое модуль 133 создания ответа может передать соответствующие инструкции в модуль 132 интерфейса кэша, которые приводят к попытке модуля 132 интерфейса кэша разместить внешнее содержимое в кэше 112. Когда внешнее содержимое хранится в кэше 112, модуль 132 интерфейса кэша может в ответ указать модулю 133 создания ответа, что внешнее содержимое хранится в кэше 112. С другой стороны, когда внешнее содержимое не хранится в кэше 112, модуль 132 интерфейса кэша может в ответ указать модулю 133 создания ответа, что внешнее содержимое не хранится в кэше 112.

Когда определено, что по меньшей мере часть содержимого, которое должно быть включено в ответ Web, не находится в кэше, вычислительная система-сервер 111 может дополнительно определить, является ли по меньшей мере часть содержимого зависимой от каких-либо таблиц данных в базе данных 141. Когда по меньшей мере часть содержимого является зависимой от таблицы данных в базе данных 141, вычислительная система-сервер 111 может дополнительно определить, хранится ли в кэше 112 соответствующий ключевой элемент для этой таблицы данных. Когда в кэше 112 не хранится соответствующий ключевой элемент, вычислительная система-сервер 111 может извлечь соответствующую информацию о версии для таблицы данных (например, из таблицы 142 уведомлений об изменениях) и сохранить в кэше 112 соответствующий ключевой элемент, включая соответствующую информацию о версии.

Способ 400 включает в себя действие доступа к запрошенному содержимому из таблицы данных (действие 403). Действие 403 может включать в себя вычислительную систему-сервер, которая создает ответы Web, содержащие содержимое по меньшей мере из одной таблицы данных, осуществляющую доступ к запрошенному содержимому из таблицы данных. Например, вычислительная система-сервер 111 может осуществить доступ к запрошенному содержимому из таблицы данных в базе данных 141. В ответ на указание того, что запрошенное содержимое не хранится в кэше 112, модуль 133 создания ответа может передать в модуль 136 интерфейса базы данных соответствующие инструкции (например, посредством выдачи запроса), которые приводят к попытке модуля 136 интерфейса базы данных определить местоположение запрошенного содержимого в базе данных 141. База данных 141 может определить местоположение запрошенного содержимого (например, в записях 164, 166, 174 и/или 176) и возвратить запрошенное содержимое в модуль 136 интерфейса базы данных. Затем модуль 136 интерфейса базы данных может передать запрошенное содержимое в модуль 133 создания ответа.

Способ 400 включает в себя действие создания соответствующего ответа Web, который содержит запрошенное содержимое (действие 404). Действие 404 может включать в себя вычислительную систему-сервер, которая создает ответы Web, содержащие содержимое по меньшей мере из одной таблицы данных, создающую ответ Web. Например, вычислительная система-сервер 111 может включить содержимое из базы данных 141 в ответ Web, который должен быть возвращен вычислительной системе-клиенту 101. Модуль 133 создания ответа для удовлетворения запроса Web может включить запрошенное содержимое (например, из записей 164, 166, 174 и/или 176), полученное из модуля 136 интерфейса базы данных. Модуль 133 создания ответа может сформировать соответствующий ответ Web на основе запрошенного содержимого (а также, возможно, на основе других сценариев и комманд HTML и XML, включенных в соответствующий файл страницы).

Способ 400 включает в себя функциональный этап, ориентированный на получение результата, для сохранения запрошенного содержимого таким образом, чтобы к запрошенному содержимому можно было эффективно осуществить доступ для удовлетворения последующих запросов Web (этап 407). Этап 407 может включать любые соответствующие действия для сохранения запрошенного содержимого, чтобы к запрошенному содержимому можно было эффективно осуществить доступ для удовлетворения последующих запросов Web. Однако, согласно возможному способу, изображенному фиг.4, этап 407 включает в себя соответствующее действие назначения зависимости кэша от базы данных по меньшей мере части созданного ответа Web (действие 405). Действие 405 может включать в себя вычислительную систему-сервер, которая создает ответы Web, содержащие содержимое по меньшей мере из одной таблицы данных, назначающую зависимость кэша от базы данных по меньшей мере части созданного ответа Web.

Этап 407 также включает в себя соответствующее действие кэширования по меньшей мере части созданного ответа Web (действие 406). Действие 406 может включать в себя вычислительную систему-сервер, которая создает ответы Web, содержащие содержимое по меньшей мере из одной таблицы данных, кэширующую по меньшей мере часть созданного ответа Web. Вычислительная система-сервер может кэшировать по меньшей мере часть созданного ответа Web в ячейку кэша в вычислительной системе-сервере. Например, модуль 132 интерфейса кэша может вызвать сохранение в кэше 112 по меньшей мере части созданного ответа Web, созданного модулем 133 создания ответа, до передачи созданного ответа Web в вычислительную систему-клиент 101.

При кэшировании ответа Web полностью ответ Web может продвигаться вплоть до кэширования в нижних уровнях вычислительной системы-сервера, например, кэше ответа режима ядра. Например, ответ Web полностью может быть продвинут в ячейку кэша, поддерживаемую модулем информационного сервера Интернет ("IIS"), Соответственно, когда ответ Web признается недействительным, он удаляется из кэша нижнего уровня.

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

1.<HTML>

2.<Script>

3. SqlCacheDependency с;

4. c=new SqlCacheDependency(pubs,products);

5. ProductCollection p=getproducts();

6. Cache.Insert("Pinfo",p,c);

7.</Script>

8.</HTML>

Строка 3 первого варианта инструкций создает переменную "с", имеющую тип данных SqlCacheDependency. Тип данных SqlCacheDependency может быть типом данных, предварительно установленным для представления зависимостей кэша от базы данных. Строка 4 первого варианта инструкций назначает переменной "с" представление зависимости от таблицы "products" (товары), содержащейся в базе данных "pubs" (клубы). Это может представлять, например, зависимость от таблицы 162, содержащейся в базе данных 141. Строка 5 первого варианта инструкций создает переменную "р", имеющую тип данных "ProductCollection". Тип данных ProductCollection может быть типом данных, предварительно установленным для представления списков товаров, извлеченных из базы данных товаров. Выполняемая в строке 5 функция "getproducts" возвращает список товаров (например, из таблицы 162 и/или 163), который будет храниться в переменной "р".

Строка 6 первого варианта инструкций создает элемент кэша (например, в кэше 112). Элемент кэша создается с ключом "Pinfo", который впоследствии может использоваться для ссылки на элемент кэша. Элемент кэша создается для хранения списка товаров, представленного переменной "р" (например, как содержимое 122 ответа), и элемент кэша является зависимым от таблицы товаров в базе данных клубов, что представлено переменной "с" (например, как ИД 123 таблицы). Первый вариант инструкций может иметь особое преимущество, когда в нескольких ответах Web должна содержаться одинаковая часть содержимого.

Для извлечения списка товаров в кэше в файл страницы может быть включена следующая возможная инструкция:

ProductCollection p=each("Pinfo").

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

1.<% Output Cache SqlTableDepend="pubs:products" %>

2.<HTML>

3.<Script>

4. регистрация и извлечение информации об изменении таблицы базы   данных, которая может использоваться для признания недействительными   элементов кэша, патент № 2380748

5.</Script>

6.</HTML>

Строка 1 второго варианта инструкций является директивой, которая приводит к зависимости полностью ответа Web, получающегося из файла страницы, от таблицы "products" (товаров), содержащейся в базе данных "pubs" (клубы). Может быть создан элемент кэша для кэширования полностью ответа Web (например, как содержимое 127 ответа), который получается из файла страницы. В строке 4 троеточия означают, что при обработке файла страницы могут быть выполнены другие инструкции сценария, например, такие как осуществление доступа к таблице товаров в базе данных клубов. Второй вариант инструкций может быть иметь особое преимущество, когда несколькими клиентами запрашивается один ответ Web.

Зависимость кэша от базы данных может использоваться в комбинации с одной или большим количеством других зависимостей кэша, например, от времени, файла, ключа, и/или зависимости кэша от web-услуг или даже зависимости кэша от другой базы данных. Например, для назначения полностью ответу Web зависимости кэша от базы данных и зависимости от времени в файл страницы может быть включена следующая возможная директива:

<% Output Cache Duration=600s SqlTableDepend="pubs:customers"%>

Возможная директива должна привести к хранению соответствующего ответа Web в кэше в течение 600 секунд от времени создания соответствующего ответа Web, или пока не изменится таблица "customers" (заказчики) в базе данных "pubs" (клубы).

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

Например, элемент 121 кэша и элемент 126 кэша могут быть зависимы от таблицы 162 (например, ИД 123 таблицы и ИД 128 таблицы - оба соответствуют ИД 152 таблицы). Для оптимизации эффективности определения, когда должны быть признаны недействительными содержимое 122 ответа и содержимое 127 ответа, в кэш 112 (то есть в системную память) может быть вставлен ключевой элемент, зависимый от таблицы 162. Элементы кэша 121 и 126 могут быть сделаны зависимыми от вставленного ключевого элемента. При изменении таблицы 162 последующий запрос базы данных 141 может идентифицировать тот факт, что обновлен ИД 153 изменения, и признается недействительным вставленный ключевой элемент. Признание недействительным вставленного ключевого элемента, в отличие от необходимости сравнения ИД 124 изменения и ИД 129 изменения непосредственно с ИД 153 изменения, автоматически обусловливает признание недействительными элементов 121 и 126 кэша. Соответственно, может быть уменьшено количество запросов базы данных и сравнений версий, и осуществляется экономия ресурсов сети, базы данных и обработки.

Способ 400 включает в себя действие передачи, в ответ на запрос Web, созданного ответа Web в вычислительную систему-клиент (действие 408). Действие 408 может включать в себя вычислительную систему-сервер, которая создает ответы Web, включающие в себя содержимое по меньшей мере из одной таблицы данных, передающую созданный ответ Web в вычислительную систему-клиент. Например, вычислительная система-сервер 111 может передать ответ Web в вычислительную систему-клиент 101 в ответ на запрос Web из вычислительной системы-клиента 101. Переданный ответ Web может быть ответом Web, созданным модулем 133 создания ответа.

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

Согласно фиг.5, возможная система для реализации изобретения содержит вычислительное устройство общего назначения в виде вычислительной системы 520, содержащей процессор 521, системную память 522 и системную шину 523, которая соединяет различные компоненты системы, включая системную память 522, с процессором 521. Процессор 521 может исполнять машиноисполняемые инструкции, разработанные для реализации возможностей вычислительной системы 520, включая возможности настоящего изобретения. Системная шина 523 может относиться к любому из нескольких типов структур шины, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, использующие любую из многих архитектур шины. Системная память включает в себя оперативное запоминающее устройство (ОЗУ, RAM) 525 и постоянное запоминающее устройство (ПЗУ, ROM) 524. Базовая система 526 ввода/вывода (BIOS), содержащая базовые процедуры, способствующие передаче информации между элементами внутри компьютера 520, например, используемые при запуске, может храниться в ПЗУ 524.

Вычислительная система 520 может содержать также накопитель 527 на магнитных жестких дисках для считывания с магнитного жесткого диска 539 и записи на него, дисковод 528 для магнитного диска для считывания со съемного магнитного диска 529 или записи на него, и дисковод 530 для оптического диска для считывания со съемного оптического диска 531, например компакт-диска или другого оптического носителя информации, или записи на него. Накопитель 527 на магнитных жестких дисках, дисковод 528 для магнитного диска и дисковод 530 для оптического диска подсоединены к системной шине 523 посредством интерфейса 532 накопителя на жестких дисках, интерфейса 533 дисковода для магнитного диска и интерфейса 534 дисковода для оптического диска, соответственно. Накопители на дисках и соответствующие им машиночитаемые носители информации обеспечивают энергонезависимое хранилище для машиноисполняемых инструкций, структур данных, программных модулей и других данных для вычислительной системы 520. Хотя описанные здесь возможные варианты осуществления используют магнитный жесткий диск 539, съемный магнитный диск 529 и съемный оптический диск 531, для хранения данных могут быть использованы другие виды машиночитаемых носителей информации, которые включают в себя магнитные кассеты, карточки флэш-памяти, универсальные цифровые диски, картриджи Бернулли, устройства ОЗУ, устройства ПЗУ и т.д.

Средства программного кода, содержащие один или большее количество программных модулей, включая операционную систему 535, одну или большее количество прикладных программ 536, другие программные модули 537 и данные 538 программ, могут храниться на жестком диске 539, магнитном диске 529, оптическом диске 531, ПЗУ 524 или ОЗУ 525. Пользователь может вводить в вычислительную систему 520 команды и информацию посредством клавиатуры 540, указательного устройства 542 или других устройств ввода (не изображены), например, таких как микрофон, джойстик, игровая панель, сканер и т.д. Эти и другие устройства ввода могут быть соединены с процессором 521 посредством интерфейса 546 параллельного порта, подсоединенного к системной шине 523. В виде другого варианта устройства ввода могут быть подсодсоединены посредством других интерфейсов, например, таких как параллельный порт, игровой порт, порт универсальной последовательной шины ("USB") или порт FireWire. Также к системной шине 523 посредством видеоадаптера 548 может быть подсоединен монитор 547 или другое устройство отображения. Вычислительная система 520 может быть также поодсоединена к другим периферийным устройствам вывода (не изображены), например, таким как громкоговорители и принтеры.

Вычислительная система 520 может быть подсоединена к сетям, например, таким как вычислительные сети масштаба офиса или предприятия, интранет и/или Интернет. Через такую сеть вычислительная система 520 может обмениваться данными с внешими источниками, например, такими как удаленные вычислительные системы, удаленные приложения и/или удаленные базы данных.

Вычислительная система 520 содержит сетевой интерфейс 553, посредством которого вычислительная система 520 принимает данные из внешних источников и/или передает данные во внешние источники. Согласно фиг.5, сетевой интерфейс 553 способствует обмену данными через линию 551 связи с удаленной вычислительной системой 583. Линия 551 связи представляет часть сети, а удаленная вычислительная система 583 представляет узел сети. Например, удаленная вычислительная система 583 может поддерживать базу данных, которая обеспечивает содержимое для ответов Web, создаваемых в вычислительной системе 520. С другой стороны, вычислительной системой 583 может быть компьютер-сервер, который запросил содержимое из базы данных, поддерживаемой в вычислительной системе 520.

Аналогично, вычислительная система 520 содержит интерфейс 546 последовательного порта, через который вычислительная система 520 получает данные из внешних источников и/или передает данные во внешние источники. Интерфейс 546 последовательного порта подсоединен к модему 554, через который вычислительная система 520 получает данные из внешних источников и/или передает данные во внешние источники. Альтернативно, модемом 554 может быть модем спецификации интерфейса услуг передачи данных посредством кабеля ("DOCS IS") или модемом цифровых абонентских линий ("DSL"), соединенным с вычислительной системой 520 посредством соответствующего интерфейса. В любом случае, как изображено на фиг.5, интерфейс 546 последовательного порта и модем 554 способствуют обмену данными через линию 552 связи с удаленной вычислительной системой 593. Линия 552 связи представляет часть сети, а удаленная вычислительная система 593 представляет узел сети. Например, удаленной вычислительной системой 593 может быть вычислительная система-клиент, которая запрашивает ответы Web из вычислительной системы 520. С другой стороны, вычислительной системой 593 может быть вычислительная система-сервер, которая предоставляет ответы Web в вычислительную систему 520.

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

Предусмотренные настоящим изобретением модули, а также соответствующие данные, могут храниться и к ним может быть осуществлен доступ на любом машиночитаемом носителе информации, соответствующем вычислительной системе 520. Например, части таких модулей и части соответствующих данных программы могут быть включены в операционную систему 535, прикладные программы 536, программные модули 537 и/или данные 538 программы для хранения в системной памяти 522. Когда к вычислительной системе 520 подсоединено запоминающее устройство большой емкости, например, такое как магнитный жесткий диск 539, такие модули и соответствующие данные программы также могут храниться в запоминающем устройстве большой емкости. В среде с сетевой архитектурой программные модули и соответствующие данные, описанные в отношении вычислительной системы 520, или их части, могут храниться в удаленных запоминающих устройствах, например, таких как системная память и/или запоминающие устройства большой емкости, соответствующие удаленной вычислительной системе 583 и/или удаленной вычислительной системе 593. Выполнение таких модулей может осуществляться в распределенной среде описанным выше способом.

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

Класс G06F17/30 информационный поиск; структуры баз данных для этой цели

способ и устройство отображения множества элементов -  патент 2528147 (10.09.2014)
система генерирования статистической информации и способ генерирования статистической информации -  патент 2527754 (10.09.2014)
способ конверсии данных, устройство конверсии данных и система конверсии данных -  патент 2527201 (27.08.2014)
телекоммуникационная чип-карта, мобильное телефонное устройство и считываемый компьютером носитель данных -  патент 2527197 (27.08.2014)
способ восстановления данных в системе управления базами данных -  патент 2526753 (27.08.2014)
способ и устройство хранения, чтения и записи составного документа -  патент 2525752 (20.08.2014)
устройство связи, способ связи и система связи -  патент 2524861 (10.08.2014)
адаптивное неявное изучение для рекомендательных систем -  патент 2524840 (10.08.2014)
основанная на контексте рекомендующая система -  патент 2523930 (27.07.2014)
способ динамической визуализации коллекции изображений в виде коллажа -  патент 2523925 (27.07.2014)

Класс G06F12/14 защита от обращений к памяти посторонних пользователей

способ скрытного хранения конфиденциальных данных в защищенной энергонезависимой памяти и устройство для его реализации -  патент 2527758 (10.09.2014)
способ разрушения интегральных схем памяти носителей информации -  патент 2527241 (27.08.2014)
система контроля доступа к файлам на основе их автоматической разметки -  патент 2524566 (27.07.2014)
устройство для внедрения водяного знака в информационное представление, детектор для обнаружения водяного знака в информационном представлении, способ и компьютерная программа и информационный сигнал -  патент 2510937 (10.04.2014)
способ обнаружения вредоносного программного обеспечения в ядре операционной системы -  патент 2510075 (20.03.2014)
система и способ проверки исполняемого кода перед его выполнением -  патент 2510074 (20.03.2014)
устройство хранения данных (варианты) -  патент 2506633 (10.02.2014)
система защиты информации от несанкционированного доступа к информации, содержащей сведения, составляющие государственную тайну -  патент 2504835 (20.01.2014)
система и способ для обнаружения вредоносных программ -  патент 2497189 (27.10.2013)
использование защищенного устройства для обеспечения безопасной передачи данных в небезопасных сетях -  патент 2494448 (27.09.2013)

Класс G11C16/22 схемы безопасности или защиты, предотвращающие несанкционированный или случайный доступ к ячейкам памяти

Класс G11B13/00 Одновременная или выборочная запись способами или средствами, отнесенными к различным рубрикам; носители записи для этого; одновременное или выборочное воспроизведение

медиа-процессор для организации мультимедийных данных -  патент 2494560 (27.09.2013)
устройство воспроизведения, способ воспроизведения, программа для воспроизведения и носитель записи -  патент 2383106 (27.02.2010)
медиа-процессор для организации мультимедийных данных -  патент 2366098 (27.08.2009)
сетевые зоны -  патент 2363041 (27.07.2009)
устройство и способ для записи информации -  патент 2357377 (27.05.2009)
система передачи данных, устройство передачи данных, устройство записи данных, способ управления данными и способ генерирования идентификатора -  патент 2284591 (27.09.2006)
аппаратура оптического дискового запоминающего устройства -  патент 2137219 (10.09.1999)
система передачи данных, передатчик, приемник и способ записи информационного сигнала на носителе информации -  патент 2121164 (27.10.1998)
записывающее устройство для регистрации данных -  патент 2113021 (10.06.1998)
способ и записывающее устройство для перезаписи существующего на магнитооптическом носителе информационного узора и магнитооптический носитель записи -  патент 2107335 (20.03.1998)
Наверх