Системы управления базами данных (СУБД). Организации баз данных. Потребность в стандартных и общепринятых средствах сравнительного тестирования СУБД, страница 6

Все четыре СУБД поддерживают локальную автономию узлов, т.е. возможность рассматривать локальную БД конкретного узла как самостоятельную базу, позволяют формулировать запросы к БД на языке SQL, как стандартном (ANSI SQL-89), так и расширенном. СУБД Oracle 7 дополнительно к непроцедурному языку SQL поддерживает свой собственный процедурный язык PL/SQL.

“Прозрачный” механизм запроса, обновления и просмотра данных, обновления и просмотра данных, размещенных в нескольких узлах, также реализован во всех рассматриваемых СУБД. Однако распределенное обновление данных в СУБД разных типов можно выполнить только с помощью двухфазного протокола фиксации Oracle 7.

Механизм локальной и глобальной блокировки данных, который предотвращает изменение данных, контролируемых в это время другими пользователями, и таким образом обеспечивает целостность и непротиворечивость данных, реализован везде, но на разных уровнях:

Oracle 7 по умолчанию блокирует запись, а остальные СУБД - страницу или таблицу. Блокировка на уровне записи позволяет одновременно обновлять разные записи одной и той же таблицы, что резко снижает время ожидания, ускоряет обработку данных и уменьшает вероятность возникновения взаимоблокировок.

Средства для работы с распределенными данными

При выборе распределенной СУБД в первую очередь следует обратить внимание на то, какие операционные системы и сетевые протоколы она поддерживает. Однако не менее важным является и то, какие методы распределения данных реализованы в СУБД.

Фрагментация и дублирование

Одним из способов распределенного хранения таблиц является фрагментация: таблица расщепляется на части, которые помещаются в разные узлы. Другой способ - дублирование (репликация): создаются дубли всей БД или ее частей и размещаются в узлах. Оба метода позволяют хранить данные именно там, где они чаще всего используются.

В Oracle 7 реализованы и фрагментация, и дублирование, причем дублирование может как выполнятся процедурно (с помощью триггеров), так и задаваться декларативной форме. В этом последнем случае  в БД создаются так называемые “моментальные снимки” (snapshots).

Триггеры обеспечивают синхронизированный механизм дублирования таблиц, при котором изменения, сделаны в основной таблице, немедленно отображаются в дублирующих таблицах. Обновление, выполняемое с помощью “моментальных снимков”, - асинхронное, т.е. производится в определенное время или через определенные интервалы времени.

Различаются простые и сложные “моментальные снимки”. Первые функционируют на базе одной основной таблицы и позволяют обновлять в дублирующих таблицах только те строки, которые были изменены в основной. Вторые базируются на нескольких основных таблицах; при каждом обновлении любой из них дублирующие таблицы создаются заново.

Словари и каталоги данных

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

В СУБД Ingres глобальный словарь реализуется с помощью компонента Ingres/Star, который извлекает информацию из всех локальных словарей данных и выполняет оптимизацию запросов. Недостатком такого подхода является то, что все данные словарей собираются на центральном узле Ingres/Star, так что при его отключении или сбое теряется доступ к остальным узлам распределенной БД. Для восстановления доступа придется создавать другой центральный узел.

В Oracle 7 все данные словаря распределены, так что при отключении или сбое одного из узлов все остальные узлы продолжают корректно работать. Транзакции, работавшие с вышедшим из строя узлом, задерживаются; их можно выполнить позже (после восстановления узла) или отбросить.

Двухфазная фиксация изменений