Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИБД вопросы к экзамену.doc
Скачиваний:
7
Добавлен:
26.09.2019
Размер:
224.26 Кб
Скачать

18. Для того чтобы избавиться от недостатков модели удаленного доступа, должны быть соблюдены следующие условия:

Необходимо, чтобы БД в каждый момент отражала текущее состояние предметной области, которое определяется не только собственно данными, но и связями между объектами данных. То есть данные, которые хранятся в БД, в каждый момент времени должны быть непротиворечивыми.

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

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

Необходимо, чтобы возникновение некоторой ситуации в БД четко и оперативно влияло на ход выполнения прикладной задачи.

Одной из важнейших проблем СУБД является контроль типов данных. В настоящий момент СУБД контролирует синтаксически только стандартно-допустимые типы данных, то есть такие, которые определены в DDL (data definition language) — языке описания данных, который является частью SQL. Однако в реальных предметных областях у нас действуют данные, которые несут в себе еще и семантическую составляющую, например, это координаты объектов или единицы различных метрик, например рабочая неделя в отличие от реальной имеет сразу после пятницы понедельник.

Данную модель поддерживают большинство современных СУБД: Informix, Ingres, Sybase, Oracle, MS SQL Server. Основу данной модели составляет механизм хранимых процедур как средство программирования SQL-сервера, механизм триггеров как механизм отслеживания текущего состояния информационного хранилища и механизм ограничений на пользовательские типы данных, который иногда называется механизмом поддержки доменной структуры.

В этой модели бизнес-логика разделена между клиентом и сервером. На сервере бизнес-логика реализована в виде хранимых процедур — специальных программных модулей, которые хранятся в БД и управляются непосредственно СУБД. Клиентское приложение обращается к серверу с командой запуска хранимой процедуры, а сервер выполняет эту процедуру и регистрирует все изменения в БД, которые в ней предусмотрены. Сервер возвращает клиенту данные, релевантные его запросу, которые требуются клиенту либо для вывода на экран, либо для выполнения части бизнес-логики, которая расположена на клиенте. Трафик обмена информацией между клиентом и сервером резко уменьшается.

Централизованный контроль в модели сервера баз данных выполняется с использованием механизма триггеров. Триггеры также являются частью БД.

Термин "триггер" взят из электроники и семантически очень точно характеризует механизм отслеживания специальных событий, которые связаны с состоянием БД. Триггер в БД является как бы некоторым тумблером, который срабатывает при возникновении определенного события в БД. Ядро СУБД проводит мониторинг всех событий, которые вызывают созданные и описанные триггеры в БД, и при возникновении соответствующего события сервер запускает соответствующий триггер. Каждый триггер представляет собой также некоторую программу, которая выполняется над базой данных. Триггеры могут вызывать хранимые процедуры.

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

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

И хранимые процедуры, и триггеры хранятся в словаре БД, они могут быть использованы несколькими клиентами, что существенно уменьшает дублирование алгоритмов обработки данных в разных клиентских приложениях.

Для написания хранимых процедур и триггеров используется расширение стандартного языка SQL, так называемый встроенный SQL. Встроенный SQL мы рассмотрим в лекции 12.

Недостатком данной модели является очень большая загрузка сервера. Действительно, сервер обслуживает множество клиентов и выполняет следующие функции:

осуществляет мониторинг событий, связанных с описанными триггерами;

обеспечивает автоматическое срабатывание триггеров при возникновении связанных с ними событий;

обеспечивает исполнение внутренней программы каждого триггера;

запускает хранимые процедуры по запросам пользователей;

запускает хранимые процедуры из триггеров;

возвращает требуемые данные клиенту;

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

Если мы переложили на сервер большую часть бизнес-логики приложений, то требования к клиентам в этой модели резко уменьшаются. Иногда такую модель называют моделью с "тонким клиентом", в отличие от предыдущих моделей, где на клиента возлагались гораздо более серьезные задачи. Эти модели называются моделями с "толстым клиентом".

Для разгрузки сервера была предложена трехуровневая модель.

19. Децентрализа́ция — в иерархической системе такая реорганизация протекающих внутри системы процессов, при которой часть процессов переводятся на более низкий уровень иерархии; соответственно, при централизации — на более высокий уровень. Например, в менеджменте децентрализация означает делегирование руководителем таковых полномочий и обязанностей подчинённым, наделяя их тем самым большей свободой воли, но и вместе с тем большей ответственностью.

