ЭФФЕКТИВНЫЕ ОПЕРАЦИИ ПРОСМОТРА БАЗЫ ДАННЫХ
EFFICIENT OPERATIONS OF DATABASE REVIEW

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Все более и более часто компьютерные программы обеспечивают способность принимать и отображать на экране информацию присутствия, касающуюся другого компьютерного пользователя. Информация присутствия обычно относится к данным, описывающим доступность пользователя и его желание общаться. Например, клиентские приложения мгновенного обмена сообщениями (“IM”) обычно обеспечивают способность видеть онлайновый/офлайновый статус индивидуумов, идентифицированных в «списке партнеров по переписке», и их желание общаться, такое как «доступен», «занят» или «отсутствует». Программы управления персональной информацией (“PIM”) могут подобным же образом показывать онлайновый/офлайновый статус для отправителей электронной почты или других пользователей, идентифицированных в списке контактов или адресной книге. Кроме того, могут быть обеспечены другие типы информации присутствия. Например, информация присутствия может включать в себя телефонные номера, информацию о встречах, заметки или другие сообщения, относящиеся к доступности пользователя.
Издатель информации присутствия обычно может назначать разрешения к различным публикациям присутствия. Назначение разрешений может основываться на таких факторах, как конкретные идентификационные данные пользователя, запрашивающего эту публикацию, («запросчика»), является или нет запросчик «партнером» издателя информации присутствия, к какому домену принадлежит запросчик и другие. Пользователь может также определить, что одна версия публикации присутствия обеспечивается, если запросчик соглашается с конкретными идентификационными данными, и что другая версия той же самой публикации обеспечивается, если запросчик является членом некоторого конкретного домена. Публикации присутствия и связанные с ними разрешения обычно сохраняются в базе данных сервером присутствия. Сервер присутствия может быть интегрирован в IM компьютер-сервер или компьютер-сервер, выполненный с возможностью работы с PIM.
При приеме запроса на конкретную публикацию присутствия в сервере присутствия необходимо выполнить множественные просмотры базы данных в процедурной форме для ответа на запрос. Это обычно требуется потому, что запросчик может соответствовать нескольким разрешениям. В этом случае нужно следовать процедуре для определения того, которая версия публикации должна быть обеспечена пользователю. В качестве примера, разрешение на данную публикацию может быть предоставлено некоторому списку пользователей, и разрешение на другую версию той же самой публикации может быть предоставлено пользователям в определенном домене. Если запросчик идентифицирован в этом списке и также является членом определенного домена, то становится необходимым определить множественные процедурные правила относительно базы данных для определения того, какая версия информации присутствия должна быть обеспечена. Эти операции могут стать дорогостоящими в вычислительном плане, особенно в контексте сервера присутствия, который должен оценить много сотен запросов на информацию присутствия каждую секунду.
Именно по отношению к этим и другим соображениям аспекты вычислительной системы для выполнения эффективных просмотров базы данных описываются ниже.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Система, устройство, способ и считываемый компьютером носитель обеспечены для эффективных операций просмотра базы данных. Согласно одному аспекту способа, обеспеченного здесь, процедурные проверки для генерации ответа на запрос базы данных преобразуются в набор операций базы данных. Операции базы данных выполняются в первый раз, когда принимается запрос базы данных, для генерации возможных результатов для этого запроса. Этот набор возможных результатов для запроса затем сохраняется. Конкретный ответ на запрос затем генерируется из этого набора возможных результатов. Кроме того, на будущие запросы базы данных отвечают посредством генерации ответа на запрос из хранимого набора возможных результатов. Таким образом, процедурные проверки необязательно должны выполняться каждый раз, когда принимается запрос базы данных.
Запрос базы данных может быть принят в форме запроса на публикацию присутствия. В этом случае множеством возможных результатов для этого запроса является таблица, которая включает в себя одну или несколько строк. Каждая строка таблицы включает в себя поле данных издателя для хранения данных, идентифицирующих издателя запрашиваемой публикации присутствия, и поле данных для хранения данных, идентифицирующих запросчика публикации присутствия. Каждая строка таблицы также включает в себя поле данных контейнера для хранения данных, идентифицирующих контейнер, из которого запрос может быть удовлетворен, и поле данных ранга для хранения значения ранга. Контейнером является структура данных, которая включает в себя поле данных членства (принадлежности) для хранения данных, идентифицирующих одного или нескольких запросчиков, авторизованных для приема публикаций присутствия, идентифицированных в поле публикаций контейнера.
Набор возможных результатов может быть сгенерирован посредством создания новой строки в таблице для каждого контейнера, поддерживаемого издателем запрашиваемой публикации, который идентифицирует запросчика в своем поле данных членства. Для каждой новой строки данные хранятся в поле данных издателя, идентифицирующем этого издателя, данные хранятся в поле контейнера, идентифицирующем этот контейнер; и некоторое значение хранится в поле данных ранга, которое основано на способе, которым поле данных членства идентифицирует этого запросчика. Например, более высокое значение может храниться для более конкретной идентификации, чем для менее конкретной идентификации.
Для того чтобы вычислить конкретный ответ на запрос в отношении таблицы выполняется операция базы данных «выбор» для идентификации множества строк-кандидатов. Затем выполняется операция базы данных «соединение» между множеством строк-кандидатов и полями данных публикаций контейнеров, идентифицируемых в строках-кандидатах, для идентификации конкретного ответа. Затем обеспечивается этот конкретный ответ в ответ на запрос базы данных.
Вышеописанный предмет изобретения может быть также реализован как управляемое компьютером устройство, компьютерный процесс, вычислительная система или как промышленное изделие производства, такое как компьютерный программный продукт или считываемый компьютером носитель. Компьютерным программным продуктом может быть компьютерное ЗУ, считываемое компьютерной системой и кодирующее компьютерную программу команд для выполнения компьютерного процесса. Компьютерным программным продуктом может также быть распространяемый сигнал на несущей, считываемый вычислительной системой и кодирующий компьютерную программу команд для выполнения компьютерного процесса. Эти и другие особенности явствуют из прочтения нижеследующего Подробного Описания и обзора связанных с ним чертежей.
Данное изложение Сущности Изобретения обеспечено для введения набора понятий в упрощенной форме, которые дополнительно описываются ниже в Подробном Описании. Данное изложение Сущности Изобретения не предназначено для идентификации ключевых признаков или существенных признаков заявленного изобретения, а также не предназначено для использования для ограничения объема заявленного изобретения.
ПЕРЕЧЕНЬ ЧЕРТЕЖЕЙ
Фиг.1 является схемой сети, иллюстрирующей аспекты иллюстративного рабочего окружения;
Фиг.2 является схемой компьютерной архитектуры, подходящей для реализации компьютерной системы, которая обсуждалась со ссылкой на фиг.1 и 3-7;
Фиг.3 является схемой структуры данных, иллюстрирующей аспекты контейнерной структуры данных;
Фиг.4 является схемой структуры данных, иллюстрирующей аспекты кэшированной таблицы членов контейнеров;
Фиг.5 является блок-схемой последовательности операций, показывающей иллюстративную процедуру для обработки запроса публикации присутствия;
Фиг.6А-6С являются блок-схемами последовательности операций, показывающими иллюстративную процедуру для обновления содержимого кэшированной таблицы членов контейнеров, обсуждаемой со ссылкой на фиг.4; и
Фиг.7 является блок-схемой последовательности операций, показывающей иллюстративную процедуру для удовлетворения запроса на кэшированные данные присутствия из кэшированной таблицы членов контейнеров, обсуждаемой со ссылкой на фиг.4.
ПОДРОБНОЕ ОПИСАНИЕ
Следующее подробное описание направлено на системы, способы и считываемые компьютером носители для эффективных операций просмотра базы данных. Хотя предмет изобретения, описываемый здесь, представлен в общем контексте программных модулей, которые исполняются вместе с исполнением операционной системы на компьютерной системе, специалистам в данной области техники будет ясно, что и другие реализации могут выполняться в комбинации с другими программными модулями.
Обычно программные модули включают в себя процедуры, программы, компоненты, структуры данных и другие типы структур, которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Кроме того, специалистам в данной области техники будет ясно, что предмет изобретения, описываемый здесь, может быть реализован на практике с другими конфигурациями компьютерных систем, включающими в себя карманные устройства, многопроцессорные системы, основанную на микропроцессорах или программируемую бытовую электронику, мини-компьютеры, компьютеры-мейнфреймы и т.п. Предмет изобретения, описываемый здесь, также описывается как реализуемый на практике в распределенной вычислительной среде, где задачи выполняются удаленными обрабатывающими устройствами, которые связаны через сеть связи, и где программные модули могут быть расположены как в локальных ЗУ, так и в удаленных ЗУ. Следует понимать, однако, что реализации, описываемые здесь, могут также использоваться вместе с автономными компьютерными системами и другими типами вычислительных устройств.
В нижеследующем подробном описании делаются ссылки на сопутствующие чертежи, которые образуют его часть и которые показаны в качестве иллюстрации конкретных вариантов осуществления или примеров. Теперь со ссылкой на эти чертежи, в которых подобные позиции представляют подобные элементы по нескольким фигурам, будут описаны аспекты компьютерной системы для выполнения эффективных операций просмотра базы данных. В частности, фиг.1 показывает аспекты иллюстративного рабочего окружения для настоящего изобретения, описываемого здесь.
Иллюстративное рабочее окружение 100, показанное на фиг.1, включает в себя компьютер 102А. Компьютер 102А содержит универсальный настольный или портативный компьютер, способный к подключению к сети 104, такой как Интернет. Компьютер 102А также способен исполнять операционную систему и приложение клиента, через которое пользователь компьютера 102А может публиковать информацию присутствия. Информация присутствия обычно относится к данным, описывающим доступность пользователя компьютера 102А и его желание общаться. Например, клиентское приложение IM может исполняться на компьютере 102А, который связывается с IM-сервером 106. В дополнение к другим особенностям, клиентское приложение IM обеспечивает способность для пользователя компьютера 102А публиковать информацию присутствия для IM-сервера 106. Пользователь компьютера 102А называется здесь «издателем» информации присутствия.
IM-сервером 106 является компьютер-сервер, работающий для того, чтобы дать возможность осуществления мгновенной передачи сообщений между клиентскими приложениями IM, исполняемых на двух или нескольких компьютерах 102А-102Н. IM-сервер 106 может также дать возможность осуществления других типов взаимодействия между клиентскими приложениями IM, таких как речевой и видеочат. Для осуществления этих особенностей IM сервер 106 поддерживает базу данных 108 IM. База данных 108 IM используется для хранения пользовательских профилей для каждого зарегистрированного пользователя IM-сервера 106. Пользовательский профиль может включать в себя такие данные, как идентификационные данные пользователя, адрес электронной почты, контактные предпочтения, интересы и другую информацию. Согласно вариантам осуществления, каждый пользовательский профиль также включает в себя публикации присутствия и разрешения на публикации присутствия. Публикация присутствия является конкретным примером информации присутствия.
Компьютеры 102В-102Н могут также содержать универсальные настольные или портативные компьютеры, работающие для исполнения клиентского приложения IM. Через клиентское приложение IM запрос может быть сделан к IM серверу 106 на информацию присутствия, публикуемую пользователем компьютера 102А. Пользователи компьютеров 102В-102Н, следовательно, называются здесь «запросчиками». Клиентское приложение IM, исполняемое на компьютерах 102В-102Н, работает для приема от IM сервера 106 информации присутствия и отображения этой информации на экране. Например, онлайновый/офлайновый статус пользователя компьютера 102А может быть отображен на экране вместе с его желанием общаться, таким как «доступен», «занят» или «отсутствует». Кроме того, также могут обеспечиваться и другие типы информации присутствия. Например, информация присутствия может включать в себя телефонные номера, информацию о встречах, заметки или другие сообщения, относящиеся к доступности пользователя. Следует понимать, что многие другие типы прикладных программ также работают для запроса информации присутствия от компьютера-сервера, такие как приложение PIM.
Клиентское приложение IM, исполняемое на компьютере 102А, также дает возможность пользователю назначать разрешения для различных публикаций присутствия. Назначение разрешений может быть основано на факторах, подобных конкретной идентичности запросчика, является или нет этот запросчик «партнером» издателя информации присутствия, к какому домену принадлежит этот запросчик и другим. Издатель может также определить, что одна версия публикации присутствия обеспечивается, если запросчик совпадает с конкретной идентичностью, и что другая версия той же самой публикации обеспечивается, если запросчик является членом конкретного домена. Как отмечалось выше, публикации присутствия и связанные с ними разрешения обычно сохраняются в базе данных 108 сервером 106 или другим типом сервера присутствия.
Как показано на фиг.1, компьютеры 102D-102Е являются членами открытого облачного домена. Открытый облачный домен является доменом, связанным с системой открытой передачи сообщений. Например, домен “msn.com” может рассматриваться как открытый облачный домен, так как пользователи клиентского приложения IM MICROSOFT MESSENGER часто используют этот домен. Как также показано на фиг.1, компьютеры 102F-102H являются членами объединенного домена. Объединенным доменом является домен, который связан с доменом, к которому принадлежит пользователь компьютера 102А. Например, две компании могут иметь тесную деловую связь, так что их домены считаются интегрированными. Как будет описано более подробно ниже, назначение разрешений на информацию присутствия может также быть сделано на основе того, является ли запросчик членом открытого домена или объединенного домена.
Как будет более подробно описано ниже, IM-сервер 106 работает для приема и ответа на запросы от запросчиков на публикации присутствия издателей. Эти запросы обычно приходят в форме запросов базы данных 108 IM. Для определения того, какая публикация присутствия должна быть обеспечена для конкретного запросчика, IM-сервер 106 работает для выполнения ряда операций, которые более полно описываются ниже со ссылкой на фиг.3-7.
Со ссылкой на фиг.2 будут обеспечены дополнительные подробности, касающиеся структуры и работы компьютеров 102А-102H и 106. В частности, фиг.2 показывает иллюстративную компьютерную архитектуру для компьютера 200. Эта компьютерная архитектура может использоваться для воплощения компьютерных систем, показанных на фиг.1 и обсуждаемых выше со ссылкой на фиг.1. Например, компьютерная архитектура, показанная на фиг.2, может использоваться для реализации компьютеров 102А-102H, IM-сервера 106 и любых других компьютерных систем, обсуждаемых здесь. Следует понимать, что хотя компьютерная архитектура, показанная на фиг.2, воплощает стандартный портативный, настольный компьютер или компьютер-сервер, могут использоваться и другие типы компьютерных архитектур и вычислительных устройств. В частности, предмет изобретения, описываемый здесь, может использоваться со стандартным настольным или «персональным» компьютером, портативным компьютером, карманным или портативным вычислительным устройством, компьютером-сервером, беспроводным телефоном, таким как сотовый или PCS телефон (телефон системы персональной связи), электронным секретарем, заказным устройством аппаратного обеспечения и по существу любым другим типом вычислительного устройства.
Компьютерная архитектура, показанная на фиг.2, включает в себя центральный процессор 202 (“CPU”), системную память 204, включающую в себя ОЗУ 206 (“RAM”) и ПЗУ 208 (“ROM”), и системную шину 210, которая связывает эту память с CPU 202. Базовая система ввода/вывода (ВIOS), содержащая базовые процедуры, которые помогают передавать информацию между элементами в пределах компьютера, например, во время запуска, хранится в ПЗУ 208. Компьютер 200 дополнительно включает в себя массовую память 212 для хранения операционной системы 214, прикладных программ и других программных модулей, которые будут более подробно описаны ниже.
Массовая память 212 подключена к CPU 202 через контроллер 216 массовой памяти, подключенный к шине 210. Массовая память 212 и связанные с ней считываемые компьютером носители обеспечивают энергонезависимую память для вычислительного устройства 200. Хотя описание считываемых компьютером носителей, содержащихся здесь, относится к массовой памяти, такой как накопитель на жестких дисках дисковод для компакт-дисков, специалистам в данной области техники следует понимать, что считываемым компьютером носителем может быть любой доступный носитель, к которому компьютер 200 может осуществить доступ.
В качестве примера, а не ограничения, считываемые компьютером носители могут содержать компьютерные запоминающие носители и среды передачи данных. Компьютерные запоминающие носители включают в себя энергозависимые и энергонезависимые, сменные или несменяемые носители, реализованные в любом способе или технологии для хранения информации, такой как считываемые компьютером команды, структуры данных, программные модули или другие данные. Компьютерные запоминающие носители включают в себя, но не ограничены этим, ОЗУ, ПЗУ, ЭППЗУ, ЭСППЗУ, флэш-память или другую технологию твердотельной памяти, компакт-диски, цифровые универсальные диски (“DVD”), HD-DVD, BLU-RAY или другую оптическую память, магнитные кассеты, магнитную ленту, память на магнитных дисках или другие магнитные ЗУ или любые другие носители, которые могут использоваться для хранения желаемой информации и к которым компьютер 200 может осуществить доступ.
Согласно различным вариантам осуществления изобретения, описываемым здесь, компьютер 200 может работать в сетевом окружении с использованием логических соединений с удаленными компьютерами через сеть 110, такую как Интернет. Компьютер 200 может подключаться к сети 110 через блок 218 сетевого интерфейса, подключенный к шине 210. Следует понимать, что блок 218 сетевого интерфейса может также использоваться для подключения других типов сетей и систем удаленных компьютеров. Компьютер 200 может также включать в себя контроллер 224 ввода/вывода для приема и обработки ввода от ряда других устройств, включая клавиатуру, мышь или электронное перо (не показано на фиг.2). Подобным же образом, контроллер 224 ввода/вывода может обеспечивать вывод на экран дисплея, принтер или другой тип устройства вывода (также не показано на фиг.2).
Как кратко упомянуто выше, ряд программных модулей и файлов данных может храниться в массовой памяти 212 и ЗУПВ 206 компьютера 200, включая операционную систему 214, подходящую для управления работой сетевого персонального компьютера или компьютера-сервера, такую как операционная система WINDOWS XP от MICROSOFT CORPORATION, Редмонд, Вашингтон. Могут также использоваться и другие операционные системы, такие как операционная система LINUX, операционная система OSX от APPLE COMPUTER и другие.
Массовая память 212 и ОЗУ 206 могут также хранить один или несколько программных модулей. В частности, массовая память 212 и ОЗУ 206 могут хранить клиентское приложение 226 IM. Как кратко описано выше, клиентское приложение IM представляет собой прикладную программу, работающую для связывания с IM компьютером-сервером 106 и, потенциально, непосредственно с другими клиентскими приложениями IM. Клиентское приложение 226 IM обеспечивает функциональность и пользовательский интерфейс, которые дают возможность зарегистрированным пользователям IM компьютера-сервера 106 связываться друг с другом через передачу текстовых, аудио- или видеосообщений.
Согласно некоторой реализации клиентское приложение 226 IM также работает для того, чтобы дать возможность пользователю определять и публиковать информацию присутствия для других пользователей IM компьютера-сервера 106. Клиентское приложение 226 IM может также дать возможность пользователю задавать разрешения для публикаций присутствия, как описывается здесь. Клиентское приложение 226 IM может представлять собой клиентскую прикладную программу мгновенной передачи сообщений MSN MESSENGER от MICROSOFT CORPORATION или другое клиентское приложение IM от другого изготовителя. Следует понимать, что хотя функциональность для задания публикаций присутствия и разрешений описывается здесь как выполняемая клиентским приложением 226 IM, подобную функциональность могут обеспечивать и другие типы приложений. Например, прикладная программа PIM может использоваться для задания публикаций присутствия и разрешений для использования другими пользователями прикладной программы PIM. Другие типы программ могут также использоваться подобным образом.
Как показано на фиг.2, массовая память 212 может также хранить серверное приложение 228 IM, серверное приложение 230 базы данных и базу данных 108 профиля IM. Серверное приложение 228 IM исполняется IM-сервером 106 и обеспечивает функциональность для мгновенной передачи сообщений между клиентскими приложениями IM. Как обсуждается здесь, серверное приложение 228 IM также работает для приема запросов и ответа на запросы на информацию присутствия. Для оценки таких запросов и ответа на них соответствующим образом, серверное приложение 228 IM использует службы серверного приложения 230 базы данных. Серверное приложение 230 базы данных представляет собой серверное приложение для создания, поддержания и запрашивания базы данных, такой как база данных 108 профиля IM. Согласно некоторому варианту осуществления, серверное приложение 230 базы данных представляет собой SQL SERVER от MICROSOFT CORPORATION. Однако следует понимать, что могут использоваться и другие типы серверных приложений баз данных от других продавцов. Следует также понимать, что функции, описываемые здесь как выполняемые IM-сервером 106 для приема и ответа на запросы на информацию присутствия, могут выполняться сервером, специально сконфигурированным для приема и ответа на запросы на такую информацию присутствия, («сервером присутствия») или другим типом компьютера-сервера.
Со ссылкой на фиг.3 будет описана иллюстративная структура данных для хранения публикаций присутствия и связанных с ними разрешений. В частности, фиг.3 показывает несколько контейнерных структур данных 300А-300D, поддерживаемых IM-сервером и хранимых в базе данных 108 профиля IM. Каждый контейнер 300А-300D включает в себя поле 302 данных членства для хранения данных, идентифицирующих одного или нескольких запросчиков, которые авторизованы для приема публикаций присутствия, хранимых в этом контейнере. Эти авторизованные запросчики могут быть определены в поле 302 данных членства посредством списка унифицированных идентификаторов информационных ресурсов конкретных подписчиков (“URI”), как, например, в контейнерах 300А и 300С, всех контактов издателя, пользователей в том же самом домене, что и издатель, как, например, в контейнере 300В, списка доменов протокола инициации сеанса (“SIP”), пользователей в объединенном домене или пользователей в открытом домене-облаке. Следует понимать, что первый и четвертый пункты являются списками, тогда как «все контакты», пользователи того же самого домена, пользователи объединенного домена и пользователи открытого облака могут быть определены как логические атрибуты контейнера, которые дают вклад в его членство. Например, если членство контейнера должно включать в себя всех подписчиков в том же домене, что и издатель, то атрибут контейнера для пользователей того же домена устанавливается на «истина». Следует понимать, что содержимое контейнеров 300А-300D определяется издателем, с которым связаны эти контейнеры. Эти контейнеры хранятся в базе данных 108 профиля IM вместе с профилем для издателя.
Как показано на фиг.3, каждый из контейнеров 300А-300D также включает в себя поле 304А-304D данных публикаций, соответственно. Поле 304 данных публикаций используется для хранения публикаций присутствия, связанных с этим контейнером. Публикации присутствия, хранимые в контейнере, являются публикациями присутствия, которые запросчики, идентифицированные в поле 302 данных членства, авторизованы принимать. Например, контейнер 300А включает в себя публикации “{STATUS}='BUSY'” и “{PHONE}='OFFICE: 555-1212', 'HOME: 555-1234.'”. Запросчики, конкретно идентифицированные в поле 302А данных членства, авторизованы для приема этих публикаций.
Как также показано на фиг.3, контейнеры 300А-300D пронумерованы в последовательном порядке. Номера контейнеров используются для определения контейнера, который должен использоваться для удовлетворения запроса на публикацию присутствия, когда запросчик является членом более чем одного контейнера. В частности, когда запросчик запрашивает публикацию, которая опубликована во множественных контейнерах, должно быть принято решение относительно того, какой контейнер должен быть использован для удовлетворения этого запроса. Вообще, необходимо рассматривать только те контейнеры, которые включают в себя запрашиваемую публикацию присутствия. Если имеется только один контейнер, который имеет этого подписчика как члена, то неоднозначность отсутствует и этот контейнер используется для ответа на запрос. Когда множественные контейнеры имеют подписчика в их членстве, однако, запрос удовлетворяется из контейнера, имеющего наивысший номер контейнера. Это имеет место, когда применяется упорядочение контейнеров на основе их номеров. Контейнеры более высоких номеров предшествуют (имеют приоритет над) контейнерам более низких номеров, когда они содержат перекрывающееся членство. Следует понимать, что контейнер 300D является контейнером по умолчанию, который включает в себя публикации по умолчанию, даваемые любому, кто не попадает в контейнер с более высоким номером. Соответственно, контейнер 300D не включает в себя поле 302 данных членства.
joe@aol.com
joe@aol.com
friend2@ms.com
friend2@ms.com
Следует понимать, что запросчик может содержаться в членстве более чем одного контейнера различными способами. Например, один контейнер может задавать  в своем списке URI, тогда как другой контейнер задает пользователей открытого облака. В этом случае,  считается членом обоих контейнеров. Подобным же образом один контейнер может задавать все контакты, которые впоследствии содержат , тогда как другой контейнер задает пользователей одного и того же домена. Если издатель является членом домена ms.com, то  является членом обоих контейнеров. В этих ситуациях вопрос, какой из контейнеров использовать для удовлетворения подписки, имеет ответ посредством придания приоритета на основе специфики назначаемых разрешений. Например, приоритет может быть задан в следующем порядке сначала список URI, затем все контакты, затем пользователи одного и того же домена, затем список доменов, затем объединенным доменам и, наконец, пользователи открытого облака.
Ввиду вышесказанного, следует понимать, что ряд процедурных проверок должен быть обычно выполнен для определения того, из какого контейнера должен быть удовлетворен запрос на публикацию присутствия. Резюмируя вышесказанное, выбирается контейнер с наивысшим номером, который как содержит запрашиваемую публикацию, так и включает в себя запросчика в поле данных членства. Если соответствующий контейнер найден, то процедура может остановиться. Если нет, то определяют, является ли запросчик членом конкретной группы контактов. Если это так, то выбирается контейнер с наивысшим номером, который содержит как запрашиваемую публикацию, так и членство группы контактов, соответствующее этой группе. Если соответствующий контейнер найден, то процедура может остановиться. Если запросчик имеется в списке контактов издателя, то выбирается контейнер наивысшего номера, который имеет запрашиваемую публикацию и у которого установлено булево свойство «все контакты». Если соответствующий контейнер найден, то процедура может остановиться. В противном случае, определяются, находится ли запросчик в том же самом домене, что и издатель. Если это так, то выбирается контейнер наивысшего номера, который включает в себя запрашиваемую публикацию и у которого установлено булево свойство «тот же самый домен». Если соответствующий контейнер найден, то процедура останавливается. В противном случае выбирается контейнер наивысшего номера, который содержит запрашиваемую публикацию и содержит список членства доменов, содержащий домен запросчика. Если такой контейнер не был найден и запросчик является членом объединенного домена, то используется контейнер наивысшего номера, который содержит запрашиваемую публикацию и у которого установлено булево свойство пользователей «объединенные домены». Если такой контейнер не найден и запросчик является членом открытого домена-облака, то используется контейнер наивысшего номера, который содержит запрашиваемую публикацию и у которого установлено булево свойство «пользователи открытого облака». Если такой контейнер не найден и контейнер по умолчанию 300D содержит запрашиваемое свойство, то используется контейнер по умолчанию. В противном случае запрос блокируется и запросчик получит пустое значение данных для запрашиваемой публикации присутствия.
Следует понимать, что выполнение вышеуказанных процедурных проверок каждый раз, когда принимается запрос в IM-сервере 106 на публикацию присутствия, является исключительно дорогостоящим в вычислительном плане. Соответственно, для более эффективной обработки этих запросов варианты осуществления, описываемые здесь, сначала преобразуют эти процедурные проверки в операции базы данных. Эти операции выполняются для генерации набора возможных результатов для запроса, и этот набор возможных результатов сохраняется для будущего использования. При приеме последующего запроса, набор возможных результатов используется для вычисления конкретного ответа на запрос без повторного выполнения процедурных проверок. Подробности, касающиеся этого процесса, обеспечены ниже относительно фиг.4-7.
friend2@ms.com
me@ms.com
С обращением теперь к фиг.4, будет описана иллюстративная структура данных для хранения набора возможных результатов для некоторого запроса. В частности, фиг.4 показывает кэшированную таблицу 400 членов контейнеров, созданную и используемую IM-сервером 106 для ответа на запросы базы данных на публикации присутствия эффективным образом. Таблица 400 включает в себя поле 402А данных издателя для хранения данных, идентифицирующих издателя запрашиваемой публикации присутствия, поле 402С данных запросчика для хранения данных, идентифицирующих запросчика публикации присутствия, поле 402В данных контейнера для хранения данных, идентифицирующих контейнер 300, из которого запрос может быть удовлетворен, и поле 402D данных ранга для хранения значения ранга. Значение ранга определяется на основе способа, которым поле данных членства идентифицирует запросчика. Например, более конкретная идентификация имела бы более высокий ранг, чем менее конкретная идентификация. Согласно некоторому варианту осуществления конкретно идентифицированному запросчику дается ранг 255, пользователям того же домена дается ранг 180, пользователям определенного домена дается ранг 160, пользователям объединенного домена дается ранг 140, пользователям открытого облака дается ранг 120, и контейнеру по умолчанию дается ранг 10. Могут использоваться и другие значения рангов. Следует понимать, что иллюстративное содержимое таблицы 400 основано на контейнерах 300А-300D, где запросчиком является, а издателем является .
Согласно некоторому варианту осуществления таблица 400 может включать в себя поле 402Е данных для хранения значения второго ранга. Значение второго ранга задает количество символов домена, совпадающих между доменом запросчика и доменом издателя. Это поле может использоваться для дополнительного устранения неоднозначности контейнеров в случае, когда запросчик является членом двух контейнеров, по конкретному домену. В этом случае, будет использоваться контейнер, для которого совпадение доменов длиннее. Иллюстративный процесс для заполнения и использования таблицы 400 будет описан ниже со ссылкой на фиг.5-7.
С обращением теперь к фиг.5, будет описана иллюстративная процедура 500, показывающая работу IM сервера 106 для обработки запроса на публикацию присутствия. Следует понимать, что логические операции, описываемые здесь, реализуются (1) как последовательность реализуемых компьютером актов или программных модулей, происполняемых на вычислительной системе, и/или (2) как взаимосвязанные машинные логические схемы или модули схем в пределах этой вычислительной системы. Эта реализация является делом выбора, зависящим от требований рабочих характеристик вычислительной системы. Соответственно, логические операции, описываемые здесь по отношению к ней, называются различным образом операциями, структурными устройствами, актами или модулями. Эти операции, структурные устройства, акты или модули могут быть реализованы в программном обеспечении, в программно-аппаратном обеспечении, в специализированной цифровой логике и любой их комбинации.
Процедура 500 начинается с операции 502 обработки, когда сервер 106 принимает запрос на публикацию присутствия. В ответ на этот запрос, сервер 106 определяет, существует ли строка в таблице 400 для запросчика и издателя запрашиваемой публикации присутствия. Это выполняется путем проверки значений, хранимых в полях 402А и 402С таблицы 400. Если строки не существуют в таблице 400, то процедура 500 ответвляется на операцию 508. В операции 508 содержимое таблицы 400 генерируется и сохраняется для издателя. Иллюстративная процедура для обновления содержимого таблицы 400 описывается ниже по отношению к фиг.6. От операции 508, процедура 500 переходит к операции 510.
Если в операции 506 определено, что строки действительно существуют в таблице 400 для запросчика и издателя, то процедура 500 переходит от операции 506 к операции 510. В операции 510 набор возможных ответов на запрос, хранимый в таблице 400, используется для вычисления конкретного ответа на этот запрос эффективным образом. Иллюстративная процедура для вычисления этого ответа и удовлетворения запроса на публикацию присутствия с использованием хранимого содержимого таблицы 400 подробно описывается ниже по отношению к фиг.7. Как только эта операция завершается, процедура 500 переходит к операции 512, где и завершается. Другие запросы базы данных на публикации присутствия обрабатываются подобным же образом.
С обращением теперь к фиг.6А-6С, будет описана иллюстративная процедура 600 для генерации и обновления содержимого таблицы 400. Следует понимать, что эта процедура может быть выполнена для начальной генерации содержимого таблицы 400 для издателя и для обновления содержимого таблицы 400 в случае, когда издатель модифицирует его существующую публикацию и данные разрешений. Следует также понимать, что операции базы данных, описанные по отношению к фиг.6А-6С, содержат процедурные проверки, описанные выше. Результаты этих процедурных проверок сохраняются в таблице 400 таким образом, который дает возможность выполнять последующие запросы базы данных эффективным образом.
Процедура 600 начинается с операции 602, где контейнеры, связанные с издателем, подвергаются поиску для нахождения контейнеров, где запросчик является конкретно идентифицированным членом. Если какие-либо такие контейнеры найдены, то процедура 600 ответвляется к операции 606, где строка вставляется в таблицу 400 для каждого контейнера, где запросчик является конкретно идентифицированным членом. Для этой новой строки значение поля 402А издателя устанавливается на идентификационные данные издателя, значение поля 402С данных запросчика устанавливается на запросчика и значение поля 402В данных контейнера устанавливается на номер идентифицированного контейнера. Значение поля 402D ранга в новой строке устанавливается на 255. В противном случае процедура 600 переходит от операции 604 к операции 608.
В операции 608 определяется, находятся ли издатель и запросчик в одном и том же домене. Если это так, то процедура 600 переходит от операции 608 к операции 610. В операции 610 осуществляется поиск для нахождения контейнеров, дающих разрешения пользователям в том же самом домене, что и запросчик. Если такие контейнеры найдены, то процедура 600 переходит от операции 612 к операции 614, где строки вставляются в таблицу 400 и заполняются для каждого контейнера, который дает права доступа пользователям в том же домене, что и запросчик. Значение поля 402D ранга во вновь добавленных строках устанавливается на 180. От операции 614 процедура 600 переходит к операции 616.
В операции 616 осуществляется поиск в отношении контейнеров, связанных с издателем, который дает разрешения пользователям в заданном домене. Если такие контейнеры найдены, то процедура 600 ответвляется от операции 618 к операции 620. В операции 620 определяется, является ли запросчик членом заданного домена. Если это так, то процедура 600 переходит от операции 620 к операции 622, где строки вставляются в таблицу 400 и заполняются для каждого из контейнеров издателя, где определен домен запросчика. Значение поля 402D во вновь добавленных строках устанавливается на 160. От операции 622 процедура 600 переходит к операции 624.
В операции 624 контейнеры издателя подвергаются поиску для нахождения контейнеров, дающих разрешения членства пользователям в объединенном домене. Если такие контейнеры найдены, то процедура 600 ответвляется от операции 626 к операции 628. В операции 628 определяется, является ли запросчик членом заданного объединенного домена. Если это так, то процедура 600 переходит от операции 628 к операции 630, где новые строки вставляются в таблицу 400 и заполняются для каждого контейнера, где запросчик является членом заданного объединенного домена. Значение поля 402D во вновь добавленных строках устанавливается на 140. От операции 630 процедура 600 переходит к операции 632.
В операции 632 контейнеры издателя подвергаются поиску для нахождения контейнеров, дающих разрешения членства пользователям в открытом домене-облаке. Если такие контейнеры найдены, то процедура 600 ответвляется от операции 634 к операции 636. В операции 636, определяется является ли запросчик членом заданного открытого домена-облака. Если это так, то процедура 600 переходит от операции 636 к операции 638, где новые строки вставляются в таблицу 400 и заполняются для каждого контейнера, где запросчик является членом заданного открытого домена-облака. Значение поля 402D ранга во вновь добавленных строках устанавливается на 120. От операции 638 процедура 600 переходит к операции 640.
В операции 640 новая строка добавляется в таблицу 400 и заполняется для контейнера по умолчанию. Значение поля 402D ранга во вновь добавленной строке устанавливается на 10. От операции 640 процедура 600 возвращается к операции 510, обсуждаемой выше по отношению к фиг.5.
Со ссылкой на фиг.7, будет описана иллюстративная процедура 700 для удовлетворения запроса на кэшированные данные присутствия из кэшированной таблицы 400 членов контейнеров. Процедура 700 начинается в операции 702, где одна или несколько строк-кандидатов выбираются из таблицы 400. Строкой-кандидатом является строка, которая идентифицирует запросчика в поле 402С данных запросчика и которая идентифицирует издателя в поле 402А данных «выбор» издателя. Эти строки-кандидаты могут быть идентифицированы посредством выполнения операции базы данных в отношении таблицы 400. От операции 702 процедура 700 переходит к операции 704.
В операции 704 строки-кандидаты располагаются в убывающем порядке на основе содержимого поля 402D данных ранга. Если используется поле 402Е данных второго ранга, то строки-кандидаты затем располагаются в убывающих строках на основе содержимого поля 402Е данных второго ранга. Упорядоченные строки-кандидаты затем располагаются в убывающем порядке на основе значения, содержащегося в поле 402В данных контейнеров. Таким образом, строки-кандидаты располагаются в убывающем порядке сначала по рангу, а затем по номеру контейнера. Следует понимать, что эта функциональность может быть реализована посредством использования операции базы данных «упорядочивание». От операции 704 процедура 700 переходит к операции 706.
В операции 706 идентифицируется конкретный контейнер, который должен использоваться для удовлетворения запроса. В частности, конкретная строка из строк-кандидатов идентифицируется посредством соединения множества строк-кандидатов с полями 304 данных публикаций контейнеров издателя. Это приводит к выбору строки-кандидата, которая имеет наивысший ранг в поле 402D данных ранга и которая относится к контейнеру, который включает в себя запрашиваемую публикацию. Этот контейнер, идентифицируемый полем 402В данных контейнеров выбранной строки, используется для удовлетворения запроса. Следует понимать, что функциональность, выполняемая в операции 706, может быть выполнена с использованием операции базы данных «соединение». От операции 706 процедура 700 переходит к операции 798, где она возвращается к операции 512, обсуждаемой выше по отношению к фиг.5.
На основе вышеизложенного следует понимать, что здесь обеспечены системы, способы и считываемые компьютером носители для эффективных операций просмотра базы данных. Хотя предмет изобретения, представленный здесь, был описан на языке, специфическом для компьютерных структурных признаков, методологических актов и считываемых компьютером носителей, следует понимать, что изобретение, охарактеризованное в прилагаемой формуле изобретения, необязательно ограничено конкретными признаками, актами или носителями, описанными здесь. Точнее, конкретные признаки, акты и носители описаны как примерные формы реализации этой формулы изобретения. Предмет изобретения, описанный выше, обеспечен только посредством иллюстрации и не должен толковаться как ограничивающий. Различные модификации и изменения могут быть сделаны в отношении вариантов осуществления, описанных здесь, не следуя иллюстрированным и описанным примерным вариантам осуществления и применениям, не выходя за рамки истинной сущности и объема данного изобретения, который определяется нижеследующей формулой изобретения.