Навигационная база данных - Navigational database

А навигационная база данных это тип база данных в котором записи или объекты находятся в первую очередь по ссылкам на другие объекты. Термин был популяризирован названием Чарльз Бахман 1973 год Премия Тьюринга бумага, Программист как навигатор.[1] В этой статье подчеркивается тот факт, что новые дисковые системы баз данных позволяют программисту выбирать произвольные навигационные маршруты, следуя отношениям от записи к записи, что контрастирует с ограничениями более ранних систем с магнитной лентой и перфокартой, где доступ к данным был строго последовательным.

Одна из самых ранних навигационных баз данных была Интегрированное хранилище данных (IDS), который был разработан Бахманом для General Electric в 1960-е гг. IDS стала основой для КОДАСИЛ модель базы данных в 1969 году.

Хотя Бахман описал концепцию навигации в абстрактных терминах, идея доступа к навигации стала прочно ассоциироваться с процедурным дизайном языка манипулирования данными CODASYL. Написав в 1982 году, например, Цихрицис и Лочовский[2] заявляют, что «понятие валюты является центральным в концепции навигации». Под понятием валюты они относятся к идее, что программа поддерживает (явно или неявно) текущую позицию в любой последовательности записей, которые она обрабатывает, и что такие операции, как ПОЛУЧИТЬ ДАЛЕЕ и ПОЛУЧИТЬ ПРИОР извлекать записи относительно этой текущей позиции, а также изменять текущую позицию на извлекаемую запись.

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

В 1990-е годы стало ясно, что для некоторых приложений, обрабатывающих сложные данные (например, пространственные базы данных и инженерные базы данных), реляционное исчисление имеет ограничения. В то время началась переоценка всего рынка баз данных, когда несколько компаний описали новые системы, используя маркетинговый термин NoSQL. Многие из этих систем представили языки манипулирования данными, которые, хотя и далеки от CODASYL DML с его индикаторами валют, могут быть поняты как реализующие «навигационное» видение Бахмана. Некоторые из этих языков являются процедурными; другие (например, XPath ) полностью декларативны. Ответвления навигационной концепции, такие как база данных графов нашла новое применение в современной обработка транзакции рабочие нагрузки.

Описание

Навигационный доступ традиционно ассоциируется с сетевая модель и иерархическая модель из база данных, и обычно описывает API управления данными, в которых записи (или объекты) обрабатываются по очереди, итеративно. Однако основной характеристикой, описанной Бахманом, является поиск записей на основании их взаимосвязи с другими записями: поэтому интерфейс все еще может быть навигационным, если он имеет функции, ориентированные на наборы.[3]. С этой точки зрения, ключевое различие между языками манипулирования навигационными данными и реляционными языками заключается в использовании явных именованных отношений, а не соединений на основе значений: для отдела с именем = "Продажи" найти всех сотрудников в заданном отделе-сотрудниках против найти сотрудников, отделы, в которых код-сотрудника = отдел.код и название_отдела = "Продажи".

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

получить отдел с именем = 'Продажи' получить первого сотрудника в наборе отделов-сотрудников до конца набора сделать {получить следующего сотрудника в наборе сотрудников процесса отдел-сотрудники}

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

Большинство критических замечаний к навигационным API можно разделить на две категории:

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

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

Иерархические модели часто создают первичные ключи для записей, объединяя ключи, которые появляются на каждом уровне иерархии. Такие составные идентификаторы находятся в именах компьютерных файлов (/usr/david/docs/index.txt), в URI, в Десятичный Дьюи системы, и, если на то пошло, в почтовых адресах. Такой составной ключ можно рассматривать как представление пути навигации к записи; но в равной степени его можно рассматривать как простой первичный ключ, обеспечивающий ассоциативный доступ.

Когда в 1980-х годах реляционные системы приобрели известность, навигационные API (и, в частности, процедурные API) подверглись критике и потеряли популярность. Однако 1990-е принесли новую волну объектно-ориентированные базы данных который часто предоставляет как декларативный, так и процедурный интерфейсы. Одним из объяснений этого является то, что они часто использовались для представления структурированной информации (например, пространственных данных и инженерных данных), где доступ по своей сути рекурсивен: математика, лежащая в основе SQL (в частности, исчисление предикатов первого порядка), не имеет достаточной мощности для поддерживать рекурсивные запросы, даже такие простые, как переходное закрытие.

Текущий пример популярного навигационного API можно найти в Объектная модель документа (DOM) часто используется в веб-браузерах и тесно связан с JavaScript. DOM - это, по сути, иерархическая база данных в памяти с API, который является как процедурным, так и навигационным. Напротив, те же данные (XML или HTML ) можно получить с помощью XPath, которые можно разделить на декларативные и навигационные: доступ к данным осуществляется с помощью следующих отношений, но вызывающая программа не выдает последовательность инструкций, которые необходимо выполнять по порядку. Такие языки как SPARQL используется для извлечения Связанные данные от Семантическая сеть одновременно являются декларативными и навигационными.

Примеры

Смотрите также

использованная литература

  1. ^ Бахман, Чарльз В. (1973). «Программист как навигатор». Коммуникации ACM. Portal.acm.org. 16 (11): 653–658. Дои:10.1145/355611.362534. S2CID  18635540. Получено 2012-10-01.
  2. ^ Дионисий Ч. Цихрицис и Фредерик Х. Лочовский (1982). Модели данных. Прентис-Холл. п.67. ISBN  0-13-196428-3.
  3. ^ Блажевич, Яцек; Круликовски, Збышко; Морзи, Тадеуш (2003). Справочник по данным и управлению в информационных системах. Springer. п. 18. ISBN  3-540-43893-9.

внешние ссылки