Распределенные информационные системы и базы данных. Учебное пособие
.pdfмасштабируемости обычно связаны с узкими местами по обслуживанию (один сервер для множества клиентов), по данным (один файл с общей информацией) или по алгоритмам (централизованный алгоритм и перегрузка коммуникационной сети).
Под безопасностью понимается состояние защищенности системы от потенциально и реально существующих угроз или отсутствие таких угроз, нарушающих инфраструктуру системы. Принципы информационной безопасности, закладываемые в основу системы обеспечения безопасности, называют триадой CIA [23–25]:
confidentiality (конфиденциальность) – обеспечение защиты от несанкционированного доступа в систему и несанкционированного использования информации. Для обеспечения конфиденциальности данных могут использоваться такие средства, как шифрование данных, многофакторная проверка подлинности и защита от потери данных;
integrity (целостность) – обеспечение целостности и сохранности данных. Целостность данных должна обеспечиваться на протяжении всего их жизненного цикла – прежде всего посредством управления доступом с запретом пользователям без соответствующих полномочий получать доступ к информации и выполнять действия, нарушающие целостность данных;
availability (доступность) – возможность получения информации авторизованным пользователем в нужное для него время. Достигается это обязательным обслуживанием оборудования и регулярным обновлением программного обеспечения, что гарантирует предоставление стабильного и согласованного доступа к данным по мере необходимости.
Технологии распределенной обработки данных
Технология файл-сервер
Одной из первых технологий распределенной обработки данных была технология файл-сервер. По запросу клиента файл-сервер пересылает запрошенный файл. Целостность и безопасность данных не обеспечивается в должной степени. Файл-сервер содержит базу данных и файловую систему для обеспечения многопользовательских запросов.
Сетевые СУБД, основанные на технологии файл-сервер, также не обеспечивают безопасность и целостность данных. При увеличении
31
числа запросов падает производительность системы, так как файлсерверы реализуют принцип «всё или ничего». Полные копии файлов базы перемещаются по сети, увеличивается трафик сети, что может привести к увеличению времени ожидания клиентов.
Технология клиент-сервер
Эта технология является более мощной, так как позволяет совместить достоинства однопользовательских систем (высокий уровень диалоговой поддержки, дружественный интерфейс, низкую цену) с достоинствами более крупных компьютерных систем (поддержкой целостности, защитой данных, многозадачностью). Технология кли- ент-сервер за счет распределения обработки транзакций между многими серверами повышает производительность, увеличивает количество обслуживаемых пользователей, позволяет пользователям электронной почты распределять работу над документами, а также обеспечивает доступ к доскам объявлений и конференциям.
Основная идея технологии клиент-сервер заключается в том, что базы данных располагаются на мощных серверах, а приложения клиентов, обрабатывающие данные и запросы клиентов, – на менее мощных компьютерах. Файл-сервер заменен сервером баз данных, который содержит базу данных, сетевую операционную систему и сетевую СУБД. Сервер баз данных обрабатывает запросы клиентов, выбирает необходимые данные из базы, посылает их клиентам по сети, производит обновление информации, обеспечивает целостность и безопасность данных.
Технология клиент-сервер позволяет независимо наращивать мощности сервера баз данных, увеличивая количество поддерживаемых им услуг и клиентов, использующих новые приложения.
Для доступа к серверу баз данных и манипулирования данными применяются языки запросов (для реляционных баз данных это SQL). По запросу клиента отправляется не полная копия файла, а логически необходимая порция данных. Тем самым уменьшается трафик в сети, что позволяет увеличить количество обслуживаемых пользователей.
К недостаткам технологии клиент-сервер можно отнести то, что при отсутствии сетевой СУБД трудно организовать распределенную обработку.
32
Достоинства распределенной обработки информации:
большое количество взаимодействующих между собой пользователей;
устранение пиковых нагрузок с централизованной базы данных за счет распределения обработки и хранения локальных баз данных на разных ЭВМ;
возможность доступа пользователя к вычислительным ресурсам сети ЭВМ;
обеспечение обмена данными между удаленными пользователями. Основные недостатки реализации распределенной обработки
информации на сегодняшний день заключаются в ее зависимости от нагрузки, доступности, надежности, безопасности и характеристик сети.
33
4.РАСПРЕДЕЛЕННЫЕ БАЗЫ ДАННЫХ
Вначальный период развития архитектура информационных систем включала в себя централизованную базу данных. Данные были сосредоточены физически и логически на одном компьютере (сервере базы данных), что позволяло облегчить обеспечение безопасности, целостности и непротиворечивости данных, а распределенный характер обработки информации ограничивался подключением рассредоточенных пользователей по сети к серверу. Однако рост объема базы данных и числа пользователей, получающих к ней доступ, территориальное развитие организации и необходимость распределенной обработки данных приводят к возникновению ряда проблем, свойственных централизованной архитектуре:
большому объему обмена данными (высокому трафику);
снижению надежности обмена данными (выходу из строя элементов сетевой структуры);
снижению общей производительности (увеличению нагрузки на сервер);
росту затрат на разработку базы данных (усложнению предметной области).
Возможным решением перечисленных проблем является организация децентрализованного хранения данных – создание распределенной базы данных. При децентрализации достигается:
параллельная обработка данных и распределение нагрузки;
повышение эффективности обработки данных при выполнении удаленных запросов;
уменьшение затрат на обработку данных;
упрощение процедуры управления информационной системой. Распределенная база данных – это база данных, которая физически
распределяется на две или более компьютерные системы [7], но для пользователяонапредставляетсякакединаябазаданных.
Распределенная система баз данных – совокупность данных, распределенных между двумя или более базами данных [5], в которой
34
управление каждым из узлов осуществляется автономно локальной СУБД.
Такие системы могут быть гомогенными (однородными) или гетерогенными (неоднородными). В однородных распределенных системах баз данных СУБД на каждом узле должны быть идентичными или совместимыми по структурам данных.
В гетерогенной системе управление базами осуществляется различными СУБД, работающими на различных машинах с различными операционными системами. Для соединения машин используются коммуникационные системы.
Объединение распределенных баз данных в единую систему осуществляется системой управления распределенными базами данных (СУРБД), позволяющей сделать возможную неоднородность локальных СУБД «прозрачной» для конечного пользователя [27]. Структура СУРБД включает в себя каталоги, содержащие описание сети, информацию о локальных СУБД и базах данных, а также программное обеспечение, управляющее взаимодействием прикладных программ и локальными БД сети (рис. 9).
Рис. 9. Архитектура системы управления распределенной базой данных (СУРБД)
35
Основные свойства распределенной базы данных
Кристофер Дейт в 1987 году сформулировал требования, которым должны удовлетворять распределенные базы данных [8]. Основной принцип заключается в «прозрачности распределения», т. е. для пользователя распределенная система должна выглядеть так же, как нераспределенная система. Это означает следующее:
все проблемы распределенных систем должны относиться к проблемам реализации, а не к проблемам пользовательского уровня;
все операции манипулирования данными должны оставаться логически неизменными, за исключением операций определения данных: в распределенной системе дополнительно требуется указывать размещение данных по узлам сети.
Существуют также дополнительные требования.
1.Локальная автономия означает, что все узлы в сети должны быть независимы (автономны), а операции с данными на каждом узле – управляться локальными СУБД. Никакой зависимости от других узлов нет, хотя в реальных системах автономия неполная, так как есть много ситуаций, когда требуется согласованная работа узлов.
2.Независимость от центрального узла – локальная автономия – предполагает, что все узлы рассматриваются как равные. Следовательно, не должно существовать никакой зависимости от некоторого «основного» узла, который мог бы выполнять централизованные операции (обработку запросов, управление транзакциями или присвоением имен). Такая зависимость может приводить к ограничению доступности из-за перегрузки центрального узла или к снижению надежности, поскольку при повреждении центрального узла может выйти из строя вся система.
3.Непрерывное функционирование – это требование означает, что системы должны быть высоконадежны и данные доступны в любой момент.
4.Независимость от расположения предполагает прозрачность расположения данных.
5.Независимость от фрагментации – это требование предполагает, что работа системы не зависит от распределения (разбиения) данных по узлам сети. Фрагментация желательна для повышения производительности системы, поскольку возможно параллельное выполнение операций, а также повышение доступности данных, если допускается дублирование. Данные лучше хранить там, где их чаще используют.
36
6.Независимость от репликации6 означает, что для пользователей должна быть создана такая среда, чтобы они по крайней мере с логической точки зрения могли считать, что в действительности данные не дублируются.
7.Обработка распределенных запросов. Поскольку в распределенных системах данные распределены, то система должна определять наиболее эффективную стратегию выполнения запросов, которые ссылаются на данные, расположенные на разных узлах.
8.Управление распределенными транзакциями. Распределенная транзакция – это транзакция, включающая операции, выполняемые на разных узлах. Для фиксации распределенной транзакции (сохранения сделанных изменений) все узлы должны гарантировать, что все операции завершились успешно. Если хоть один из узлов не сможет предоставить такую гарантию, то вся транзакция завершится с ошибкой,
ибудет выполнен откат любых изменений данных внутри области транзакции.
9.Аппаратная независимость. Поскольку распределенные системы часто создаются путем интеграции существующих локальных систем, то должна быть обеспечена возможность совместной работы узлов, построенных на разных аппаратных платформах.
10.Независимость от операционной системы – это требование является следствием предыдущего применительно к программной среде.
11.Независимость от сети. Если система в состоянии поддерживать совместную работу узлов с разным аппаратным и операционным обеспечением, то желательно, чтобы она могла поддерживать разные типы сетей.
12.Независимость от СУБД – это требование определяет возможность создания гетерогенных распределенных систем, в которых локальные данные управляются разнотипными СУБД. Прозрачность
системы для пользователя должна обеспечиваться единым интерфейсом и при необходимости шлюзом7 для организации прозрачного обмена между разными СУБД.
6Репликация – процесс создания и синхронизации копий данных на различных узлах распределенной системы.
7Шлюз – программное обеспечение, которое интерфейс одной СУБД преобразует в интерфейс скрытой СУБД, это приводит к тому, что одна СУБД
выглядит как другая.
37
Стратегии распределения данных
Распределенная база данных предполагает размещение данных на нескольких узлах сети, обработку данных и их передачу между этими узлами в процессе выполнения запросов. Для пользователя (или прикладной программы) не должно иметь значения, каким образом распределены данные между компьютерами. Работа с распределенной базой данных должна осуществляться так же, как и с централизованной. Однако распределение данных по узлам сети влияет на эффективность доступа.
Существует несколько альтернативных стратегий распределения данных (репликаций, фрагментаций), каждая из которых имеет как преимущества, так и недостатки, но главным критерием распределения данных в сети является то, что данные должны находиться там, где существует наибольшая частота обращения к ним [6].
1.Централизация – единственная копия базы данных, расположена на одном узле.
2.Фрагментация – единственная копия базы данных разделяется на непересекающиеся подмножества, которые распределены по различным узлам.
3.Дублирование – на каждом узле располагается полная копия всех данных.
4.Смешанная – объединяет подходы, связанные с фрагментацией
идублированием данных; на каждом узле может содержаться произвольный фрагмент базы данных или полная копия.
Несмотря на то что технологии баз данных получили значительное развитие, включая различные модели данных, такие как документоориентированные, графовые, ключ-значение и другие, а также методы обработки запросов, реляционная модель [28] пока остается эффективным методом организации данных и реляционные базы данных являются наиболее распространенными. Поэтому можно считать, что распределенная база данных представляет собой набор отношений (таблиц) или их фрагментов, хранящихся на разных узлах компьютерной сети и логически связанных таким образом, чтобы составлять единую совокупность данных.
Физическое распределение базы данных по узлам сети осуществляется при помощи фрагментации или тиражирования (дублирования).
38
Фрагментация
Таблицы, принадлежащие реляционной базе данных, могут быть подвергнуты горизонтальной или вертикальной фрагментации.
Горизонтальная фрагментация реализуется при помощи операции селекции, которая направляет каждую запись таблицы в один из фрагментов, руководствуясь предикатом фрагментации (условием селекции). Фактически осуществляется хранение уникальных строк одной логической таблицы в нескольких идентичных по структуре физических таблицах на различных узлах.
Вертикальная фрагментация заключается в том, что разбиение таблицы происходит по столбцам в соответствии с операцией проектирования. Один набор столбцов формирует одну таблицу, другие наборы – другие. Каждая таблица содержит набор уникальных столбцов, за исключением ключевого столбца, который имеется во всех производных таблицах.
За счет фрагментации данные приближаются к месту их наиболее
интенсивного |
использования, |
что |
потенциально снижает затраты |
на пересылку; |
уменьшаются |
также |
размеры таблиц, участвующих |
в пользовательских запросах.
Фрагменты данных могут также тиражироваться с учетом спроса на доступ к ним. Это полезно, если доступ к одним и тем же данным нужен из приложений, выполняющихся на разных узлах. В таком случае с точки зрения экономии затрат более эффективно будет поддерживать копии данных на всех узлах, чем непрерывно пересылать данные между узлами.
Распределенные транзакции
Транзакция – это последовательность действий с данными, в которой либо все действия выполняются успешно (фиксация), либо не выполняется ни одно из них (откат).
Транзакция – это совокупность связанных между собой операций, характеризуемых четырьмя свойствами: атомарностью, непротиворечивостью, локализацией и продолжительностью [6, 7]. Свойства транзакции определяются аббревиатурой (принципом) ACID – Atomicity, Consistency, Isolation, Durability [29]:
атомарность (atomicity) – транзакция неделима, выполняются либо все действия, либо ничего;
39
согласованность (непротиворечивость, consistency) – транзакция переводит одно согласованное состояние БД в другое без соблюдения обязательной поддержки согласованности в промежуточных точках;
изоляция (локализация, isolation) – если запущено несколько конкурирующих между собой транзакций, то любое обновление, выполненное одной из транзакций, будет скрыто от остальных, пока сделавшая изменения транзакция не будет зафиксирована. Результаты транзакции становятся доступны для других транзакций только после
еефиксации;
долговечность (продолжительность, durability) – когда транзакция выполнена, ее обновления сохраняются, даже если в следующий момент произойдет сбой системы.
Транзакцию можно рассматривать как преобразование одного логически согласованного состояния базы данных в другое, причем в промежуточных точках (т. е. во время выполнения транзакции) база данных может находиться в несогласованном состоянии.
Распределенная транзакция – это транзакция, затрагивающая несколько фрагментов (узлов) распределенной базы данных. Для фиксации распределенной транзакции все узлы должны гарантировать, что любое изменение данных будет постоянным. Изменения должны сохраняться даже в случае фатального сбоя системы или других непредвиденных событий. Если хоть один из узлов не сможет предоставить такую гарантию, то вся транзакция завершится с ошибкой и будет выполнен откат любых изменений данных внутри области транзакции [50].
Таким образом, в распределенных системах баз данных необходимо синхронизировать действия локальных систем управления транзакцией, чтобы гарантировать, что изменения в распределенных данных заканчиваются непротиворечивым состоянием для каждой базы данных, а также для всех баз данных.
Выполнение распределенных транзакций осуществляется с помощью специального алгоритма, который называется двухфазной фиксацией. Координатор транзакции – это узел, который контролирует выполнение соответствующего протокола (обычно это тот узел, который инициирует данную транзакцию). Остальные узлы, на которых выполняется транзакция, называются участниками транзакции.
В соответствии с алгоритмом фиксация результатов транзакций выполняется в два этапа: голосование и принятие решения. Основная
40
