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

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

Info

Publication number
RU2380748C2
RU2380748C2 RU2004119359/09A RU2004119359A RU2380748C2 RU 2380748 C2 RU2380748 C2 RU 2380748C2 RU 2004119359/09 A RU2004119359/09 A RU 2004119359/09A RU 2004119359 A RU2004119359 A RU 2004119359A RU 2380748 C2 RU2380748 C2 RU 2380748C2
Authority
RU
Russia
Prior art keywords
web
cache
response
data table
database
Prior art date
Application number
RU2004119359/09A
Other languages
English (en)
Other versions
RU2004119359A (ru
Inventor
Майкл Джозеф ПИЦЦО (US)
Майкл Джозеф ПИЦЦО
Роберт Майкл ГОВАРД (US)
Роберт Майкл ГОВАРД
Патрик Ю-Кван НГ (US)
Патрик Ю-Кван НГ
Скотт Д. ГАТРИ (US)
Скотт Д. ГАТРИ
Адам Уэйд СМИТ (US)
Адам Уэйд СМИТ
Original Assignee
Майкрософт Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Майкрософт Корпорейшн filed Critical Майкрософт Корпорейшн
Publication of RU2004119359A publication Critical patent/RU2004119359A/ru
Application granted granted Critical
Publication of RU2380748C2 publication Critical patent/RU2380748C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

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

Description

Область техники, к которой относится изобретение
Настоящее изобретение относится к управлению содержимым в кэше. Более конкретно, настоящее изобретение относится к регистрации и извлечению уведомлений об изменениях таблицы базы данных, которые могут использоваться для признания недействительными элементов кэша.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Вычислительные системы и относящаяся к ним технология влияют на многие аспекты жизни общества. Действительно, возможности обработки информации, обеспечиваемые вычислительной системой, преобразовали образ жизни и способы работы. Многие задачи (например, электронная обработка текста, планирование и управление базами данных), которые до появления вычислительной системы выполнялись вручную, сейчас обычно выполняются вычислительными системами. Последнее время осуществлялось соединение вычислительных систем друг с другом для формирования проводных и беспроводных вычислительных сетей, через которые вычислительные системы могут осуществлять электронную связь для совместного использования данных. В результате многие задачи, выполняемые в вычислительной системе (например, речевая связь, электронная почта для организации связи с абонентами, электронная конференц-связь, 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) или другие физические носители информации, такие как оптический диск, магнитный диск или другие магнитные запоминающие устройства, или любой другой носитель, который может использоваться для переноса или хранения требуемых средств программного кода в виде машиноисполняемых инструкций или структур данных, и к которому может осуществить доступ компьютер общего или специального назначения.
При передаче или предоставлении в компьютер через сеть или другое соединение связи (проводное, беспроводное, или комбинацию проводного или беспроводного) информации компьютер, по существу, интерпретирует такое соединение, как машиночитаемый носитель. Следовательно, любое такое соединение, по существу, охватывается термином “машиночитаемый носитель”. Комбинации упомянутых выше носителей также должны быть включены в диапазон машиночитаемых носителей информации. Машиноисполняемые инструкции содержат, например, инструкции и данные, которые предписывают компьютеру общего назначения, компьютеру специального назначения или специализированному устройству обработки данных, такому как графический процессор (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. Соответственно, структура данных информации контроля версий может иметь формат:
Figure 00000001
Одна или большее количество структур данных информации контроля версий может храниться в виде записей в таблице уведомлений об изменениях, содержащейся в базе данных 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). Извлечение информации о версии перед запрашиванием данных существенно уменьшает вероятность “состояния гонок”, где данные в таблице данных изменяются после запрашивания данных, но до извлечения информации о версии.
Модуль 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 изменения могут быть эквивалентны. Соответственно, структура данных элемента кэша может иметь формат:
Figure 00000002
В кэше 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. …
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. Выполнение таких модулей может осуществляться в распределенной среде описанным выше способом.
Не удаляясь от сущности и существенных характеристик настоящего изобретения, его можно реализовать в других конкретных формах. Описанные варианты осуществления во всех отношениях должны рассматриваться только как поясняющие и не ограничительные. Следовательно, объем изобретения определяется приложенной формулой изобретения, а не предшествующим описанием. Объемом должны быть охвачены все изменения, которые находятся в рамках эквивалентов формулы изобретения.

Claims (12)

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, который содержит системную память.
RU2004119359/09A 2003-06-25 2004-06-24 Регистрация и извлечение информации об изменении таблицы базы данных, которая может использоваться для признания недействительными элементов кэша RU2380748C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/603,532 US7624126B2 (en) 2003-06-25 2003-06-25 Registering for and retrieving database table change information that can be used to invalidate cache entries
US10/603,532 2003-06-25

Publications (2)

Publication Number Publication Date
RU2004119359A RU2004119359A (ru) 2006-01-10
RU2380748C2 true RU2380748C2 (ru) 2010-01-27

Family

ID=33418662

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2004119359/09A RU2380748C2 (ru) 2003-06-25 2004-06-24 Регистрация и извлечение информации об изменении таблицы базы данных, которая может использоваться для признания недействительными элементов кэша

Country Status (12)

Country Link
US (1) US7624126B2 (ru)
EP (2) EP1492027B1 (ru)
JP (1) JP4578160B2 (ru)
KR (1) KR20050001422A (ru)
CN (2) CN101452484B (ru)
AT (1) ATE444531T1 (ru)
AU (1) AU2004202508A1 (ru)
BR (1) BRPI0402506A (ru)
CA (1) CA2471813A1 (ru)
DE (1) DE602004023355D1 (ru)
MX (1) MXPA04006267A (ru)
RU (1) RU2380748C2 (ru)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2585973C2 (ru) * 2013-06-06 2016-06-10 Хуавэй Текнолоджиз Ко., Лтд. Способ и устройство управления операцией блокировки системы баз данных
RU2615057C2 (ru) * 2014-08-13 2017-04-03 Сяоми Инк. Способ и устройство для доступа к web-странице и маршрутизатор

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7624126B2 (en) * 2003-06-25 2009-11-24 Microsoft Corporation Registering for and retrieving database table change information that can be used to invalidate cache entries
US20070038889A1 (en) * 2005-08-11 2007-02-15 Wiggins Robert D Methods and systems to access process control log information associated with process control systems
US20070088700A1 (en) * 2005-10-13 2007-04-19 International Business Machines Corporation Sending keys that identify changes to clients
KR100789771B1 (ko) * 2005-12-08 2007-12-28 한국전자통신연구원 트리거를 이용한 입력 데이터 스트림과 저장 데이터의 통합질의 처리 시스템 및 그 방법
US7856455B2 (en) * 2006-03-01 2010-12-21 International Business Machines Corporation System, method and program product for generating triggers for a relational database
KR100791628B1 (ko) * 2006-06-09 2008-01-04 고려대학교 산학협력단 이동망 시스템의 능동적 캐쉬 제어 방법, 그 기록 매체 및그 시스템
US9697253B2 (en) * 2006-10-20 2017-07-04 Oracle International Corporation Consistent client-side cache
US10296629B2 (en) * 2006-10-20 2019-05-21 Oracle International Corporation Server supporting a consistent client-side cache
US20080208606A1 (en) * 2006-11-20 2008-08-28 Yapta, Inc. Dynamic Price Tracking for Products and Services in Electronic Commerce
US8095618B2 (en) 2007-03-30 2012-01-10 Microsoft Corporation In-memory caching of shared customizable multi-tenant data
EP2009638A1 (en) * 2007-06-28 2008-12-31 THOMSON Licensing Video copy prevention if the difference betweeen the fingerprints before and after its modification is above a threshold
US20090024916A1 (en) * 2007-07-20 2009-01-22 Burckart Erik J Seamless Asynchronous Updates of Dynamic Content
CA2710427C (en) * 2007-12-21 2018-04-24 Thomson Reuters Global Resources Systems, methods, and software for entity relationship resolution
US8170213B1 (en) * 2007-12-27 2012-05-01 Emc Corporation Methodology for coordinating centralized key management and encryption keys cached through proxied elements
US8239416B2 (en) * 2008-05-30 2012-08-07 Armanta, Inc. System, method, and computer program product for modeling changes to large scale datasets
KR101023622B1 (ko) * 2008-12-16 2011-03-22 지에스네오텍(주) 적응적 고성능 프락시 캐시 서버 및 캐싱방법
US8380930B2 (en) * 2009-01-06 2013-02-19 Disney Enterprises, Inc. Refreshing cached data based on content identifier map
JP5395532B2 (ja) * 2009-06-22 2014-01-22 日本電信電話株式会社 クライアント装置、サーバ装置、コンピュータシステム、および、ファイルシステムアクセス方法、並びに、クライアントプログラムおよびサーバプログラム
US9292587B2 (en) * 2010-07-21 2016-03-22 Citrix System, Inc. Systems and methods for database notification interface to efficiently identify events and changed data
US8543554B1 (en) 2010-08-10 2013-09-24 ScalArc Inc. Method and system for transparent database query caching
US9275165B2 (en) * 2010-09-17 2016-03-01 Oracle International Corporation Method and apparatus for defining an application to allow polymorphic serialization
US8627448B2 (en) 2010-11-02 2014-01-07 Jose Renato Santos Selective invalidation of packet filtering results
WO2012095165A1 (en) 2011-01-10 2012-07-19 Telefonaktiebolaget Lm Ericsson (Publ) Caching of announcements at the edge of a packet switched telecommunication network
CN102622381B (zh) * 2011-03-14 2013-11-13 小米科技有限责任公司 一种网页重排版的方法和系统
CN102741843B (zh) * 2011-03-22 2014-03-26 青岛海信传媒网络技术有限公司 从数据库中读取数据的方法及装置
US20130086323A1 (en) * 2011-09-30 2013-04-04 Oracle International Corporation Efficient cache management in a cluster
US9465738B2 (en) 2011-11-07 2016-10-11 Square Enix Holdings Co., Ltd. Information processing system, control method, program, and recording medium
US8935480B1 (en) * 2012-01-09 2015-01-13 Amazon Technologies, Inc. Efficiently caching data at a client device
KR101436049B1 (ko) 2012-06-01 2014-09-01 에스케이텔레콤 주식회사 컨텐츠 캐싱 서비스 제공 방법 및 이를 위한 로컬 캐싱 장치
US10146885B1 (en) * 2012-12-10 2018-12-04 Emc Corporation Method and system for deciding on ordering of scripting language source code for dependency resolution
US8990205B2 (en) * 2013-01-28 2015-03-24 International Business Machines Corporation Data caveats for database tables
BR112015022115A2 (pt) * 2013-03-14 2017-07-18 Koninklijke Philips Nv dispositivo para obter informações de sinais vitais de um indivíduo, método para obter informações de sinais vitais de um indivíduo, aparelho de processamento para obter informações de sinais vitais de um indivíduo, método de processamento para obter informações de sinais vitais de um indivíduo, e, programa de computador
CN103246696A (zh) * 2013-03-21 2013-08-14 宁波公众信息产业有限公司 高并发数据库的访问方法及应用于多服务器系统的方法
US9420056B2 (en) 2013-06-26 2016-08-16 International Business Machines Corporation Analytics caching based on users connected
US9648125B2 (en) * 2013-10-04 2017-05-09 Akamai Technologies, Inc. Systems and methods for caching content with notification-based invalidation
US9813515B2 (en) 2013-10-04 2017-11-07 Akamai Technologies, Inc. Systems and methods for caching content with notification-based invalidation with extension to clients
US9641640B2 (en) * 2013-10-04 2017-05-02 Akamai Technologies, Inc. Systems and methods for controlling cacheability and privacy of objects
US20160267293A1 (en) * 2013-10-29 2016-09-15 Hewlett Packard Enterprise Development Lp Validating a Query Execution
US9954948B2 (en) * 2014-07-11 2018-04-24 Microsoft Technology Licensing, Llc Private content distribution network
US9672026B2 (en) 2014-07-21 2017-06-06 Xiaomi Inc. Light app offline updating method, device and terminal
CN104156233B (zh) * 2014-07-21 2016-05-18 小米科技有限责任公司 轻应用离线更新方法、装置及终端
US9753904B2 (en) * 2014-07-25 2017-09-05 Qualcomm Incorporated Fast rendering of websites containing dynamic content and stale content
US9654576B2 (en) * 2014-09-12 2017-05-16 Sap Se Database triggered push notification
GB201505067D0 (en) * 2015-03-25 2015-05-06 Advanced Risc Mach Ltd Rendering systems
WO2016183542A1 (en) 2015-05-14 2016-11-17 Walleye Software, LLC Computer data system position-index mapping
US10868665B1 (en) * 2015-05-18 2020-12-15 Amazon Technologies, Inc. Mitigating timing side-channel attacks by obscuring accesses to sensitive data
US10311229B1 (en) 2015-05-18 2019-06-04 Amazon Technologies, Inc. Mitigating timing side-channel attacks by obscuring alternatives in code
US10061852B1 (en) * 2015-05-19 2018-08-28 Amazon Technologies, Inc. Transparent proxy tunnel caching for database access
US10185744B2 (en) * 2015-06-23 2019-01-22 Sap Se Caching views on historical data
CN104965935B (zh) * 2015-08-06 2018-10-12 上海携程商务有限公司 网络监控日志的更新方法
US9876873B1 (en) 2015-10-21 2018-01-23 Perfect Sense, Inc. Caching techniques
US10353895B2 (en) * 2015-11-24 2019-07-16 Sap Se Atomic visibility switch for transactional cache invalidation
US9916465B1 (en) * 2015-12-29 2018-03-13 Palantir Technologies Inc. Systems and methods for automatic and customizable data minimization of electronic data stores
US9591047B1 (en) * 2016-04-11 2017-03-07 Level 3 Communications, Llc Invalidation in a content delivery network (CDN)
CN108280097B (zh) * 2017-01-06 2022-09-09 阿里云计算有限公司 一种数据库系统的故障处理方法和装置
US10198469B1 (en) 2017-08-24 2019-02-05 Deephaven Data Labs Llc Computer data system data source refreshing using an update propagation graph having a merged join listener
US11567934B2 (en) 2018-04-20 2023-01-31 Oracle International Corporation Consistent client-side caching for fine grained invalidations
US11403366B2 (en) * 2018-09-30 2022-08-02 Hewlett Packard Enterprise Development Lp On-demand retrieval of information from databases
US10977244B2 (en) * 2018-11-06 2021-04-13 Snowflake Inc. Tracking intermediate changes in database data
US10922229B2 (en) 2019-03-11 2021-02-16 Microsoft Technology Licensing, Llc In-memory normalization of cached objects to reduce cache memory footprint
KR102027823B1 (ko) * 2019-04-24 2019-10-02 주식회사 리앙커뮤니케이션즈 플러그 인 방식의 시스템 응답 성능향상 지능형 캐싱 시스템
CN110413679B (zh) * 2019-07-31 2023-01-24 深圳前海微众银行股份有限公司 数据库信息处理方法、装置、设备及可读存储介质
EP4292254A1 (en) * 2021-02-13 2023-12-20 Oracle International Corporation Invalidating cached flow information in a cloud infrastructure
US20220382680A1 (en) * 2021-05-28 2022-12-01 Zoom Video Communications, Inc. Versioning Group Cache System
CN116016397B (zh) * 2023-03-28 2023-05-30 湖南毂梁微电子有限公司 一种报文传输缓冲区快速检索方法和电路

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5897634A (en) * 1997-05-09 1999-04-27 International Business Machines Corporation Optimized caching of SQL data in an object server system
US6026413A (en) * 1997-08-01 2000-02-15 International Business Machines Corporation Determining how changes to underlying data affect cached objects
US6256712B1 (en) * 1997-08-01 2001-07-03 International Business Machines Corporation Scaleable method for maintaining and making consistent updates to caches
JPH1165905A (ja) * 1997-08-22 1999-03-09 Nec Corp HomePage更新履歴情報の利用によるwwwサービス方式
JPH11149405A (ja) * 1997-11-14 1999-06-02 Hitachi Ltd Wwwキャッシュシステムおよびwwwデータの先読み方法
US6493720B1 (en) * 1998-01-26 2002-12-10 International Business Machines Corporation Method and system for synchronization of metadata in an information catalog
EP0959416A3 (en) 1998-05-08 2005-08-10 International Business Machines Corporation Using database query technology for message subscriptions in messaging systems
US6185608B1 (en) * 1998-06-12 2001-02-06 International Business Machines Corporation Caching dynamic web pages
JP2000089996A (ja) * 1998-09-16 2000-03-31 Nec Corp 情報処理装置およびデータベースシステム
US6466949B2 (en) * 1998-11-23 2002-10-15 Myway.Com Corporation Performing event notification in a database having a distributed web cluster
US6516327B1 (en) * 1998-12-24 2003-02-04 International Business Machines Corporation System and method for synchronizing data in multiple databases
US6487641B1 (en) * 1999-04-19 2002-11-26 Oracle Corporation Dynamic caches with miss tables
US6405191B1 (en) * 1999-07-21 2002-06-11 Oracle Corporation Content based publish-and-subscribe system integrated in a relational database system
US6757708B1 (en) * 2000-03-03 2004-06-29 International Business Machines Corporation Caching dynamic content
JP4735909B2 (ja) * 2000-04-28 2011-07-27 株式会社指月電機製作所 情報表示器
US8060389B2 (en) * 2000-06-07 2011-11-15 Apple Inc. System and method for anonymous location based services
US6591266B1 (en) * 2000-07-14 2003-07-08 Nec Corporation System and method for intelligent caching and refresh of dynamically generated and static web content
EP1178402A1 (en) * 2000-08-03 2002-02-06 Hsing Tech Enterprises Co., Ltd. Method and apparatus for actively updating program file(s) of a client computer
JP2002073401A (ja) * 2000-08-28 2002-03-12 Mitsubishi Electric Corp Wwwコンテンツ配信システム、プロキシサーバ装置、wwwサーバ装置、wwwコンテンツ配信方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
US6732237B1 (en) * 2000-08-29 2004-05-04 Oracle International Corporation Multi-tier caching system
US7139973B1 (en) * 2000-11-20 2006-11-21 Cisco Technology, Inc. Dynamic information object cache approach useful in a vocabulary retrieval system
US20020116582A1 (en) * 2000-12-18 2002-08-22 Copeland George P. Batching of invalidations and new values in a web cache with dynamic content
EP1227667A1 (en) * 2001-01-18 2002-07-31 Sony Service Centre (Europe) N.V. Method and device for providing downloaded objects to an application
JP2002312218A (ja) * 2001-04-10 2002-10-25 Ricoh Co Ltd レプリケーションデータベースシステム及びその制御プログラムが記録されたコンピュータ読取り可能な記録媒体
US6917922B1 (en) * 2001-07-06 2005-07-12 Amazon.Com, Inc. Contextual presentation of information about related orders during browsing of an electronic catalog
US7269648B1 (en) * 2001-09-27 2007-09-11 Emc Corporation Resolving multiple master node conflict in a DDB
US8290909B2 (en) * 2001-11-15 2012-10-16 International Business Machines Corporation Access manager for databases
US6970981B2 (en) * 2001-12-21 2005-11-29 Tibco Software, Inc. Method and apparatus to maintain consistency between an object store and a plurality of caches utilizing transactional updates to data caches
US6871268B2 (en) * 2002-03-07 2005-03-22 International Business Machines Corporation Methods and systems for distributed caching in presence of updates and in accordance with holding times
US7089228B2 (en) * 2002-04-18 2006-08-08 International Business Machines Corporation Computer apparatus and method for caching results of a database query
US6996584B2 (en) 2002-05-14 2006-02-07 Pervasive Software, Inc. System and method of maintaining functional client side data cache coherence
US7136885B2 (en) * 2002-12-20 2006-11-14 International Business Machines Corporation Free space management
US6950823B2 (en) * 2002-12-23 2005-09-27 International Business Machines Corporation Transparent edge-of-network data cache
US7765196B2 (en) * 2003-06-23 2010-07-27 Dell Products L.P. Method and apparatus for web cache using database triggers
US7624126B2 (en) * 2003-06-25 2009-11-24 Microsoft Corporation Registering for and retrieving database table change information that can be used to invalidate cache entries
US7318074B2 (en) * 2003-11-17 2008-01-08 International Business Machines Corporation System and method for achieving deferred invalidation consistency

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2585973C2 (ru) * 2013-06-06 2016-06-10 Хуавэй Текнолоджиз Ко., Лтд. Способ и устройство управления операцией блокировки системы баз данных
US9449041B2 (en) 2013-06-06 2016-09-20 Huawei Technologies Co., Ltd. Database system lock operation method and device
RU2615057C2 (ru) * 2014-08-13 2017-04-03 Сяоми Инк. Способ и устройство для доступа к web-странице и маршрутизатор

Also Published As

Publication number Publication date
KR20050001422A (ko) 2005-01-06
JP2005018787A (ja) 2005-01-20
BRPI0402506A (pt) 2005-05-31
AU2004202508A1 (en) 2005-01-20
CN101452484A (zh) 2009-06-10
CA2471813A1 (en) 2004-12-25
ATE444531T1 (de) 2009-10-15
EP2096555A2 (en) 2009-09-02
DE602004023355D1 (de) 2009-11-12
EP1492027A1 (en) 2004-12-29
JP4578160B2 (ja) 2010-11-10
CN1577327A (zh) 2005-02-09
CN101452484B (zh) 2011-10-05
RU2004119359A (ru) 2006-01-10
EP1492027B1 (en) 2009-09-30
MXPA04006267A (es) 2005-03-31
US7624126B2 (en) 2009-11-24
US20040267824A1 (en) 2004-12-30
CN100461162C (zh) 2009-02-11
EP2096555A3 (en) 2009-12-02

Similar Documents

Publication Publication Date Title
RU2380748C2 (ru) Регистрация и извлечение информации об изменении таблицы базы данных, которая может использоваться для признания недействительными элементов кэша
US6507891B1 (en) Method and apparatus for managing internal caches and external caches in a data processing system
US6584548B1 (en) Method and apparatus for invalidating data in a cache
US6557076B1 (en) Method and apparatus for aggressively rendering data in a data processing system
US7398271B1 (en) Using network traffic logs for search enhancement
US7941439B1 (en) Methods and systems for information capture
US9672232B1 (en) Systems and methods for selectively storing event data
US8452925B2 (en) System, method and computer program product for automatically updating content in a cache
US7873632B2 (en) Systems and methods for associating a keyword with a user interface area
US20050234848A1 (en) Methods and systems for information capture and retrieval
EP2304609B1 (en) Paging hierarchical data
US20050223027A1 (en) Methods and systems for structuring event data in a database for location and retrieval
US7412708B1 (en) Methods and systems for capturing information
US7765196B2 (en) Method and apparatus for web cache using database triggers
US7503075B2 (en) Access trimmed user interface
US7895337B2 (en) Systems and methods of generating a content aware interface
US7853606B1 (en) Alternate methods of displaying search results
KR101307105B1 (ko) 정보 제공 장치, 정보 제공 방법, 및 정보 기록 매체
US20090138438A1 (en) System and Method for Implementing Browser Milestone Navigation in a Data Processing System
Sharma Chakravarthy et al. Webvigil: An approach to just-in-time information propagation in large network-centric environments
JP2006185167A (ja) ファイル検索方法、ファイル検索装置、および、ファイル検索プログラム
US9959300B1 (en) Systems and methods for article location and retrieval
Huang et al. A browser-based framework for data cache in web-delivered service composition
US8601119B1 (en) Providing navigation statistics
KR20010084702A (ko) 웹 정보 검색 및 처리방법

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20130625