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

       

Вообще говоря, кластеризация является хорошим


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

В связи с этим также заметим, что у разработчика должна иметься возможность выбора индексной структуры для поддержки первичного ключа, соответствующей ожидаемой рабочей нагрузке. Для рабочей нагрузки, в которой соблюдается локальность ссылок, вероятно, хорошо подойдут B+-деревья; для рабочих нагрузок с громадными наборами данных и случайными ссылками более подходящими могут оказаться хэш-таблицы. Приложению могут потребоваться многомерные данные, для работы с которыми нужны совсем другие индексные структуры; обсуждавшиеся ранее возможности расширений должны позволить разработчику обеспечить специализированный механизм индексации и использовать его наравне с другими средствами системы (например, механизмами блокировок, транзакций и т.д.). Как минимум, в конфигурируемой базе данных должен обеспечиваться набор альтернативных индексных структур, поддерживающих последовательный просмотр, быстрый поиск по значению ключа и поиск по диапазону значений ключа, включая поиск по частичному значению ключа.

В отличие от случая использования РСУБД, у программиста должна иметься возможность определения внутренней структуры элементов данных, с которыми работает конфигурируемая система. Если приложение имеет дело с динамической или развивающейся схемой базы данных, или если в нем должны поддерживаться непредвиденные запросы, то внутренняя структура базы данных должна допускать доступ на основе высокоуровневых запросов с использованием средств SQL, XPath, XQuery, LDAP и т.д.

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