Активные запросы обновления

 

Активные запросы обновления выполняют глобальные обновления в группах за­писей одной или более таблиц. Например, предположим, что арендную плату за все сдаваемые в аренду объекты необходимо увеличить на 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байт), или в системах, которые должны поддерживать выполнение тысяч транзакций в секунду. Подобные системы нуждаются в доступе к большому объему данных и должны обес­печивать приемлемое время реакции на запрос. Параллельные СУБД могут использо­вать различные вспомогательные технологии, позволяющие повысить производи­тельность обработки сложных запросов за счет применения методов распараллелива­ния операций сканирования, соединения и сортировки, что позволяет нескольким процессорным узлам автоматически распределять между собой текущую нагрузку (см. далее “Хранилища данных”). Все крупные разработчики СУБД в настоя­щее время поставляют параллельные версии созданных ими продуктов.