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