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

       

Оптимизация навигации


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

Упреждающее чтение родственных объектов (P3). В исходном коде на рис. 2 для печати названия отдела, в котором работает служащий, производится переход по связи department. В персистентной объектной системе этот переход приведет к загрузке соответствующего объекта-отдела, если он уже не загружен. Если персистентность поддерживается на основе реляционной базы данных, каждый объект-отдел может загружаться с использованием отдельного запроса, что существенно снижает производительность.

В большинстве персистентных объектных подсистем поддержки времени выполнения навигация не оптимизируется, хотя изучались методы повышения производительности за счет использования упреждающего чтения []. Этот вопрос и его взаимосвязь с модульностью, будет еще раз обсуждаться в разд. 7.

При использовании интерфейса уровня вызова от программиста требуется спецификация данных, производимых запросом, следовательно, программист отвечает за оптимизацию навигации. В средствах объектно-реляционного отображения поддерживается ограниченная оптимизация навигации. В EJB и JDO можно специфицировать автоматическую загрузку родственных объектов, но в настоящее время это свойство является глобальным, не специализированным для запросов. В Toplink и Hibernate 3 имеется более гибкая поддержка оптимизации навигации, но добавление соответствующих подсказок для загрузки достаточно обременительно, и механизмы не являются полностью универсальными. Например, в Toplink поддерживается загрузка только одного уровня многозначных податрибутов. Оптимизация навигации должна являться целью любого решения проблемы потери соответствия.

Многоуровневая итерация (P4). Особенно трудным случаем навигации является многоуровневая итерация через многозначные связи. Этот паттерн трудно представляется с использованием текущего варианта SQL.

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