Классика баз данных - статьи

       

Такому пользователю хочется просмотреть все


Такому пользователю хочется просмотреть все записи на любом маршруте сквозь исследуемую им базу данных. Более того, выбор следующего маршрута, который ему захочется исследовать, может зависеть от состава текущей записи. Понятно, что в каждый момент времени этот пользователь имеет доступ к одной записи. Наша позиция по отношению к таким пользователям проста: им следует выполнять последовательность запросов, возвращающую единственную запись, например: select * from collection where collection.key = value

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

Более того, мы утверждаем, что наш подход приносит выигрыш в производительности по сравнению с использованием низкоуровневых интерфейсов. Это утверждение, на первый взгляд, противоречит интуиции и нуждается в объяснениях. Подавляющее большинство энтузиастов OODB считают, что указатель должен быть мягким, т.е. его значение не должно меняться, даже если элемент данных, на который он указывал, был передвинут. Эта характеристика, называемая позиционной независимостью, является желательной, так как она позволяет перемещать элементы данных, не меняя при этом структуры базы данных. Перемещения элементов данных часто неизбежны при реорганизации базы данных или восстановлении после сбоев. Таким образом, энтузиасты OODB рекомендуют использовать в качестве указателей позиционно независимые уникальные идентификаторы. В результате для перехода по указателю необходим доступ к хэшированной или индексированной структуре уникальных идентификаторов.

В SQL-представлении, пара (имя-отношения, ключ)

в точности является позиционно независимым уникальным идентификатором, задающим тот же хэшированный или индексированный просмотр. Все накладные расходы, связанные с синтаксисом SQL, с высокой степенью вероятности придутся на время компиляции.


Содержание  Назад  Вперед