Активные запросы обновления выполняют глобальные обновления в группах записей одной или более таблиц. Например, предположим, что арендную плату за все сдаваемые в аренду объекты необходимо увеличить на 10%. Для выполнения подобного обновления прежде всего надо создать запрос на выборку данных из таблицы Propery_for_Rent. Затем в режиме Design View следует изменить тип запроса на Update. В ячейку Update To столбца Rent необходимо поместить выражение ‘[Rent]*l.l’ (рис. 10, а). После запуска запроса на выполнение система выведет предупреждающее сообщение, показанное на рисунке 10, б, которое содержит предложение подтвердить необходимость выполнения операции обновления. Если выполнение операции будет продолжено, система обновит значения в столбце Rent таблицы Property for Rent (рис. 10, в). Эквивалентный SQL-оператор запроса представлен на рисунке 10, г.
Рис. 9. Пример запроса
UPDATE PROPERTY_FOR_RENT SET PROPERTf.FOR.RENT.Rent = [Rent]*1.1;
г
Рис. 10. Пример запроса
Активные запросы добавления записей
Активные запросы добавления записей предназначены для вставки записей из одной и более исходных таблиц в единственную целевую таблицу. Записи могут быть добавлены в конец таблицы, принадлежащей той же самой или другой базе данных. Запросы добавления записей могут быть полезны при добавлении строк (исходя из заданного критерия) или же в тех случаях, когда некоторых полей в другой таблице не существует. Например, положим, что необходимо поместить в таблицу Owner подробные сведения о новых владельцах объектов недвижимости, сдаваемых в аренду. Предположим также, что сведения об их новых владельцах находятся в таблице с именем NewOwner, которая содержит только столбцы Ono, FName, LName и Address. Более того в таблицу Owner требуется поместить сведения только о тех новых владельцах, которые проживают в городе Глазго. В этом примере таблица Owner является целевой таблицей запроса, а таблица NewOwner – исходной.
Создание активного запроса добавления записей следует начать с подготовки обычного запроса, предназначенного для извлечения требуемой информации из исходных таблиц – в нашем случае это таблица NewOwner. Затем тип вновь созданного запроса следует изменить на Append, в результате чего на экран будет выведено диалоговое окно (рис. 11, а), предназначенное для задания имени и расположения целевой таблицы создаваемого запроса добавления. Сетка QBE с подготовленным активным запросом добавления записей показана на рисунке 11, б. После запуска запроса на выполнение система выведет предупреждающее сообщение (рис. 11, в),в котором пользователю предлагается подтвердить необходимость выполнения начатой операции добавления записей. Если выполнение запроса будет продолжено, в таблицу Owner будут добавлены две новые записи с данными о владельцах объектов недвижимости из города Глазго, выбранные из таблицы NewOwner (рис. 11, г). Эквивалентный SQL-оператор запроса представлен на рисунке 11, д.
INSERT INTO OWNER (Ono, FName, LName, Address) SELECT NEWOWNER.Ono, NEWOWNER.FName, NEWOWNER.LName.NEWOWNER.Address FROM NEWOWNER WHERE (((NEWOWNER.Address) Like “Glasgow”));
д
Рис. 11. Пример запроса
Распределенные СУБД
Основные концепции
Основной причиной разработки систем, использующих базы данных, является стремление интегрировать все обрабатываемые в организации данные в единое целое и обеспечить к ним контролируемый доступ. Хотя интеграция и предоставление контролируемого доступа могут способствовать централизации, последняя не является самоцелью. На практике создание компьютерных сетей приводит к децентрализации обработки данных. Децентрализованный подход, по сути, отражает организационную структуру компании, логически состоящую из отдельных подразделений, отделов, проектных групп и тому подобного, которые физически распределены по разным офисам, отделениям, предприятиям или филиалам, причем каждая отдельная единица имеет дело с собственным набором обрабатываемых данных. Разработка распределенных баз данных, отражающих организационные структуры предприятий, позволяет сделать данные, поддерживаемые каждым из существующих подразделений, общедоступными, обеспечив при этом их сохранение именно в тех местах, где они чаще всего используются. Подобный подход расширяет возможности совместного использования информации, одновременно повышая эффективность доступа к ней.
Распределенные системы призваны разрешить проблему островов информации. Базы данных иногда рассматривают как некие электронные острова, представляющие собой отдельные и, в общем случае, труднодоступные места, подобные удаленным друг от друга островам. Данное положение может являться следствием географической разобщенности, несовместимости используемой компьютерной архитектуры, несовместимости используемых коммутационных протоколов и т.д. Интеграция отдельных баз данных в одно логическое целое способна изменить подобное положение дел.
Распределенная база данных – этонабор логически связанных между собой разделяемых данных (и их описаний), которые физически распределены в некоторой компьютерной сети. Тогда распределенная СУБД – это программный комплекс, предназначенный для управления распределенными базами данных и позволяющий сделать распределенность информации прозрачной для конечного пользователя.
Система управления распределенными базами данных (СУРБД) состоит из единой логической базы данных, разделенной на некоторое количествофрагментов. Каждый фрагмент базы данных сохраняется на одном или нескольких компьютерах, которые соединены между собой линиями связи и каждый из которых работает под управлением отдельной СУБД. Любой из сайтов способен независимо обрабатывать запросы пользователей, требующие доступа к локально сохраняемым данным (что создает определенную степень локальной автономии), а также способен обрабатывать данные, сохраняемые на других компьютерах сети.
Пользователи взаимодействуют с распределенной базой данных через приложения. Приложения могут быть классифицированы следующим образом: приложения, которые не требуют доступа к данным на других сайтах (локальные приложения), и приложения, которые требуют подобного доступа (глобальные приложения). В распределенной СУБД должно существовать хотя бы одно глобальное приложение, поэтому любая СУРБД должна отвечать следующим требованиям:
• иметь набор логически связанных разделяемых данных;
• сохраняемые данные разбиты на некоторое количество фрагментов;
• между фрагментами может быть организована репликация данных;
• фрагменты и их реплики распределены по различным сайтам;
• сайты связаны между собой сетевыми соединениями;
• работа с данными на каждом сайте управляется СУБД;
• СУБД на каждом сайте способна поддерживать автономную работу локальных приложений;
• СУБД каждого сайта поддерживает хотя бы одно глобальное приложение.
Очень важно понимать различия, существующие между распределенными СУБД и распределенной обработкой данных.
Распределенная обработка – это обработка с использованием централизованной базы данных, доступ к которой может осуществляться с различных компьютеров сети.
Рис. 12. Топология системы управления распределенной базой данных
Ключевым моментом в определении распределенной базы данных является утверждение, что система работает с данными, физически распределенными в сети. Если данные хранятся централизованно, то даже в том случае, когда доступ к ним обеспечивается для любого пользователя в сети, данная система просто поддерживает распределенную обработку, но не может рассматриваться как распределенная СУБД. Схематически подобная топология представлена на рис. 13. Сравните этот вариант, содержащий централизованную базу данных на сайте 2, с вариантом, представленным на рис. 12, в котором присутствует несколько сайтов, каждый из которых имеет собственную базу данных.
Рис. 13. Топология системы с распределенной обработкой
Кроме того, следует четко понимать различия, существующие между распределенными и параллельными СУБД.
Параллельная СУБД – это система управления базой данных, функционирующая с использованием нескольких процессоров и устройств жестких дисков, что позволяет ей (если это возможно) распараллеливать выполнение некоторых операций с целью повышения общей производительности обработки.
Появление параллельных СУБД было вызвано тем фактом, что системы с одним процессором оказались неспособны удовлетворять растущие требования к масштабируемости, надежности и производительности обработки данных. Эффективной и экономически обоснованной альтернативой однопроцессорным СУБД стали параллельные СУБД, функционирующие одновременно на нескольких процессорах. Применение параллельных СУБД позволяет объединить несколько маломощных машин для получения того же самого уровня производительности, что и в случае одной, но более мощной машины, с дополнительным выигрышем в масштабируемости и надежности системы по сравнению с однопроцессорными СУБД.
Для предоставления нескольким процессорам совместного доступа к одной и той же базе данных параллельная СУБД должна обеспечивать управление совместным доступом к ресурсам. То, какие именно ресурсы разделяются и как это разделение реализовано на практике, непосредственно влияет на показатели производительности и масштабируемости создаваемой системы, что, в свою очередь, определяет пригодность конкретной СУБД к условиям заданной вычислительной среды и требованиям приложений. Три основных типа архитектуры параллельных СУБД следующие:
• системы с разделением памяти;
• системы с разделением дисков;
• системы без разделения.
Системы с разделением памяти состоят из тесно связанных между собой компонентов, в число которых входит несколько процессоров, разделяющих общую системную память. Иначе называемая симметричной многопроцессорной обработкой (СМП), эта архитектура в настоящее время приобрела большую популярность и применяется для разных вычислительных платформ, начиная от персональных рабочих станций, содержащих несколько параллельно работающих микропроцессоров, больших RISC – вплоть до крупнейших мейнфреймов. Данная архитектура обеспечивает быстрый доступ к данным для ограниченного числа процессоров, количество которых обычно не превосходит 64. В противном случае сетевые взаимодействия превращаются в узкое место, ограничивающее производительность всей системы.
Системы без разделения (архитектура, иначе называемая массовой параллельной обработкой – ММП) используют схему, в которой каждый процессор, являющийся частью системы, имеет свою собственную оперативную и дисковую память. База данных распределена между всеми дисковыми устройствами, подключенными к раздельным, связанным с этой базой данных вычислительным подсистемам, в результате чего все данные прозрачно доступны пользователям каждой из этих подсистем. Данная архитектура обеспечивает более высокий уровень масштабируемости, чем системы с СМП, и позволяет легко организовать поддержку работы большого количества процессоров. Однако оптимальной производительности удается достичь только в том случае, если требуемые данные хранятся локально.
Системы с разделением дисков строятся из менее тесно связанных между собой компонентов. Они являются оптимальным вариантом для приложений, которые унаследовали высокую централизацию обработки и должны обеспечивать самые высокие показатели доступности и производительности. Каждый из процессоров имеет непосредственный доступ ко всем совместно используемым дисковым устройствам, но обладает собственной оперативной памятью. Как и в случае архитектуры без разделения, архитектура с разделением дисков исключает узкие места, связанные с совместно используемой памятью. Однако в отличие от архитектуры без разделения данная архитектура исключает упомянутые узкие места без внесения дополнительной нагрузки, связанной с физическим распределением данных по отдельным устройствам. Разделяемые дисковые системы в некоторых случаях называют кластерами.
Параллельные технологии обычно используются в случае исключительно больших баз данных, размеры которых могут достигать нескольких терабайт (1012байт), или в системах, которые должны поддерживать выполнение тысяч транзакций в секунду. Подобные системы нуждаются в доступе к большому объему данных и должны обеспечивать приемлемое время реакции на запрос. Параллельные СУБД могут использовать различные вспомогательные технологии, позволяющие повысить производительность обработки сложных запросов за счет применения методов распараллеливания операций сканирования, соединения и сортировки, что позволяет нескольким процессорным узлам автоматически распределять между собой текущую нагрузку (см. далее “Хранилища данных”). Все крупные разработчики СУБД в настоящее время поставляют параллельные версии созданных ими продуктов.