Архитектуры ООСУБД. Анализ реализаций


Ответ на комментарии раздела «Реализация запросов в архитектуре, основанной на объектах»


Я не уверен в уместности приведенного Мариоттом урока по объектно-ориентированному программированию в качестве контрдоводов к моей исходной статье. Возможно, в подразделе «Реализация запросов в архитектуре, основанной на страницах» мне стоило упомянуть слово «оптимизатор». Конечно, я не имел в виду, что у какого-либо поставщика имеется средство поддержки запросов, которое невозможно оптимизировать. Во всем остальном материал этого раздела статьи Мариотта является отличным обзором подсистемы обработки запросов ObjectStore, хотя я бы не стал говорить об использовании STL-коллекций для оправдания подхода к обработке запросов на стороне клиента. Естественные языковые структуры и многочисленные паттерны моделирования действительно обеспечивают отличные навигационные средства, позволяющие избежать потребности в запросах, а возможность использования индексов и семантика запросов - это уже совсем другая тема.

Вопреки утверждению Мариотта, а вовсе не заявлял, что в архитектуре, основанной на страницах, нельзя использовать несколько потоков управления. Что касается параллельных и распределенных запросов, я имел в виду вовсе не то, что данные берутся из одной физической базы данных и распределяются по нескольким клиентам для выполнения запроса; я говорил о возможности одного клиента адресовать запрос к нескольким физическим базам данных. Проблема состоит в потребности в передачи клиентам бесполезной информации только для того, чтобы выполнить запрос и получить несколько объектов, удовлетворяющих условию. Так что интерес представляет случай, когда имеется множество данных (миллионы объектов), распределенных между многими физическими базами данных (или даже хранимых в одной базе данных), и обеспечивается возможность задавать простой уточненный запрос с получением в ответ пары объектов, от которых можно начать навигацию, следуя логике сценария использования. И я говорил, что очень неприятной является потребность в перемещении этих миллионов объектов (или их индексов) в группу клиентских машин, каждая из которых обрабатывает некоторый сегмент этих данных и возвращает куда-то результаты (я не уверен, что в ObjectStore обеспечивается удаленная обработка запросов между клиентскими процессами), а также последующая потребность (для реального использования результатов) в загрузке по сети страниц (если они уже не загружены), содержащих некоторые объекты, которые не удовлетворяют условию запроса. Конечно, эта последняя фаза - пересылка бесполезных объектов могла бы, на самом деле, принести пользу, если использовать эту «не обязательную» стратегию размещения, при которой в сценарии использования потребуются эти «бесполезные» объекты.




Начало  Назад  Вперед



Книжный магазин