Теория и практика построения баз данных (1088289), страница 140
Текст из файла (страница 140)
Типы распределенных баз данных Есть несколько типов распределенных баз данных. Взгляните сначала на рнс. 17.5, а, на котором изображена нераспределснная база данных, состоящая из четырех частей — !У, Х, У и 2. Все зтн четыре сегмента расположены в одном и том же месте, и дублирование данных отсутствует. Теперь рассмотрим распределенные базы данных, изображенные на рис. 17.5, б-г. На рис. 17.5, б изображен первый тип распределенной базы данных, где база данных расположена на двух компьютерах — сегменты тУ и Х хранятся на компьютере 1, а сегменты У и 2 — на компьютере 2.
На рис. 17.5, в вся база данных продублирована (реплицирована) на двух компьютерах. Наконец, на рис. 17.5, г база данных разделена, а ее сегмент у продублирован, По отношению к разделению баз данных иногда употребляются два теркшна. Вергликальнвсм разделом (кегтгса! рагс!г!оп), пли вергликалы~ьсн фрахнептом (уегт!са! !таящепг), называется таблица, разделенная на две или более совокупности столбцов. Например, таблица к (С1, С2, СЗ, С4) может быть разделена на два вертикальных фрагмента: Р1 !С1, С2) и Р2 (СЗ, С4). В зависимости от приложения и от причины, по котороп производится разделение, ключ отношения К, скорее всего, будет помещен в отношение Р2, которое примет вид Р2 (С1, СЗ, С4). Горизоятготьный раздел (Ьог!гонга! рагс!г!оп), илп горизоилггьтьный фригмелтл (Ьонгопга! Сгаяшепт), — это фрагмент таблицы, представгиющий собой совокупность строк.
Например, если первые 1000 строк отношения В помещаются в отношение й1 !С1, С2, СЗ, С4), а оставшиеся строки полгещаются в отношение й2 (С1, С2, СЗ, С4), то отноцгения й1 и Р2 образуют два горизонтальных фрагмента. Иногда база данных разбивается и на горизонтальные, и на вертикальные разделы, и результат такого разделения называется смецгаггнььн ризделсзг (пт!хес) раггйгоп). Континуум Распределенные базы данных Единая база данных Разделенные реплицированные Линия связи Возрастание параллелизма Возрастание независимости Повышение гибкости Автономный компьютер Повышение доступности Компьютер 2 БД (копиЯ 2) К БД1 Увеличение стоимости/сложности Ь" Возрастание трудности в управлении з Повышение риска для безопасности системы .3 Линия связи Компьютер 2 652 Глава 17.
Совместное использование данных предприятия ПП1 уу Х у СУБД/ОС У БД2 Компьютер 1 Линия связи б ПП2 СУБД/ОС БД2 Компьютер 2 г Рис. 17.Б. Типы распределенных баз данных: а — неразделенная, нереплицированная; б — разделенная, нереплицираванная; в — неразделенная, реплицированная/ г — разделенная, реплицироаанная Сравнение различных типов распределенных баз данных Сравнение баз данных с различной степенью распределения приведено на рис.
17.6, Четыре типа баз данных расположены на рисунке слева направо по возрастанию степени разделения. Нераспределенная база данных находится в крайней левой точке отрезка оси сравнения, а распределенная и реплипнрованная база данных — в крайней правой. Разделы хранятся на двух или более компьютерах, а неразделенная база данных целиком дуолируется на двух или более компьютерах. Характеристики этих альтернатив тоже указаны на рис. 17.6. Слева направо возрастают параллелизм, независимость, гибкость и доступность, однако при этом повьпиаются стоимость, сложность, трудность в управлении и риск несанкционированного доступа.
Архитектуры организационных систем обработки данных 653 Единые Разделенныв Неразделенные неразделенные нервплицироаанные реплкцированные нереплицированные Рис. 17.6. Характеристика баз данных по степени распределения Одно из этих преимуществ имеет особенное значение для бизнеса. Варианты, расположенные справа на рис, 17.6, обладаю~ большей гибкостью и, следовательно, могут быть лучше приспособлены под конкретную организационную структуру и бизнес-процессы. Например, компанию-производителя с высокой степенью децентрализации, в которой менеджерам-технологам предоставлена большая свобода в планировании, не сможет удовлетворить информационная система, изображенная на рис. 17.5, а, поскольку структура этой системы войдет в конфликт со структурой компании. Таким образом, альтернативы, расположенные в правой части рисунка, в большей степени подходят этой организации, чем те, которые находятся слева.
Наибольшим недостатком распределения является сложность управления и обусловленная этим потенциальная опасность потери целостности данных, Рассмотрим архитектуру базы данных на рис. 17.5, г. Пользователь, сидящий за компьютером 1, может читать и обновлять элемент данных раздела т', расположенный на компьютере 1, одновременно с тем, как этот же элемент раздела т', расположенный на компьютере 2, будет читаться и обновляться пользователем, сидящим за компьютером 2. Методы распределенной обработки В разных СУБД применякжся различные способы распределенной обработки.
В Огас!е и БАЕВ 5егуег поддержка распределенной обработки осуществляется сходным образом, но одни и те же вещи называются по-разному, и наоборот— разные вещи имеют одинаковые названия. У других производителей также имеется своя терминология. Здесь мы сосредоточимся на основных идеях. Простейшим способом обработки распределенной базы данных является загрузка данных только для чтенгш. В этом случае обновлением всех данных в базе 654 Глава 17.
Совместное использование данных предприятия Загрузка данных 655 занимается только один компьютер, но копии данных только для чтения могут посылаться на множество (возможно, тысячи) компьютеров. В Огас1е такие копии, предназначенные только для чтения, называются лгапгериализоваггггыми представлепиялги (щасег1а11гег1 чгвчгз). В эЩ Беггег эти копии называются моментальными тгимкалги (зпарзЬосз). Этот тип распределенной обработки мы будем рассматривать в следующем разделе.
При более сложном способе распределенной обработки запросы на обновление данных могут приходить со множества компьютеров, но на обработку они передаются одному специализированному компьютеру. Например, компьютер А может быть определен как единственный компьютер, который может обновлять таблицу СОТРУДНИК (н основанные на ней представления), а компьютер Б может быть определен как единственный комш югер, которому разрешено обновляп, таблицу КЛИСНТ (и ее представления).
Время от времени обновления должны передаваться обратно на все компьютеры в распределенной сети, и базы данных должны синхронизироваться. Наиболее сложный способ заключается в том, чгобы разрешить множественное обновление одних и тех же данных в различных местах. В этом случае могут возникнуть три вида конфликтов распределтгггих обновлений (с(1зсг)Ьцсес1 црс(асс соп(11ссз). Во-первых, может быть нарушена уникальность. В базе данных галереи 'хгегг Рсс1йе два разных компьютера могут создать в таблице РОгг строку с одинаковыми значениями столбцов Сору, ТгС(е и АгСгзС10. Другая возможность напоминает проблему потерянного обновления; на двух компьютерах может обновляться одна и та же строка. Третий конфликт возникает в ситуации, когда на одном компьютере обновляется строка, удаленная на другом компьютере.
Для разрешения конфликтов обновлений выделяется специальный компьютер. Он следит за всеми обновлениями, н возникающие конфликты разрешаются либо собственнылгн средствами СУБД, либо приложениями, подобно тому как это делается в триггерах. В самых крайних случаях делается запись о конфликте в журнале, и он разрешается вручную. Последний способ не рекомендуется, поскольку до устранения конфликта множество строк в работающих базах данных могут зависнуть в неопределенном положении, что приведет к неприемлемому снижению пропускной способности информационной системы предприятия. Ни один из этих способов не решает проблемы обеспечения атомарности транзакций в распределенной базе данных, Эта проблема становится особенно важной, если имеется вероятность конфликтов обновлений. В какой момент работу с базой данных можно считать выполненной? Если во время разрешения конфликта распределенных обновлений должен произойти откат обновлений, то потенциально возможно, что распределенная транзакция не будет выполнена в течение нескольких часов пли дажс суток.
Ясно, что такая задержка неприемлема. Если оставить в стороне конфликты распределенных обновлений, остается еще один сложный вопрос — координация распределенных транзакций. Чтобы транзакция была атомарной, ни одно обновление в распределенной транзакции не должно быть сохранено, пока не будут сохранены все действия транзакции.
Это означает, что каждый компьютер должен записать свои обновления условно и ожидать от диспетчера распределенных транзакций уведомления о том, что действия всех остальных компьютеров также записаны. Для этой цели использу- ется алгоритм, называемый двухфазггой фиксацией (ссго-рЬазе сощщ1с). У компании М(сгозо(с имеется служба 01Е под названием Пглгггйигегг' Тгапласггоп 5егпгсе (служба распределенных транзакций), или ЙТу, реализующая двухфазную фиксацию. В мире )асга для этого используется технология Епсегрг1зе 1ача Веапз.