РЕКОМЕНДАТЕЛЬНАЯ СИСТЕМА ДЛЯ ПОПОЛНЕНИЯ ДАННЫХ
DATA ENRICHMENT RECOMMENDING SYSTEM

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0000] Настоящее изобретение относится в общем к базам данных и в частности к рекомендации пополнений данных для баз данных.
УРОВЕНЬ ТЕХНИКИ
[0001] Базы данных являются обычным предметом в современном бизнесе. Даже самое простое прикладное программное обеспечение для бизнеса будет часто включать в себя использование баз данных. По мере того как возросло использование баз данных, источники данных, предоставляющие данные, которые дополняют данные, найденные в бизнесе или других базах данных, также возросли. Например, разработчик программного обеспечения может создать прикладное программное обеспечение, которое обращается к базе данных для определения адресов. Некоторые источники данных в интернете являются доступными для генерации карты, которая включает в себя направления движения к месту назначения. В качестве другого примера, существует несколько сайтов в интернете, которые предоставляют информацию о погоде. В самом деле, существует так много доступных источников данных, что для разработчиков программного обеспечения является сложной задачей обнаруживать и использовать эти источники данных.
[0002] Заявленное здесь изобретение не ограничивается вариантами осуществления, которые устраняют какие-либо недостатки или работают только в средах, подобных тем, что описаны выше. Скорее, это описание предшествующего уровня техники предоставляется только для иллюстрации одной примерной области технологии, в которой некоторые варианты осуществления, описанные здесь, могут быть применены.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0003] Кратко, аспекты описанного здесь изобретения относятся к рекомендательным системам источников данных. Согласно этим аспектам, запрос на предоставление рекомендаций по пополнениям данных для базы данных принимается в рекомендательной подсистеме. Рекомендательная подсистема может выполнять статический и динамический анализ данных, ассоциированных с базой данных, и может дополнительно уточнять рекомендации на основе политики. Рекомендательная подсистема может затем предоставлять рекомендации, если таковые имеются, по пополнениям данных, чтобы позволить разработчику программного обеспечения, например, указать, будут ли использоваться пополнения данных.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0004] На Фиг. 1 изображена блок-схема, представляющая примерную универсальную вычислительную среду, в которую могут быть встроены аспекты описанного здесь изобретения;
[0005] На Фиг. 2 изображена блок-схема, представляющая примерную среду, в которой могут быть реализованы аспекты предмета, описанного здесь изобретения; и
[0006] На Фиг. 3-4 представлены логические блок-схемы, которые в общем представляют примерные действия, которые могут иметь место в соответствии с аспектами описанного здесь изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ОПРЕДЕЛЕНИЯ
[0007] Используемое здесь выражение «включает в себя» и его варианты следует читать как неограничивающие выражения, которые означают «включает в себя, но не в ограничительном смысле». Выражение «или» следует читать как «и/или», если контекст явно не предписывает иное. Выражение «основываясь на» следует читать как «основываясь, по меньшей мере, частично на». Выражения «один вариант осуществления» и «вариант осуществления» следует читать как «по меньшей мере один вариант осуществления». Выражение «другой вариант осуществления» следует читать как «по меньшей мере один другой вариант осуществления».
[0008] Используемые здесь упоминания элемента или действия в единственном числе подразумевают один или более указанных элементов или действий. В частности, в формуле изобретения ссылка на элемент обычно означает, что по меньшей мере один такой элемент присутствует, и ссылка на действие означает, что по меньшей мере один случай действия выполняется.
[0009] Иногда в настоящем документе могут быть использованы выражения «первый», «второй», «третий» и так далее. Без дополнительного контекста использование этих выражений в формуле изобретения не предполагает упорядочивания, а скорее используется в целях идентификации. Например, выражение «первая версия» и «вторая версия» не обязательно означает, что первая версия является самой первой версией или что она была создана до второй версии, или даже что первая версия запрашивается или в отношении нее выполняется работа до вторых версий. Скорее, эти фразы используются для идентификации различных версий.
[0010] Заголовки предназначены только для удобства; информация по данной теме может быть найдена за пределами раздела, заголовок которого обозначает эту тему.
[0011] Другие определения, явные и неявные, могут быть включены ниже.
ПРИМЕРНАЯ РАБОЧАЯ СРЕДА
[0012] Фиг. 1 иллюстрирует пример подходящей среды 100 вычислительной системы, на которой могут быть реализованы аспекты описанного здесь изобретения. Среда 100 вычислительной системы является только одним примером подходящей вычислительной среды и не предполагает введения каких-либо ограничений как на область использования, так и на функциональность аспектов описанного здесь изобретения. Не следует вычислительную среду 100 интерпретировать как имеющую какую-либо зависимость или требования, относящиеся к одной или комбинации компонент, проиллюстрированных в примерной рабочей среде 100.
[0013] Аспекты описанного здесь изобретения работоспособны со многими другими средами вычислительных систем или конфигурациями общего назначения или специального назначения. Примеры широко известных вычислительных систем, сред или конфигураций, которые могут быть подходящими для использования с аспектами, описанного здесь изобретения, включают в себя персональные компьютеры, серверные компьютеры, наладонные или портативные устройства, многопроцессорные системы, системы на базе микроконтроллеров, телевизионные приставки, программируемую бытовую электронику, сетевые персональные компьютеры, миникомпьютеры, универсальные компьютеры (мейнфреймы), персональные цифровые помощники (PDA), игровые устройства, принтеры, приборы, включая приставки, медиа-центр или другие приборы, встраиваемые в автомобили или прикрепляемые к автомобилям вычислительные устройства, другие мобильные устройства, распределенные вычислительные среды, включающие в себя любые из вышеперечисленных систем или устройств, и тому подобное.
[0014] Аспекты описанного здесь изобретения могут быть описаны в общем контексте машиноисполняемых инструкций, таких как программные модули, исполняемые компьютером. Обычно программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и так далее, которые выполняют конкретные задачи или реализуют определенные абстрактные типы данных. Аспекты описанного здесь изобретения могут быть также реализованы в распределенных вычислительных средах, где задачи выполняются посредством удаленных обрабатывающих устройств, которые связаны коммуникационной сетью. В распределенной вычислительной среде программные модули могут быть расположены как на локальных, так и на удаленных носителях информации, включая запоминающие устройства.
[0015] Со ссылкой на Фиг. 1 примерная система для реализации аспектов описанного здесь изобретения включает в себя вычислительное устройство общего назначения в форме компьютера 110. Компьютер может включать в себя любое электронное устройство, которое способно исполнять инструкции. Компоненты компьютера 110 могут включать в себя процессорный блок 120, системную память 130 и системную шину, которая подсоединяет различные системные компоненты, включая системную память, к процессорному блоку 120. Системная шина 121 может быть одной из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из разнообразных шинных архитектур. В качестве примера, но не ограничения, такие архитектуры включают в себя шину ISA, шину МСА, шину EISA, локальную шину VESA, шину PCI, также известную как мезонинная шина, шину PCI-X, шину AGP и шину PCI express (PCIe).
[0016] Компьютер 110 обычно включает в себя различные машиночитаемые носители. Машиночитаемые носители могут быть любыми доступными носителями, к которым компьютер 110 может иметь доступ и которые включают в себя энергозависимые и энергонезависимые носители, съемные и несъемные носители. В качестве примера, но не ограничения, машиночитаемые носители могут содержать компьютерные носители данных и коммуникационные среды.
[0017] Компьютерные носители данных включают в себя энергозависимые и энергонезависимые носители, съемные и несъемные носители, реализованные любым способом или технологией для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Компьютерные носители данных включают в себя ОЗУ, ПЗУ, EEPROM, флэш-память или другую технологию памяти, накопитель на компакт-диске, цифровые универсальные диски (DVD) или другие запоминающие устройства на оптических дисках, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитном диске или другие магнитные запоминающие устройства, либо любой другой носитель, который может быть использован для хранения желаемой информации и к которому может иметь доступ компьютер 110.
[0018] Коммуникационные среды обычно воплощают машиночитаемые инструкции, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как несущая волна или другой транспортный механизм, и включают в себя любые среды доставки информацию. Выражение «модулированный сигнал данных» означает сигнал, одна или более характеристик которого устанавливаются или изменяются таким образом, чтобы кодировать информацию в сигнале. В качестве примера, но не ограничения, коммуникационные среды включают в себя проводные среды, такие как приводная сеть или прямое проводное соединение, и беспроводные среды, такие как акустические, радиочастотные, инфракрасные и другие беспроводные среды. Комбинации любых вышеупомянутых сред и носителей также охватываются понятием «машиночитаемый носитель».
[0019] Системная память 130 включает в себя компьютерные носители данных в форме энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство (ПЗУ) 131 и оперативное запоминающее устройство (ОЗУ) 132. Базовая система 133 ввода/вывода (BIOS), содержащая базовые процедуры, которые помогают передавать информацию между элементами в компьютере 110, например, во время запуска, обычно хранится в ПЗУ 131. ОЗУ 132 обычно содержит информацию и/или программные модули, которые непосредственно доступны и/или в данный момент обрабатываются процессорным блоком 120. В качестве примера, но не ограничения, Фиг. 1 иллюстрирует операционную систему 134, прикладные программы 135, другие программные модули 136 и 137 данные программ.
[0020] Компьютер 110 может также включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители данных. Сугубо в качестве примера, Фиг. 1 иллюстрирует накопитель 141 на жестких дисках, который читает с несъемного энергонезависимого магнитного носителя и пишет на него, магнитный дисковод 151, который читает со съемного энергонезависимого магнитного диска 152 и пишет на него, и оптический дисковод 155, который читает со съемного энергонезависимого оптического диска 156, такого как компакт-диск или другой оптический носитель, и пишет на него. Другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители данных, которые могут быть использованы в примерной рабочей среде, включают в себя кассеты с магнитной лентой, карты флэш-памяти, универсальные цифровые диски, другие оптические диски, цифровую видеоленту, твердотельное ОЗУ, твердотельное ПЗУ и тому подобное. Накопитель 141 на жестких дисках может быть подсоединен к системной шине 121 через интерфейс 140, а магнитный дисковод 151 и оптический дисковод 155 могут быть подсоединены к системной шине 121 через интерфейс для съемной энергонезависимой памяти, такой как интерфейс 150.
[0021] Накопители и дисководы и связанные с ними компьютерные носители данных, обсуждаемые выше и проиллюстрированные на Фиг. 1, обеспечивают хранение машиночитаемых инструкций, структур данных, программных модулей и других данных для компьютера 110. На Фиг. 1, например, накопитель 141 на жестких дисках изображен как хранящий операционную систему 144, прикладные программы 145, другие программные модули 146 и данные 147 программ. Заметим, что эти компоненты могут быть как теми же, так и отличающимися от операционной системы 134, прикладных программ 135, других программных модулей 136 и данных 137 программ. Операционной системе 144, прикладным программам 145, другим программным модулям 146 и данным 147 программ присвоены здесь другие номера, чтобы показать, как минимум, что они являются другими копиями.
[0022] Пользователь может вводить команды и информацию в компьютер 110 через устройства ввода, такие как клавиатура 162 и указательное устройство 161, часто называемое мышью, трекболом или сенсорной панелью. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровую панель, спутниковую антенну, сканер, сенсорный экран, планшет для письма и тому подобное. Эти или другие устройства ввода часто подсоединяются к процессорному блоку 120 через интерфейс 160 пользовательского ввода, который соединен с системной шиной, но может подсоединяться посредством других интерфейсных или шинных структур, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB).
[0023] Монитор 191 или другой тип устройства отображения также соединен с системной шиной 121 через интерфейс, такой как видео интерфейс 190. В дополнение к монитору, компьютеры могут также включать в себя другие периферийные устройства вывода, такие как динамики 197 и принтер 196, которые могут подключаться посредством интерфейса 195 периферийного вывода.
[0024] Компьютер 110 может работать в сетевой среде с использованием логических соединений с одним или более компьютерами, такими как удаленный компьютер 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым ПК, одноранговым устройством или другим общим сетевым узлом и обычно включает в себя многие или все из элементов, описанных выше применительно к компьютеру 110, хотя только запоминающее устройство 181 проиллюстрировано на Фиг. 1. Логические соединения, изображенные на Фиг. 1, включают в себя локальную сеть (LAN) 171 и глобальную сеть (WAN) 173, но могут также включать в себя другие сети. Такие сетевые среды являются обычным явлением в офисах, корпоративных компьютерных сетях, внутренних интрасетях и Интернете.
[0025] При использовании в сетевой среде LAN, компьютер 110 соединяется с ЛВС 171 через сетевой интерфейс или адаптер 170. При использовании в сетевой среде WAN, компьютер 110 может включать в себя модем 172 или другое средство для установления связи через WAN 173, такую как Интернет. Модем 172, который может быть внутренним или внешним, может быть подключен к системной шине 121 через интерфейс 160 пользовательского ввода или другой соответствующий механизм. В сетевой среде программные модули, изображенные относительно компьютера 110, или их части могут храниться в удаленном запоминающем устройстве. В качестве примера, но не ограничения, Фиг. 1 иллюстрирует удаленные прикладные программы 185 как находящиеся в запоминающем устройстве 181. Следует иметь в виду, что показанные сетевые соединения являются примерными и может быть использовано другое средство установления связи между компьютерами.
Пополнения данных
[0026] Как уже упоминалось ранее, для разработчиков программного обеспечения является трудной задачей обнаруживать и использовать дополняющие источники данных. Фиг. 2 является блок-схемой, которая представляет примерную среду, в которой могут быть реализованы аспекты описанного здесь изобретения. Компоненты, изображенные на Фиг. 2, являются примерными и не предназначены включать в себя все компоненты, которые могут быть нужны или включены. В других вариантах осуществления компоненты, описанные в сочетании с Фиг. 2, могут быть включены в состав других компонентов (показанных или не показанных) или помещены в подкомпоненты, не отходя от сущности или объема аспектов описанного здесь изобретения.
[0027] Используемое здесь выражение «компонент» следует читать как включающие в себя аппаратные средства, например, устройство полностью или его часть, набор из одного или более модулей программного обеспечения или их частей и одно или более устройства или их части, и тому подобное.
[0028] Обращаясь к Фиг. 2, среда может включать в себя приложение 205, систему управления базами данных (СУБД) 206, источник (источники) 207 пополнения данных, рекомендательную подсистему 208, хранилища данных 210 и 211 и другие компоненты (не показано).
[0029] Различные компоненты могут быть расположены относительно близко друг к другу (например, на одной и той же машине или на машинах внутри одной сети) или могут быть распределены по всему миру. Различные компоненты могут взаимодействовать друг с другом с помощью различных сетей, включая внутри- и меж- офисные сети.
[0030] Приложение 205, СУБД 206, источник (источники) 207 пополнения данных и рекомендательная подсистема 208 могут содержать или находиться на одном или нескольких вычислительных устройствах. Такие устройства могут включать в себя, например, персональные компьютеры, серверные компьютеры, наладонные или портативные устройства, многопроцессорные системы, системы на базе микроконтроллеров, телевизионные приставки, программируемую бытовую электронику, сетевые персональные компьютеры, миникомпьютеры, универсальные компьютеры, персональные цифровые помощники (PDA), игровые устройства, принтеры, приборы, включая приставки, медиа-центр или другие приборы, встраиваемые в автомобили или прикрепляемые к автомобилям вычислительные устройства, другие мобильные устройства, распределенные вычислительные среды, включающие в себя любые из вышеперечисленных систем или устройств, и тому подобное. Примерное устройство, которое может быть сконфигурировано так, чтобы действовать как одно из вышеуказанных средств, включает в себя компьютер 110 по Фиг. 1.
[0031] Приложение 205 может включать в себя процесс, который приспособлен осуществлять связь с одним или более из других субъектов по Фиг. 2. Выражение «процесс» и его варианты, используемые здесь, могут включать в себя один или более традиционных процессов, потоков, компонентов, библиотек, объектов, выполняющих задачи, и тому подобное. Процесс может быть реализован на аппаратных средствах, программном обеспечении иди комбинации аппаратных средств и программного обеспечения. В варианте осуществления, процесс является неким механизмом, вызываемым неким образом, приспособленным или используемым в выполнении действия. Процесс может быть распределен на несколько устройств или одно устройство. Аналогичным образом, приложение 205 может иметь компоненты, которые распределены на одно или более устройства.
[0032] В одном варианте осуществления, приложение 205 может включать в себя инструмент разработки программного обеспечения. Инструмент разработки программного обеспечения может реализовывать интегрированную среду разработки (IDE), которая позволяет разработчику программного обеспечения вводить и обновлять код, отлаживать код, создавать и обновлять базы данных, связывать код с одной или несколькими базами данных, компилировать код, создавать пакеты, делать другие действия и тому подобное.
[0033] Данные в хранилище 210 данных могут быть доступны через СУБД 206. СУБД может содержать одну или несколько программ, которые контролируют организацию, хранение, управление и поиск данных в базе данных. СУБД может получать запросы на доступ к информации в базе данных и может выполнять операции, необходимые для обеспечения этого доступа. Доступ, используемый здесь, может включать в себя чтение данных, запись данных, удаление данных, обновление данных, сочетание, включающие в себя два или более действий, упомянутых выше, и тому подобное.
[0034] База данных, хранящаяся в хранилище 210 данных, может содержать реляционную базу данных, объектно-ориентированную базу данных, иерархическую базу данных, сетевую базу данных, другие типы баз данных, некоторую комбинацию или расширение вышеупомянутого, и тому подобное. Данные, хранящиеся в базе данных, могут быть организованы в виде таблиц, записей, объектов, других структур данных и т.п. Данные, хранящиеся в базе данных, могут храниться в специальных файлах базы данных, специальных разделах жестких дисков, HTML файлах, XML файлах, электронных таблицах, неструктурированных файлах, файлах документа, конфигурационных файлах, других файлах и т.п. База данных может ссылаться на набор данных, который предназначен только для чтения, или иметь возможность читать набор данных и записывать в него.
[0035] При описании аспектов описанного здесь изобретения для простоты здесь иногда используется терминология, связанная с реляционными базами данных. Хотя терминология реляционных баз данных иногда здесь используется, раскрытые здесь идеи здесь могут быть так же применены к другим типам баз данных, включая те, которые были ранее упомянуты.
[0036] Источник (источники) 207 пополнения (обогащения) данных может включать в себя любой другой субъект, который способен поставлять данные. Например, источник (источники) 207 пополнения данных может включать в себя сервис, который принимает данные (например, почтовый индекс) и предоставляет данные (например, информацию о погоде) в ответ на это. В качестве другого примера, источник (источники) 207 пополнения данных может включать в себя сервис, который предоставляет действительные или задержанные котировки акций. Каждый источник пополнения данных может быть реализован посредством процесса, исполняемого одним или более компьютерами.
[0037] База данных, хранящаяся в хранилище 210 данных, может быть пополнена посредством источника (источников) 207 пополнения данных. СУБД 206 может получать данные от источника (источников) 207 пополнения данных и делать так, чтобы данные представлялись (например, в приложение 205) таким образом, как будто они исходят от базы данных, управляемой СУБД 206. Данные, получаемые от источника (источников) 207 пополнения данных, иногда называются здесь пополнениями данных. Например, СУБД 206 может использовать информацию об индексе, найденную в базе данных, для получения информации о погоде из источника пополнения данных. Информация о погоде может быть доступна через один или несколько столбцов таблицы, открытой СУБД 206.
[0038] СУБД 206 может хранить информацию, которая показывает пополнения данных, которые должны быть предоставлены с базой данных хранилища 210 данных. При предоставлении данных из базы данных СУБД 206 может также сделать доступными пополнения данных.
[0039] В одном варианте осуществления рекомендательная подсистема 208 может предоставлять рекомендации по пополнению данных СУБД 206, которая может затем предоставлять эти рекомендации приложению 205. В другом варианте осуществления, рекомендательная подсистема 208 может предоставлять рекомендации по пополнению данных непосредственно приложению 205. Рекомендация может включать в себя имя или другой идентификатор рекомендации, тип входных данных, необходимый пополнению данных, ассоциированному с рекомендацией, и тип выходных данных, предоставляемый пополнением данных.
[0040] Рекомендательная подсистема 208 может определять такие рекомендации различными способами. Некоторые из этих способов включают в себя, например:
[0041] 1. Динамический анализ. СУБД 206 может собирать статистическую информацию о запросных обращениях (queries), которые исполняются СУБД 206. Эта информация может быть предоставлена рекомендательной подсистеме 208, которая может использовать эту информацию для предложения новых пополнений или источников данных. Например, если запросное обращение использует пополнение COMPANYFINANCIAL (финансовая информация компании), рекомендательная подсистема 208 может рекомендовать так же пополнение COMPANYNEWS (новости компании). Эта рекомендация может быть предоставлена, потому что оба пополнения используют название компании в качестве входных данных.
[0042] Для определения пополнения с использованием динамического анализа, рекомендательная подсистема 208 может использовать структуру данных, которая соотносит пополнения между собой. Например, рекомендательная подсистема 208 может поддерживать или быть снабженной таблицей, которая включает в себя строки, где каждая строка включает в себя поле первого пополнения и поле второго пополнения. Второе пополнение - это пополнение данных, которое должно быть рекомендовано, основываясь на первом пополнении. С использованием нуля или более строк, эта таблица может быть использована для связывания первого пополнения с одним или более другими пополнениями, которые могут быть рекомендованы, основываясь на первом пополнении.
[0043] Статистика, такая как время, связанное с запросным обращением, может быть использована для рекомендации источников данных, которые индексируются отлично от источника данных, который используется в настоящее время. Например, источник данных биржевого тикера может быть способен предоставлять текущие котировки акций, используя название компании или биржевой символ (например, MSFT). Когда предоставляется название компании, источнику данных биржевого тикера может понадобиться посмотреть биржевой символ, по которому компания известна на фондовом рынке. Источник данных затем может использовать этот биржевой символ для получения данных тикера.
[0044] Вместо того, чтобы использовать вышеупомянутые методологии для получения данных тикера, источник данных, который получает биржевой символ, может только непосредственно получать данные тикера и, таким образом, иметь возможность получать данные быстрее, чем источник данных, которому нужно переводить название компании на название тикера. Если таблица компании имеет поле биржевого символа, но использует пополнение данных названия компании для получения данных тикера, рекомендательная подсистема 208 может рекомендовать, чтобы вместо этого использовалось пополнение данных, использующее поле биржевого символа. Кроме того, рекомендательная подсистема 208 может рекомендовать логический объект биржевого символа, который включает в себя биржевой символ для каждой компании из таблицы компании, и может затем рекомендовать пополнения, основываясь на логическом объекте биржевого символа.
[0045] 2. Статический анализ. Данные, которые хранятся в базе данных, имеют структурные метаданные, касающиеся объектов базы данных, которые включают в себя таблицы, столбцы, процедуры, расширяемый язык разметки (XML) и тому подобное. Структурные метаданные могут быть рассмотрены с целью определения типа данных, который хранится и обрабатывается базой данных. Некоторые примеры структурных метаданных включают в себя имена таблиц, имена столбцов, имена хранимых процедур, типы данных столбцов и имена других объектов и т.п.
[0046] Например, таблица с именем Компания может означать, что таблица имеет информацию о компаниях. В таблице с именем Компания столбец с именем Имя может означать имя компании. Эти метаданные могут быть использованы для определения того, что столбец Имя в таблице Компания - это название компании. Это может быть затем использовано для предоставления для компании рекомендации по пополнению, таких как пополнение COMPANYFINANCIAL, пополнение COMPANYNEWS, пополнение COMPANYSOCIALNETWORKS (компания в социальных сетях) и другие пополнения компаний.
[0047] Для обеспечения определения пополнения данных для статического анализа может быть использована структура данных, которая связывает идентификатор (например, имя) с одним или более пополнениями, ассоциированными с именем. Например, рекомендательная подсистема 208 может поддерживать или быть обеспеченной таблицей, которая включает в себя строки, где каждая строка включает в себя одно или несколько полей атрибута (атрибутов) метаданных (например, имя таблицы, столбец, имя, тип данных) и пополнение данных, которое должно быть рекомендовано, основываясь на атрибуте (атрибутах) метаданных. С использованием нуля или нескольких строк, эта таблица может быть использована для связывания атрибута (атрибутов) метаданных с нулем или несколькими другими пополнениями, которые могут быть рекомендованы, основываясь на атрибутах метаданных.
[0048] В качестве примера пополнения данных, которое может быть рекомендовано на основе типа данных столбца, метаданные могут указывать на то, что столбец использует тип данных GEOMETRY (Геометрия). В ответ на это рекомендательная подсистема 208 может рекомендовать логический объект LOCATION (местоположение) и пополнения, которые связаны с логическим объектом LOCATION (например, погоду, уровень преступности, плотность населения, демографию, статистику жилья и тому подобное).
[0049] Тип данных столбца может также определяться посредством изучения данных в самой базе данных. Например, путем изучения столбцов в таблице, рекомендательная подсистема 208 может быть способна определить, что столбцы представляют собой адрес. Это может быть сделано, например, путем попытки поиска адреса с использованием данных в столбцах. Как только рекомендательная подсистема 208 определяет, что столбцы представляют собой адрес, рекомендательная подсистема 208 может использовать технологии связывания, упомянутые здесь, для рекомендации пополнения (пополнений) данных, основываясь на адресе.
[0050] Аналогичным образом, статический анализ данных в базе данных может быть в состоянии приносить дополнительную информацию относительно данных, содержащихся в базе данных. Эта информация может также быть использована для рекомендации пополнения данных.
[0051] 3. Политика. Рекомендации могут быть сделаны, основываясь на политике. Эта политика может быть определена приложением 205 или иным образом. Политика может рассматриваться как правило, которое имеет одно или несколько условий, которые ограничивают рекомендацию, основываясь на оценке условия (условий). Например, политика может основываться на стоимости транзакции, рейтинге источника данных, лицензионном договоре на оказание услуг (LSA), на том, разрешено ли данным оставаться в базе данных, и других условиях. Например, политика может указывать на то, что до тех пор, пока цена пополнения данных меньше некоторой величины, рекомендации по пополнению данных допускаются.
[0052] 4. Каталог. Доступные пополнения данных могут быть доступны для поиска. Например, рекомендательная подсистема 208 может предоставлять список пополнений данных и соответствующие им источники данных в таблице, к которой разработчик программного обеспечения и т.п. может обращаться с запросными обращениями. Таблица может указывать тип данных, принимаемых в качестве ввода и выдаваемых на выходе. Таблица может также включать в себя лицензионные ограничения, расходы (если таковые имеются) или другие данные о пополнении данных и тому подобное.
[0053] Хранилище 211 данных - это хранилище, которое содержит данные, используемые для рекомендаций. Данные могут включать в себя, например, данные связывания, каталог доступных пополнений данных, цены, производительности и данные о надежности, лицензионные соглашения касательно источников данных и т.п.
[0054] Хранилища 210-211 данных могут быть реализованы с помощью любых носителей информации, способных хранить данные. Хранилище может включать в себя энергозависимую память (например, кэш) и энергонезависимую память (например, постоянное хранение). Хранилище может быть реализовано с использованием файловой системы, базы данных, энергозависимой памяти, такой как ОЗУ, другого средства хранения данных, некоторой комбинации вышеназванных и т.п., и может быть распределено между несколькими устройствами.
[0055] Термин «данные» следует рассматривать в широком смысле, чтобы включить в него все, что может быть представлено одним или несколькими элементами компьютерного хранения. Логически, данные могут быть представлены в виде последовательности из единиц и нулей в энергозависимой и энергонезависимой памяти. В компьютерах, которые имеют недвоичный носитель информации, данные могут быть представлены согласно функциональным способностям носителя информации. Данные могут быть организованы в виде различных типов структур данных, включая простые типы данных, такие как числа, буквы и т.п., иерархические, связанные, другие схожие типы данных, структуры данных, которые включают в себя множество других структур данных или простых типов данных и т.п.
[0056] На Фиг. 3-4 представлены логические блок-схемы, которые, в общем, представляют примерные действия, которые могут возникнуть в соответствии с аспектами описанного здесь изобретения. Для простоты объяснения, методология, описанная в сочетании с Фиг. 3-4, изображена и описана в виде последовательности действий. Следует понять и принять во внимание, что аспекты описанного здесь изобретения не ограничиваются проиллюстрированными действиями и/или порядком действий. В одном варианте осуществления действия происходят в порядке, описанном ниже. В других вариантах осуществления, однако, действия могут выполняться параллельно, в другом порядке и/или с другими действиями, не представленными и не описанными здесь. Кроме того, не все проиллюстрированные действия могут потребоваться для реализации методологии в соответствии с аспектами описанного здесь изобретения. К тому же, специалисты в данной области техники поймут и примут во внимание, что методология может быть альтернативно представлена в виде последовательности взаимосвязанных состояний через диаграмму состояний или в виде событий.
[0057] Обращаясь к Фиг. 3, в блоке 305 начинаются действия. В блоке 310 принимают запрос на предоставление рекомендаций по пополнению данных для базы данных. Например, со ссылкой на Фиг. 2, приложение 205, СУБД 206 и некоторые другие компоненты могут запросить, чтобы рекомендательная подсистема 208 предоставила рекомендации по пополнению данных для базы данных, управляемой СУБД.
[0058] В блоке 315 может быть выполнен анализ метаданных. Например, со ссылкой на Фиг. 2, рекомендательная подсистема может использовать метаданные о базе данных, предоставленные СУБД 206, вместе с информацией связывания в хранилище 211 данных для определения одной или более рекомендаций для предоставления. Кроме того, рекомендательная подсистема 208 может оценивать условия политики для ограничения рекомендации с тем, чтобы они не нарушали политику.
[0059] Хотя в одном варианте осуществления анализ метаданных может быть выполнен после приема запроса на предоставление рекомендаций, в другом варианте осуществления анализ может быть выполнен до приема этого запроса. В одном варианте осуществления, анализ представляет собой непрерывный процесс, который продолжает обновлять рекомендации по мере того, как метаданные, относящиеся к базе данных, изменяются.
[0060] В одном варианте реализации анализ метаданных может включать в себя следующие примерные действия:
[0061] 1. Получение метаданных, ассоциированных с базой данных. Это может повлечь за собой запрашивание данных от СУБД, прием (без запрашивания) данных от СУБД или какой-либо другой механизм.
[0062] 2. Нахождение идентификатора в метаданных. Это может повлечь за собой нахождение имени (имен) одной или нескольких таблиц, столбцов, хранимых процедур или других объектов базы данных.[0063] 3. Связывание идентификатора с пополнением данных с использованием структуры данных, которая соотносит идентификатор с пополнением данных. Это может задействовать использование таблицы или другой структуры данных, которая включает в себя один или более идентификаторы в качестве ключа для идентификации одного или более других идентификаторов. Например, имя «компания» для таблицы или столбца может быть использовано для нахождения связанных с ним пополнений в структуре данных. В качестве другого примера, имя таблицы «компания» вместе с именем столбца таблицы «биржевой символ» могут быть использованы вместе для нахождения связанных с ними пополнений данных тикера.
[0064] В блоке 320 может быть выполнен динамический анализ. Например, со ссылкой на Фиг. 2, рекомендательная подсистема 208 может анализировать одно или более запросных обращений, выданных в базу данных, для определения рекомендаций для пополнения данных. Например, если запросное обращение обозначает одно пополнение данных, это пополнение данных может быть использовано для идентификации других пополнений данных с использованием структуры связывания данных и т.п. К тому же, рекомендательная подсистема 208 может оценивать условия политики для ограничения рекомендаций лишь теми, которые не нарушают политику.
[0065] В одном варианте осуществления, динамический анализ может включать в себя анализ запросных обращений, выданных в отношении базы данных. В данном варианте реализации определение рекомендации может быть выполнено посредством следующих примерных действий:
[0066] 1. Получение первого идентификатора первого пополнения данных, на которых делается ссылка в по меньшей мере одном запросном обращение. Например, если обращение включает идентификатор (например, имя) пополнения данных ("COMPANYFINANCIAL"), идентификатор может быть получен.
[0067] 2. Связывание первого идентификатора со вторым идентификатором второго пополнения данных с использованием структуры данных, которая связывает идентификаторы пополнений данных.
[0068] Другой примерный динамический анализ может повлечь следующие примерные действия:
[0069] 1. Сравнение связанных с обращением времен первого обращения запроса и второго обращения, которыми получается идентичный тип (например, биржевые котировки) пополнения данных из двух различных источников;
[0070] 2. Выбор наиболее быстрого обращения из первого обращения и второго обращения в зависимости от того, какое из этих обращений, первое или второе, имеет наименьшую задержку при выводе данных;
[0071] 3. Определение идентификатора пополнения данных, ассоциированного с наиболее быстрым обращением.
[0072] Пополнение данных может быть затем рекомендовано для повышения производительности, например.
[0073] Хотя в одном варианте осуществления анализ обращений может быть выполнен после приема запроса на предоставление рекомендаций, в другом варианте осуществления анализ может быть выполнен до приема этого запроса. В одном варианте осуществления, анализ является непрерывным процессом, который продолжает обновлять рекомендации по мере поступления запросных обращений в отношении базы данных.
[0074] В блоке 325 предоставляются рекомендации на основе анализа метаданных. Например, со ссылкой на Фиг. 2, рекомендательная подсистема 208 может предоставлять рекомендации по пополнению данных в СУБД 206, приложение 205 или какой-либо другой компонент.
[0075] В блоке 330 предоставляются рекомендации на основе динамического анализа. Например, со ссылкой на Фиг. 2, рекомендательная подсистема 208 может предоставлять рекомендации по пополнению данных в СУБД 206, приложение 205 или какой-либо другой компонент.
[0076] Рекомендации, основанные на метаданных, и рекомендации, основанные на динамическом анализе, могут быть предоставлены вместе или по отдельности, не отступая от сущности или объема аспектов описанного здесь изобретения. В некоторых случаях могут быть только рекомендации, основанные на динамическом анализе. В других случаях могут быть только рекомендации, основанные на статическом анализе.
[0077] В блоке 335 могут быть выполнены другие действия, если таковые имеются. Другие действия могут включать в себя, например, предоставление доступного для поиска каталога, который идентифицирует пополнения данных и соответствующие пополнениям данных источники данных.
[0078] Обращаясь к Фиг. 4, в блоке 405 начинаются действия. В блоке 410 принимается рекомендация по пополнению данных. Рекомендация основывается на одном или более из анализа метаданных базы данных и анализа запросов, выданных в СУБД, которая предоставляет доступ к базе данных. Например, со ссылкой на Фиг. 2, СУБД 206 может принимать рекомендацию по пополнению COMPANYNEWS от рекомендательной подсистемы 208. Впоследствии, СУБД 206 может предоставлять рекомендацию приложению 205. В другом варианте осуществления, приложение 205 может принимать рекомендацию непосредственно от рекомендательной подсистемы 208.
[0079] В блоке 415 указание рекомендации может быть предоставлено через графический интерфейс. Например, со ссылкой на Фиг. 2, приложение 205 может предоставлять разработчику программного обеспечения, пользователю и т.п. указание рекомендации посредством отображения рекомендации на компьютерном дисплее вместе с элементами пользовательского интерфейса, которые предоставляют возможность разработчику программного обеспечения указывать, желает ли разработчик программного обеспечения использовать пополнение данных.
[0080] В блоке 420 разработчику программного обеспечения дается возможность указать, хочет ли разработчик программного обеспечения использовать пополнение данных. Например, со ссылкой на Фиг. 2, разработчик программного обеспечения может указать приложению 205, будет ли рекомендованное пополнение данных использоваться, посредством отображаемых элементов интерфейса. В ответ на это, приложение 205 может информировать СУБД 206 на предмет того, будет ли использоваться рекомендованное пополнение данных.
[0081] В блоке 425 могут выполняться другие действия, если таковые имеются. Например, вместо приема набора рекомендаций могут быть приняты каталог пополнений данных, ассоциированные с ними источники данных и другая информация (например, стоимость, скорость, надежность и т.п.). Этот каталог или, по меньшей мере, его часть может быть отображен посредством графического интерфейса. Разработчик программного обеспечения может также выполнять запросные обращения к этому каталогу на нахождение пополнений, которые пользователь заинтересован использовать.
[0082] В качестве другого примера, разработчик программного обеспечения может быть способен задать (например, посредством графического интерфейса) одну или несколько политик, которые должны быть удовлетворены в связи с предоставлением рекомендации. Эти политики могут затем быть предоставлены рекомендательной подсистеме для использования при рекомендации пополнений данных, которые не нарушают политики.
[0083] Как может быть видно из вышеприведенного подробного описания, описанные аспекты относятся к рекомендациям по пополнению данных. Хотя в отношении аспектов описанного здесь изобретения могут быть выполнены различные модификации и альтернативные конструкции, некоторые проиллюстрированные варианты его осуществления показаны на чертежах и были подробно описаны выше. Следует понять, однако, что нет никакого намерения ограничить аспекты заявленного изобретения конкретными раскрытыми формами, а, напротив, изобретение должно охватывать все модификации, альтернативные конструкции и эквиваленты, попадающие в пределы сущности и объема различных аспектов изобретения, описанного здесь.