В политологии обычно под децентрализацией понимают рассредоточение доли государственной власти в некоем центре (например, конфедерация — часть государственной власти (полномочия и ответственность за их использование) делегируется от центрального правительства регионам). Некоторыми политологами считается, что крайняя степень децентрализации государственной власти — конфедерация. Но это не совсем так, поскольку конфедерация может возникнуть в результате добровольного объединения нескольких государств. А это означает, что децентрализованное управление ими на уровне конфедерации уже закладывается изначально, а не является результатом процессов децентрализации. В современном значении понятие «децентрализации» имеет мало отношения к условному и терминологически устаревшему соотношению «федерация-конфедерация». Децентрализация больше относится к критериям и процедурам принятия решений на различных уровнях власти, например, «Центр-Департаменты-Коммуны», как во Франции или «федеральные-региональные-местные органы власти» как в России. То есть применимы в рамках конкретного государства, а не искусственно обозначенной совокупности таковых.

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

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

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

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

Использование технологии тиражирования имеет следующие преимущества:

· сокращение сетевого трафика при выполнении запросов;

· повышение доступности данных (доступ к локальной копии БД обеспечивается, даже если доступ к центральному серверу невозможен);

· повышение производительности (данные приближены к месту их использования, не нужно ждать доступности всех частей распределенной БД);

· повышение автономности рабочих мест пользователей;

· повышение надежности системы (наличие множества копий повышает вероятность восстановления системы в критических ситуациях).

Дублирование данных при использовании тиражирования влечет за собой:

· дополнительный расход памяти;

· возможность возникновения конфликтов при корректировке;

· наличие временного лага между фиксацией события в БД и доступностью этой информации для всех пользователей сети;

· повышенные требования к рабочим станциям;

· необходимость тщательного продумывания схемы тиражирования.

Требования к механизму тиражирования зависят от задач, которые решает вся система. Существует много схем обновления копий в распределенной БД. По моменту внесения изменений в реплики различают:

· синхронное тиражирование;

· асинхронное тиражирование.

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

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

Асинхронное тиражирование может быть:

· периодическим;

· апериодическим.

Периодическое тиражирование выполняется через заданные интервалы времени. Время тиражирования выбирается исходя из частоты и интенсивности изменений, допустимого времени рассинхронизации состояний источника и приемника, объема передаваемых данных, допустимой загрузки коммуникаций. Момент выполнения апериодического тиражирования определяется каким-либо событием и может быть реализован с помощью хранимых процедур или триггеров.

Синхронное тиражирование предполагает завершение транзакции только после успешной модификации всех копий. Используется механизм двухфазной фиксации (2РС): основная система связывается с подчиненными копиями БД и одновременно вносит в них изменения, блокируя соответствующие записи. Если хотя бы одна копия недоступна, изменения не выполняются. Механизм двухфазовой фиксации предъявляет высокие требования к системе и снижает степень автономности узлов, поэтому в технологии тиражирования используется редко.

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

Типичным протоколом тиражирования по критерию полной эквивалентности копий является Read-Once/Write-All (ROWA) – одно чтение (какой-либо одной копии), запись во все физические копии. Протокол ROWA прост, но требует доступности всех копий элемента данных для завершения транзакции. Сбой на одном из узлов приведет к дублированию транзакции.

Реплики в БД с тиражированием могут быть:

· равноправными;

· неравноправными (одна из реплик считается основной).

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

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

Инициаторами обновления реплик могут быть:

· рабочие станции (обновление по запросу, выполняемое по определенному графику или вручную);

· сервер (принудительная рассылка тиража, осуществляемая в момент появления изменений или по графику).

Обновление содержания реплик может быть обеспечено также:

· копированием моментального снимка БД;

· копированием и выполнением очереди подтвержденных транзакций;

· копированием изменений из журнала БД.

Моментальный снимок БД (snapshot) отражает состояние БД или ее фрагмента на момент получения снимка. При копировании моментального снимка БД часто передаются не только данные, но и служебная информация.

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

21. Вопросы представления данных тесно связаны с операциями, при помощи которых эти данные обрабатываются. К числу таких операций относятся: выборка, изменение,включение и исключение данных. В основе всех перечисленных операций лежит операция доступа, которую нельзя рассматривать независимо от способа представления.

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

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

Существуют два класса методов, реализующих доступ к данным по ключу:

методы поиска по дереву,

методы хеширования.