УВЕДОМЛЕНИЯ ОБ ИЗМЕНЕНИИ ДАННЫХ
NOTICES OF DATA MODIFICATION

Во многих компьютерных системах хранение и извлечение информации для прикладных программ и посредством прикладных программ обрабатываются с помощью одной или более систем централизованного хранения. Например, одним типом систем хранения, обычно используемым в персональных компьютерах, является система на основе файлов, папок и каталогов, называемая также "файловой системой". Такие файловые системы организуют множества файлов в иерархические структуры для создания абстракции физической организации носителя данных, используемого для хранения файлов. Обычно такая организация в иерархическую структуру происходит на уровне операционной системы. Хранящиеся файлы обычно непосредственно включают в себя иерархию файлов ("каталог"), воплощенную в специальном файле, поддерживаемом файловой системой. Этот каталог, в свою очередь, поддерживает список записей, соответствующих всем другим файлам в каталоге, и узловое местоположение таких файлов в иерархии (здесь называемое папками).
Использование файловой системы для централизованного хранения имеет несколько ограничений. Они могут быть преодолены посредством использования технологии реляционной базы данных в качестве основы системы централизованного хранения.
В прикладной программе, использующей данные, хранящиеся в системе хранения, некоторые действия прикладной программы могут быть основаны на изменении данных, хранящихся в системе хранения. На основе изменения индивидуальных объектов или групп объектов в хранилище прикладным программам может потребоваться выполнение соответствующей бизнес-логики или логической процедуры отображения. Например, почтовой программе может быть необходимо знать, когда приходит новое почтовое сообщение. В некоторых системах почтовые сообщения приходят и сохраняются в системе хранения. Когда приходит новое сообщение, почтовая программа может выполнить любую внутреннюю обработку, используя тот факт, что пришло новое почтовое сообщение, или используя информационное содержание почтового сообщения. Например, некоторые почтовые программы содержат правила, используемые для обработки сообщений. Применение этих правил инициируется в некоторых случаях посредством прихода нового сообщения. В дополнение к этому могут иметь место изменения пользовательского интерфейса, основанные на изменениях данных, хранящихся в системе хранения. Например, при приходе нового сообщения пользователю может быть предоставлено оповещение, которое указывает, что пришло новое сообщение. Может быть обновлен список сообщений, чтобы в него было включено новое сообщение.
Типы изменения данных, которые могут представлять интерес для прикладной программы, включают в себя создание объектов, удаление объектов, обновление объектов, в том числе перемещение объекта или изменения в защите объекта. Лежащая в основе реляционная база данных может не предусматривать триггеры (присоединенные процедуры), которые могут использоваться для обеспечения этих обновлений.
Некоторые компоненты требуют непрерывного отслеживания изменений объектов, хранящихся в реляционной базе данных. Например, антивирусные программы требуют, чтобы изменения объектов определенных типов (в том числе добавление таких объектов) инициировали сканирование на вирусы. Аналогичным образом, полнотекстовое индексирование объектов выполняется на непрерывной основе. Если в соединении прикладной программы с лежащей в основе реляционной базой данных имеется прерывание, уведомления могут быть потеряны, и возможно, что после восстановления потребуется много работы для возобновления операций. Беспрепятственное восстановление отслеживания изменений (и ответа на них), в том числе изменений, происходящих во время прерывания соединения прикладной программы с реляционной базой данных, позволило бы экономить время обработки, когда подключение возобновлено.
С учетом изложенного выше имеется потребность в средстве уведомления об изменениях, которое может использоваться в системе хранения на основе базы данных и предусматривает хорошую производительность и масштабируемость. Настоящее изобретение удовлетворяет этой потребности.
Сущность изобретения
Чтобы предоставлять уведомления об изменениях, прикладная программа регистрируется в системе уведомлений об изменениях и позволяет прикладным программам получать через подписку информацию относительно указанных изменений. Система уведомлений об изменениях отслеживает изменения данных в лежащей в основе реляционной базе данных и сохраняет информацию об изменениях, соответствующую принятому запросу, в очереди. Прикладная программа может получить доступ к соответствующим изменениям из очереди, чтобы определить, какие изменения, отвечающие на запрос прикладной программы, произошли.
В соответствии с одним вариантом воплощения могут быть созданы два вида средств отслеживания. Если прикладная программа запрашивает кратковременное средство отслеживания, то, когда эта прикладная программа теряет соединение с системой уведомлений об изменениях или завершается, оставшаяся информация в очереди для прикладной программы удаляется, и не происходит дальнейшего отслеживания изменений, отвечающих на запрос прикладной программы. Однако, когда запрашивается долговременное средство отслеживания, то, даже если прикладная программа завершается или теряет соединение, оставшаяся информация в очереди сохраняется, и любые дополнительные изменения, соответствующие запросам от прикладной программы, сохраняются в очереди. Когда прикладная программа соединяется повторно, информация об изменениях за период разъединения доступна в очереди, как и информация об изменениях в течение и после повторного соединения.
Таким образом, прикладные программы могут осуществить доступ к широкому набору вариантов подписки на уведомления о событиях в различных областях видимости объекта (на уровне индивидуальных элементов, содержания папки или полной иерархии объектов) и для различных типов событий (операции создания, обновления, удаления), типов объектов (документы, сообщения и т.д.) и видов объектов (элементы, расширения, ссылки и т.д.). Кроме того, уведомления о событиях сохраняются между завершениями сессий (преднамеренно или нет), с тем чтобы было возможно беспрепятственное возобновление отслеживания.
Другие признаки и преимущества изобретения могут стать понятны из последующего подробного описания изобретения и сопроводительных чертежей.
Краткое описание чертежей
Предшествующее описание сущности изобретения, а также последующее подробное описание изобретения лучше понятны при прочтении вместе с приложенными чертежами. С целью пояснения изобретения на чертежах показаны иллюстративные варианты воплощения различных аспектов изобретения; однако изобретение не ограничено конкретными раскрытыми способами и средствами. На чертежах:
Фиг.1 - блок-схема, представляющая компьютерную систему, в которую могут быть включены аспекты настоящего изобретения;
Фиг.2 - блок-схема, иллюстрирующая компьютерную систему, разделенную на группы из трех компонентов: аппаратный компонент, компонент системы аппаратно-программного интерфейса и компонент прикладных программ;
Фиг.3 - блок-схема последовательности этапов, выполняемых системой уведомлений об изменениях в соответствии с одним вариантом воплощения изобретения;
Фиг.4 - блок-схема системы уведомлений об изменениях и некоторых потоков данных в соответствии с одним вариантом воплощения изобретения; и
Фиг.5 - блок-схема последовательности этапов, выполняемых системой 400 уведомлений об изменениях при отслеживании изменений для клиентов 410 в соответствии с одним вариантом воплощения.
Подробное описание
Иллюстративная вычислительная среда
Многочисленные варианты воплощения настоящего изобретения могут исполняться на компьютере. Фиг.1 и последующее рассмотрение предназначены для того, чтобы дать краткое общее описание подходящей вычислительной среды, в которой может быть реализовано изобретение. Хотя это не требуется, различные аспекты изобретения могут быть описаны в общем контексте исполняемых на компьютере команд, таких как программные модули, исполняемые компьютером, например клиентской рабочей станцией или сервером. Обычно программные модули включают в себя подпрограммы, программы, объекты, компоненты, структуры данных и т.п., которые выполняют отдельные задачи или реализуют отдельные абстрактные типы данных. Кроме того, изобретение может быть осуществлено с помощью других конфигураций компьютерных систем, в том числе переносных устройств, многопроцессорных систем, основанной на микропроцессоре или программируемой бытовой электроники, сетевых персональных компьютеров, миникомпьютеров, универсальных вычислительных систем и т.п. Изобретение также может быть осуществлено в распределенных вычислительных средах, в которых задачи выполняются посредством удаленных устройств обработки, которые связаны через систему связи. В распределенной вычислительной среде программные модули могут быть размещены и в локальных, и в удаленных запоминающих устройствах.
Как показано на фиг.1, иллюстративная вычислительная система общего назначения включает в себя традиционный персональный компьютер 20 или подобное устройство, содержащее процессор 21, системную память 22 и системную шину 23, которая соединяет различные системные компоненты, в том числе системную память, с процессором 21. Системная шина 23 может представлять собой любой из нескольких типов шинных структур, в том числе шину памяти или контроллер памяти, периферийную шину и локальную шину, с использованием любой из разнообразных шинных архитектур. Системная память включает в себя постоянное запоминающее устройство (ROM; ПЗУ) 24 и оперативное запоминающее устройство (RAM; ОЗУ) 25. Базовая система 26 ввода-вывода (BIOS), содержащая базовые подпрограммы, которые помогают перемещать информацию между элементами в персональном компьютере 20, например во время запуска, хранится в постоянном запоминающем устройстве (ROM; ПЗУ) 24. Персональный компьютер 20 может также включать в себя накопитель 27 на жестких дисках для чтения и записи на жесткий диск (не показан), накопитель 28 на магнитных дисках для чтения или записи на сменный магнитный диск 29 и накопитель 30 на оптических дисках для чтения или записи на сменный оптический диск 31, например компакт-диск, предназначенный только для чтения (CD-ROM), или другие оптические носители. Накопитель 27 на жестких дисках, накопитель 28 на магнитных дисках и накопитель 30 на оптических дисках соединены с системной шиной 23 посредством интерфейса 32 накопителя на жестких дисках, интерфейса 33 накопителя на магнитных дисках и интерфейса 34 накопителя на оптических дисках соответственно. Накопители и соответствующие им машиночитаемые носители предоставляют энергонезависимое хранилище машиночитаемых команд, структур данных, программных модулей и других данных для персонального компьютера 20. Хотя описанная здесь иллюстративная среда использует жесткий диск, сменный магнитный диск 29 и сменный оптический диск 31, специалисты в области техники поймут, что в иллюстративной среде также могут использоваться другие типы машиночитаемых носителей, которые могут хранить доступные для компьютера данные, например магнитные кассеты, карты флэш-памяти, цифровые видеодиски, картриджи Бернулли, оперативные запоминающие устройства (RAM; ОЗУ), постоянные запоминающие устройства (ROM; ПЗУ) и т.п. Аналогичным образом, иллюстративная среда также может включать в себя многие типы контрольных устройств, например тепловые датчики и системы безопасности или пожарной сигнализации и другие источники информации.
Несколько программных модулей может быть сохранено на жестком диске, на магнитном диске 29, на оптическом диске 31, в постоянном запоминающем устройстве (ROM; ПЗУ) 24 или оперативном запоминающем устройстве (RAM; ОЗУ) 25, в том числе операционная система 35, одна или более прикладных программ 36, другие программные модули 37 и программные данные 38. Пользователь может вводить команды и информацию в персональный компьютер 20 через устройства ввода данных, например клавиатуру 40 и координатно-указательное устройство 42. Другие устройства ввода данных (не показаны) могут включать в себя микрофон, джойстик, игровую клавиатуру, спутниковый диск, сканер и т.п. Эти и другие устройства ввода данных часто соединяются с процессором 21 через интерфейс 46 последовательного порта, который соединен с системной шиной, но могут быть соединены посредством других интерфейсов, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 47 или устройство отображения другого типа также соединяется с системной шиной 23 через интерфейс, например видеоадаптер 48. В дополнение к монитору 47 персональные компьютеры обычно включают в себя другие периферийные устройства вывода (не показаны), например динамики и принтеры. Иллюстративная система на фиг.1 также включает в себя контроллер 55 сервера, шину 56 интерфейса малых вычислительных систем (SCSI) и внешнее запоминающее устройство 62, соединенное с шиной интерфейса SCSI.
Персональный компьютер 20 может работать в сетевом окружении с использованием логических соединений с одним или более удаленными компьютерами, например с удаленным компьютером 49. Удаленный компьютер 49 может являться другим персональным компьютером, сервером, маршрутизатором, сетевым персональным компьютером, одноранговым устройством или другим общим сетевым узлом и обычно включает в себя многие или все элементы, описанные выше относительно персонального компьютера 20, хотя на фиг.1 проиллюстрировано только запоминающее устройство 50. Логические соединения, изображенные на фиг.1, включают в себя локальную сеть (LAN) 51 и глобальную сеть (WAN) 52. Такие сетевые среды являются обычными в офисах, в компьютерных сетях масштаба предприятия, в интрасетях и в Интернете.
При использовании в среде локальной сети персональный компьютер 20 соединен с локальной сетью (LAN) 51 через сетевой интерфейс или адаптер 53. При использовании в среде глобальной сети персональный компьютер 20 обычно включает в себя модем 54 или другие средства установления связи по глобальной сети 52, например Интернет. Модем 54, который может являться внутренним или внешним, соединен с системной шиной 23 через интерфейс 46 последовательного порта. В сетевом окружении программные модули, изображенные относительно персонального компьютера 20, или их части могут храниться в удаленном запоминающем устройстве. Следует понимать, что показанные сетевые соединения являются иллюстративными, и могут использоваться другие средства установления линии связи между компьютерами.
Как проиллюстрировано на блок-схеме на фиг.2, компьютерная система 200 может быть приближенно разделена на группы из трех компонентов: аппаратного компонента 202, компонента системы 204 аппаратно-программного интерфейса и компонента 206 прикладных программ (также называемого здесь "пользовательским компонентом" или "программным компонентом" в некоторых контекстах).
Со ссылкой снова на фиг.1 в различных вариантах воплощения компьютерной системы 200 аппаратный компонент 202 может включать в себя центральный процессор 21, память (как ПЗУ 24, так и ОЗУ 25), базовую систему 26 ввода-вывода (BIOS) и различные устройства ввода-вывода, такие как, среди прочих, клавиатура 40, мышь 42, монитор 47 и/или принтер (не показан). Аппаратный компонент 202 включает в себя базовую физическую инфраструктуру для компьютерной системы 200.
Компонент 206 прикладных программ включает в себя различные программы, в том числе, но без ограничения, компиляторы, системы баз данных, текстовые процессоры, деловые программы, видеоигры и т.д. Прикладные программы предоставляют средства, с помощью которых компьютерные ресурсы используются для решения задач, предоставления решений и обработки данных для различных пользователей (машин, других компьютерных систем и/или конечных пользователей).
Компонент 204 системы аппаратно-программного интерфейса включает в себя операционную систему (и в некоторых вариантах воплощения может состоять исключительно из нее), которая, в свою очередь, в большинстве случаев включает в себя оболочку и ядро. "Операционная система" (ОС) является специальной программой, которая выступает в качестве посредника между прикладными программами и аппаратными средствами. Компонент 204 системы аппаратно-программного интерфейса может также включать в себя диспетчер виртуальных машин (VMM), общеязыковую среду исполнения (CLR) или ее функциональный эквивалент, виртуальную машину Java (JVM) или ее функциональный эквивалент или другие такие программные компоненты вместо операционной системы или в дополнение к ней в компьютерной системе. Цель системы аппаратно-программного интерфейса состоит в том, чтобы предоставить среду, в которой пользователь может исполнять прикладные программы. Цель любой системы аппаратно-программного интерфейса состоит в том, чтобы сделать компьютерную систему удобной для использования, а также использовать аппаратные средства эффективным способом.
Система аппаратно-программного интерфейса обычно загружается в компьютерную систему при запуске и затем управляет всеми прикладными программами в компьютерной системе. Прикладные программы взаимодействуют с системой аппаратно-программного интерфейса, запрашивая службы через интерфейс прикладных программ (API). Некоторые прикладные программы позволяют конечным пользователям взаимодействовать с системой аппаратно-программного интерфейса через пользовательский интерфейс, например командный язык или графический интерфейс пользователя (GUI).
Система аппаратно-программного интерфейса традиционно выполняет множество служб для прикладных программ. В многозадачной системе аппаратно-программного интерфейса, в которой одновременно могут выполняться несколько программ, система аппаратно-программного интерфейса определяет, какие прикладные программы в каком порядке должны работать, и сколько времени должно быть дано для каждой прикладной программы, прежде чем переключиться на другую прикладную программу. Система аппаратно-программного интерфейса также управляет разделением внутренней памяти среди нескольких прикладных программ и обрабатывает ввод и вывод для присоединенных аппаратных устройств, например жестких дисков, принтеров и портов модемной связи. Система аппаратно-программного интерфейса также отправляет сообщения каждой прикладной программе (и в некоторых случаях конечному пользователю) относительно статуса операций и любых ошибок, которые могли произойти. Система аппаратно-программного интерфейса также может освободить от излишней загруженности управление пакетными заданиями (например, печать) с тем, чтобы прикладная программа-инициатор была освобождена от этой работы и могла продолжать другую обработку и/или операции. На компьютерах, которые могут обеспечивать параллельную обработку, система аппаратно-программного интерфейса также управляет разделением программы таким образом, чтобы она выполнялась на более чем одном процессоре в одно и то же время.
Оболочка системы аппаратно-программного интерфейса (называемая здесь просто "оболочкой") является интерактивным интерфейсом конечного пользователя для системы аппаратно-программного интерфейса (оболочка также может называться "интерпретатором команд" или в операционной системе "оболочкой операционной системы"). Оболочка представляет собой внешний уровень системы аппаратно-программного интерфейса, который непосредственно доступен для прикладных программ и/или конечных пользователей. В отличие от оболочки ядро представляет собой самый внутренний уровень системы аппаратно-программного интерфейса, который взаимодействует непосредственно с аппаратными компонентами.
Хотя предполагается, что многочисленные варианты воплощения настоящего изобретения в особенности хорошо подходят для компьютеризированных систем, ничто в этом документе не предусматривает ограничения изобретения такими вариантами воплощения. Напротив, использованный здесь термин "компьютерная система" подразумевает охват любых и всех устройств, способных хранить и обрабатывать информацию и/или способных использовать хранящуюся информацию для управления поведением или функционированием самого устройства независимо от того, являются ли такие устройства электронными, механическими, логическими или виртуальными по своей природе.
Уведомление об изменении данных
Чтобы дать возможность прикладным программам отслеживать изменения в индивидуальных элементах, папках или доменах элементов, хранящихся в системе хранения, основанной по меньшей мере частично на реляционной базе данных, устанавливается инфраструктура уведомлений об изменениях. Отслеживание может являться специфичным для типа события изменения (создание, обновление, удаление, обновление параметров защиты и т.д.).
В соответствии с одним вариантом воплощения система уведомлений об изменениях, взаимодействующая с прикладной программой (или другим объектом), которой нужно отслеживать изменения в одном или более объектах, папках или доменах, осуществляет действия, как показано на фиг.3. Фиг.3 является блок-схемой последовательности этапов, выполняемых системой уведомлений об изменениях в соответствии с одним вариантом воплощения изобретения. Как показано на фиг.3, первый этап 300 системы уведомлений изменения должен получить идентифицирующую информацию относительно объекта, делающего запрос. В одном варианте воплощения этот этап представляет собой запрос клиента уведомлений с помощью системы уведомлений об изменениях. Система уведомлений об изменениях в одном варианте воплощения интегрирована в файловую систему, содержащую хранилище реляционной базы данных. В альтернативных вариантах воплощения система уведомлений об изменениях является уровнем или объектом, который находится во взаимодействии (прямо или косвенно) с хранилищем реляционной базы данных.
Регистрация клиента уведомлений позволяет запрашивающему объекту получить дескриптор клиента от системы уведомлений об изменениях. Это предоставляет прикладной программе уникальный идентификатор при ее транзакциях с системой уведомлений об изменениях. В некоторых вариантах воплощения во время регистрации клиента сохраняется информация защиты, которая позволяет системе уведомлений об изменениях определять, какие ограничения, если они есть, существуют для информации, которую можно разделить с прикладной программой через уведомления об изменениях. В одном варианте воплощения уведомления об изменениях элемента передаются, только если у прикладной программы имеются права для чтения этого элемента.
После того, как клиент уведомлений был зарегистрирован, как показано на этапе 310, регистрируется информация относительно изменений, о которых система уведомлений об изменениях должна предоставлять уведомления. В одном варианте воплощения это выполняется через регистрацию подписок средства отслеживания. Клиент уведомлений из этапа 300 предоставляет дескриптор, который используется для регистрации подписки. Каждая подписка определяет один или более конкретных элементов в файловой системе, для которых запрашивается уведомление. Например, в одном примере файловой системы, основанной на реляционной базе данных, элементы, за которыми может осуществляться отслеживание, могут включать в себя объекты, папки и домены. Спецификация элементов может быть осуществлена напрямую (например, задание определенного домена для отслеживания) или другим образом (например, задание всех папок с именами, соответствующими определенному регулярному выражению). Кроме того, каждая подписка определяет, какое событие изменения данных должно отслеживаться. Например, подписка может запросить уведомление при создании, удалении или изменении элементов в файловой системе. В одном варианте воплощения могут присутствовать значения по умолчанию для заданных элементов и типы событий изменения данных. Таким образом, например, в таком варианте воплощения, если не заданы никакие элементы (либо посредством прямой конкретной ссылки, либо иным образом), и не указан никакой тип изменения, уведомление считается запрашиваемым для всех возможных изменений во всех элементах.
Подписки средства отслеживания могут быть зарегистрированы в любое время. После того, как одна или более подписок средства отслеживания были зарегистрированы, как показано на этапе 320, уведомления об изменениях предоставляются запрашивающему объекту. В некоторых вариантах воплощения уведомления об изменениях предоставляются синхронно. Например, запрашивающим объектом может быть вызван метод "WaitForChanges" после того, как система уведомлений об изменениях регистрировала информацию об объекте и информацию об изменениях для поиска. Такой способ будет ожидать изменений - он возвратит уведомление об изменении, как только он будет оповещен системой уведомлений об изменениях. В других вариантах воплощения уведомления изменения предоставляются асинхронно. В асинхронном варианте воплощения запрашивающий объект может осуществить доступ к своим уведомлениям об изменениях по прошествии интервала времени, и запрашивающий объект принимает все уведомления об изменениях из этого интервала. Таким образом, может быть вызван метод "ReadOldNotifications", который определяет, имеются ли какие-либо ожидающие уведомления для запрашивающего объекта, и возвращает какие-либо ожидающие уведомления. В одном варианте воплощения представлен способ, который объединяет функциональность методов WaitForChanges и ReadOldNotifications, который осуществляет возврат немедленно при вызове с имеющимися ожидающими уведомлениями, а в ином случае осуществляет возврат, когда системой уведомлений об изменениях отмечены изменения.
В одном варианте воплощения уведомления об изменениях предоставляются через клиента уведомлений от системы уведомлений об изменениях. В другом варианте воплощения прикладная программа сигнализирует, что она готова принять такое уведомление, через вызовы методов системы уведомлений об изменениях, как описано выше. Уведомления возвращаются как коллекции соответствующих изменений. В одном варианте воплощения изменения возвращаются как результат запроса с ожиданием, выполняемого над очередью изменений. Запрос с ожиданием является отдельным типом запроса (присутствующим, например, в системах баз данных), который осуществляет возврат только тогда, когда найдены данные, соответствующие запросу. Очередь может включать в себя изменения для нескольких средств отслеживания, однако запрос с ожиданием (который осуществляет возврат только тогда, когда найдены данные, соответствующие запросу) выполнен с возможностью принимать только те изменения, которые являются ответными для зарегистрированных подписок средства отслеживания для этого клиента.
От одного клиента может быть зарегистрировано любое количество подписок средства отслеживания. Не существует ограничений для клиента на регистрацию новых подписок средства отслеживания только вскоре после создания или только прежде, чем уведомления запрошены или приняты. В описанном выше варианте воплощения все уведомления, соответствующие любой зарегистрированной подписке, возвращаются средству отслеживания в одной коллекции. В других вариантах воплощения для каждой подписки средства отслеживания могут быть возвращены отдельные ответы. Также в других вариантах воплощения регистрируется не клиент уведомлений, а один клиент подписки, содержащий воплощение клиента уведомлений и одну подписку средства отслеживания.
В соответствии с одним вариантом воплощения изобретения средство отслеживания завершает работу, когда завершается его соединение с системой уведомлений об изменениях. В этот момент или в некоторый момент впоследствии во время очистки из очереди удаляются любые уведомления, имеющие отношение к завершившему работу средству отслеживания, и уведомления, отвечающие подпискам средства отслеживания, больше не помещаются в очередь. Этот вид средства отслеживания называется кратковременным средством отслеживания. В соответствии с другими вариантами воплощения изобретения обеспечивается тип средства отслеживания, известный как долговременное средство отслеживания.
Клиенты с долговременными средствами отслеживания сохраняются между сеансами. Это дает возможность прикладным программам, которые создают клиенты с долговременными средствами отслеживания, гарантировать, что они не пропускают изменений, для которых они зарегистрированы. Когда сессия, которая создала клиента с долговременным средством отслеживания, заканчивается, уведомления об изменениях для клиента не удаляются из очереди. Вместо этого они сохраняются. Фактически все уведомления в очереди для клиента с долговременным средством отслеживания сохраняются, пока клиент с долговременным средством отслеживания не сделает запрос на их удаление. Когда прикладная программа, которая создала клиента с долговременным средством отслеживания, осуществляет повторное соединение после завершения, очередь будет содержать все уведомления, соответствующие подпискам средства отслеживания для этого клиента, которые были в очереди при завершении, но для которых не был сделан запрос на удаление, и все соответствующие уведомления, которые были помещены в очередь после завершения. Прикладная программа затем создает нового клиента и считывает эти уведомления (и после их считывания может сделать запрос на их удаление, чтобы сэкономить место в очереди).
Поскольку уведомления клиента с долговременным средством отслеживания не удаляются из очереди до тех пор, пока клиент с долговременным средством отслеживания не сделает запрос на их удаление, увеличивается уверенность в том, что прикладная программа примет все соответствующие уведомления. Например, если уведомления отправляются прикладной программе, выполняющей клиент с долговременным средством отслеживания, но не принимаются (например, из-за незапланированного завершения соединения), тогда прикладная программа не сделает запрос на их удаление, и когда подключение будет восстановлено, эти уведомления по-прежнему будут доступны в очереди для долговременного средства отслеживания. Долговременные средства отслеживания в одном варианте воплощения могут делать запрос всех уведомлений об изменениях из очереди, которые относятся к изменениям, произошедшим между двумя заданными моментами времени (указанными посредством временных меток, отсчетов счетчика или иным образом).
В соответствии с различным вариантами воплощения изобретения могут быть обеспечены либо долговременные средства отслеживания, либо кратковременные средства отслеживания, либо и те, и другие.
Фиг.4 является блок-схемой системы уведомлений об изменениях и некоторых потоков данных в соответствии с одним вариантом воплощения изобретения. Как показано на фиг.4, система 400 уведомлений об изменениях взаимодействует с прикладными программами через клиенты 410. Эти клиенты 410 являются прикладными программами, которые регистрируют клиенты средства отслеживания и подписки средства отслеживания в системе 400 уведомлений об изменениях. Регистрационные транзакции не показаны на фиг.4.
Информация о подписках средства отслеживания (и идентификации соответствующих клиентов 410 для подписок средства отслеживания) хранится в таблице 420 подписок. В одном варианте воплощения хранятся две таблицы - таблица подписок клиентов и таблица подписок средств отслеживания. Таблица подписок клиентов хранит все регистрации клиентов. Для клиентов с долговременными средствами отслеживания информация сохраняется в таблице подписок клиентов до тех пор, пока клиент с долговременным средством отслеживания не сделает запрос на их удаление. Для клиентов с кратковременными средствами отслеживания клиентские данные удаляются, как только закрывается соединение, соответствующее клиенту. Таблицы подписок средств отслеживания сохраняют информацию о зарегистрированных средствах отслеживания. Данные таблиц подписок могут быть схематизированы и храниться как данные в реляционной базе данных, для которых отслеживаются изменения, или, как показано на фиг.4, они могут храниться отдельно.
Диспетчер 430 уведомлений лежит в основе системы 400 уведомлений об изменениях. В одном варианте воплощения диспетчер 430 уведомлений является фоновым потоком, который выполняет запросы, как обозначено посредством таблицы 420 подписок, к реляционной базе данных (таблицы 440 объектов) и сохраняет уведомления об изменениях в очереди 460 уведомлений. Таблицы 440 объектов могут быть изменены посредством внешних объектов, например посредством издателя 450. Эти модификации данных происходят в таблицах 440 объектов (реляционной базе данных, лежащей в основе системы хранения). Хотя показано, что таблицы объектов являются частью системы 400 уведомлений об изменениях, они также могут быть отдельными от нее.
В одном варианте воплощения диспетчер уведомлений находит отвечающую информацию об изменениях в таблицах 440 объектов посредством выполнения операции объединения над данными из таблицы 420 подписок и таблиц 440 объектов. В некоторых вариантах воплощения некоторым из клиентов 410 не разрешается просматривать все данные в таблицах 440 объектов, и в таких вариантах воплощения уведомления об изменениях сохраняются в очереди 460 уведомлений только для изменений, к которым клиенту 410 разрешен доступ.
В одном варианте воплощения очередь 460 уведомлений реализована с использованием таблиц реляционной базы данных, и клиенты 410 используют запросы с ожиданием, чтобы определить, были ли уведомления об изменениях, отвечающие подпискам средства отслеживания, помещены в очередь 460 уведомлений. Элементы очереди включают в себя идентификатор клиента для указания, для какого из клиентов 410 предназначено уведомление об изменениях, и временную метку. Поскольку сразу могут быть доставлены несколько уведомлений об изменениях (например, в случае повторно соединенного долговременного средства отслеживания), эта временная метка позволяет клиенту 410 узнать, в каком порядке произошли изменения. Хотя очередь 460 уведомлений представлена как средство, с помощью которого клиенты 410 получают информацию об уведомлениях об изменениях, предполагаются все способы получения клиентами 410 уведомлений об изменениях от диспетчера 430 уведомлений. Обычно в некоторых вариантах воплощения система состоит из хранилища для информации о запросах изменений (таблица 420 подписки), диспетчера 430 уведомлений, который определяет, были ли произведены соответствующие изменения, и средства уведомления, которое передает уведомления клиентам.
Брокер 470 службы определяет, разъединился ли клиент 410 с кратковременным средством отслеживания, и если это произошло, очищает очередь от уведомлений об изменениях, принадлежащих этому клиенту 410 с кратковременным средством отслеживания. Брокер 470 службы также управляет другой информацией о состоянии клиента, например информацией в таблице 420 подписок, чтобы поддерживать актуальность таблицы 420 подписок. Кроме того, в одном варианте воплощения, в котором поддерживаются долговременные средства отслеживания, брокер 470 службы определяет, сделал ли клиент 410 средства отслеживания запрос на удаление уведомлений об изменениях или завершение, и выполняет операции очистки таблицы 420 подписок и очереди 460 уведомлений согласно этим запросам.
Фиг.5 является блок-схемой этапов, выполняемых системой 400 уведомлений об изменениях при отслеживании изменений для клиентов 410 в соответствии с одним вариантом воплощения. Как показано на фиг.5, на первом этапе 500 делается запрос к реляционной базе данных на соответствующие модификации данных. В одном варианте воплощения этот этап 500 выполняется только тогда, когда произошло изменение реляционной базы данных.
На втором этапе 510 соответствующие модификации данных предоставляются клиентам системы уведомлений об изменениях. Уведомления включают в себя информацию об изменении, которое произошло, например, что конкретно изменилось в отслеживаемом элементе - сам элемент, некоторый компонент элемента или некоторый относящийся к нему элемент. Кроме того, уведомления включают в себя информацию о типе события, которое инициировало уведомление. Любое изменение в данных или метаданных относительно элемента может являться источником изменения.
Инфраструктура в некоторых вариантах воплощения предоставляет для прикладных программ средства через объявленные методы, являющиеся частью интерфейса прикладных программ. Предоставленные средства включают в себя следующие функции.
Регистрация - прикладная программа может зарегистрировать клиент уведомлений. Таким образом, индивидуальные подписки на уведомления для прикладной программы могут быть обработаны через один специализированный для прикладной программы дескриптор клиента.
Подписка - зарегистрированный клиент уведомлений может зарегистрировать подписки средства отслеживания, определяя события изменения данных (например, события изменения для объекта, папки или домена), за которыми должно производиться отслеживание. Клиент уведомлений может зарегистрировать любое количество таких подписок средства отслеживания (в других вариантах воплощения регистрация не нужна, и подписка получается непосредственно прикладной программой).
Перечисление ожидающих изменений - все ожидающие изменения данных перечисляются для подписанного средства отслеживания сразу после регистрации или во время повторного запуска.
Формирование уведомлений - формируются уведомления относительно событий изменения данных, для которых были зарегистрированы подписки.
Организация очереди уведомлений - уведомления помещаются в очередь уведомлений для ответа подписанным средствам отслеживания.
Предоставление уведомлений - соответствующие уведомления из очереди уведомления предоставляются подписанным средствам отслеживания.
Завершение - предоставление способа завершения индивидуального средства отслеживания или клиента уведомлений.
Очистка - отказоустойчивая очистка уведомлений для кратковременных средств отслеживания.
DeleteWatcher (удаление средства отслеживания) и DeleteClient (удаление клиента) - так средство отслеживания указывает, что оно завершило работу, и удаляет свою информацию из системы уведомлений об изменениях. Можно сделать запрос либо на удаление индивидуальных подписок средства отслеживания, либо на удаление любой относящейся к клиенту информации. Хотя это может быть реализовано и для долговременных средств отслеживания, и для кратковременных средств отслеживания, в варианте воплощения долговременного средства отслеживания клиент долговременного средства отслеживания должен использовать это, иначе изменения будут продолжать помещаться в очередь для клиента.
Заключение
Как проиллюстрировано выше, настоящее изобретение направлено на платформу хранения для организации, поиска и совместного использования данных. Платформа хранения в соответствии с настоящим изобретением расширяет понятие хранилища данных за пределы существующих файловых систем и систем баз данных и спроектирована для хранения всех типов данных, в том числе структурированных, неструктурированных или слабоструктурированных данных, например, реляционных (табличных) данных, данных в формате XML (расширенного языка разметки) и нового вида данных, называемых элементами (Items). Через свою общую основу хранения и схематизированные данные платформа хранения по настоящему изобретению дает возможность более эффективной разработки прикладных программ для потребителей, специалистов, работающих с информацией, и предприятий. Она предлагает богатый и расширяемый интерфейс прикладного программирования, который не только делает доступными возможности, присущие его модели данных, но также охватывает и расширяет существующую файловую систему и способы доступа к базе данных. Подразумевается, что в описанных выше вариантах воплощения могут быть произведены изменения без отступления от идеи изобретения во всей ее широте. В соответствии с этим настоящее изобретение не ограничено конкретными раскрытыми вариантами воплощения, а подразумевается, что оно охватывает все модификации, которые находятся в пределах сущности и объема изобретения, определенного посредством приложенной формулы изобретения.
Как ясно из изложенного выше, все системы, способы и аспекты настоящего изобретения или их части могут быть воплощены в виде программного кода (то есть команд). Этот программный код может быть размещен на машиночитаемом носителе, например магнитном, электрическом или оптическом носителе данных, в том числе без ограничения на гибкой дискете, на компакт-диске, предназначенном только для чтения (CD-ROM), на перезаписываемом компакт-диске (CD-RW), на цифровом универсальном диске, предназначенном только для чтения (DVD-ROM), на многократно перезаписываемом цифровом универсальном диске (DVD-RAM), на магнитной ленте, на флэш-памяти, на жестком диске или на любом другом машиночитаемом носителе данных, причем когда код программы загружен в машину, например компьютер или сервер, и исполняется посредством нее, машина становится устройством для осуществления изобретения. Настоящее изобретение также может быть воплощено в виде программного кода, который передается по некоторой среде передачи, например по электрическим проводам или кабелям, по оптическому волокну, по сети, в том числе по сети Интернет или интранет, или через любой другой вид передачи, причем когда программный код принят и загружен в машину, например компьютер, и исполняется посредством нее, машина становится устройством для осуществления изобретения. При реализации на процессоре общего назначения программный код объединяется с процессором для обеспечения единого устройства, которое работает аналогично специализированным логическим схемам.