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


Ответ на комментарии к разделу «Следствия модели запросов» - часть 2


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

Дискуссия о возможности обращений ко внемодельным объектам, для которых требуется автоматическая сборка мусора в стиле поддержки времени выполнения виртуальной машины, носит религиозный характер, и подобным обсуждениям лучше посвящать отдельные статьи. Я полагаю достаточным сказать, что многие светила нашей области доходят то того, что данные «никогда» не следует удалять. С подобным заявлением выступил известный специалист из Microsoft на панельной экспертной дискуссии по объектам и базам данных на конференции OOPSLA 2006.

Что касается параллельного выполнения запросов в нескольких физических узлах, из текста Мариотта мне трудно понять, почему он считает неверным мое утверждение. Если я неправ, то, видимо, мне следовало сказать, что разработчики приложений должны сами реализовывать это поведение, а не полагаться на то, что иногда им могут помочь встроенные возможности ObjectStore. В Versant запрос поступает от одного потока исполнения в контексте соответствующих транзакции и кэша и адресуется к некоторой абстракции, которой является логическая база данных. Внутри ООСУБД Versant для каждой физической базы данных, входящей в это логическое представление, используется отдельный поток управления, эти потоки выполняются в параллель, и их частичные результаты сливаются, обеспечивая результирующий набор данных для вызывающего потока управления. Мне кажется, что для того чтобы делать что-то подобное в ObjectStore, потребовалось бы, чтобы от раздельных потоков управления внутри раздельных кэшей (сессий) поступали их собственные запросы, и чтобы затем приложение управляло этими потоками управления и окончательный результат собирался из разных кэшей с использованием мягких указателей ObjectStore.Я приведу выдержку из проспекта ObjectStore, чтобы дать понять, что я имею в виду: «В одной сессии ObjectStore может иметься несколько потоков управления, выполняемых в рамках одной транзакции базы данных, или один процесс с несколькими сессиями, в которых выполняется несколько независимых транзакций. Это обеспечивает идеальную поддержку СУБД для многих потоков управления крупномасштабных серверов приложений, которые должны обслуживать много одновременно поступающих запросов». Сессии ObjectStore соответствует контекст кэша.




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



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