
- •20.7. Средства sql
- •20.8. Резюме
- •21.1. Введение
- •21.2. Некоторые аспекты технологам поддержки принятия решений
- •21.3. Проектирование базы данных поддержки принятия решений
- •21.5. Хранилища данных и магазины данных
- •21.6. Оперативная аналитическая обработка
- •21.7. Разработка данных
- •21.8. Резюме
- •22.1. Введение
- •22.2. Хронологические данные
- •22.3. Основная проблема хронологических баз данных
- •22.4. Интервалы
- •22.5. Интервальные типы
- •22.6. Скалярные операторы для интервалов
- •22.7. Операторы обобщения для интервалов
- •22.8. Реляционные операторы для обработки интервалов
- •22.9. Ограничения, включающие интервалы
- •22.10. Операторы обновления, включающие интервалы
- •22.11. Проектирование базы данных
- •22.12. Резюме
- •23.1. Введение
- •23.2. Обзор основных концепций
- •23.3. Исчисление высказываний
- •23.4. Исчисление предикатов
- •23.5. Базы данных с точки зрения доказательно-теоретического подхода
- •23.6. Дедуктивные субд
- •23.7. Обработка рекурсивных запросов
- •23.8. Резюме
- •Часть VI
- •24.1. Введение
- •24.2. Объекты, классы, методы и сообщения
- •24.3. Еще раз об объектах и объектных классах
- •Cdo для класса set (ref(emp))
- •24.4. Простой пример
- •1 | Course с001 , с001 0ffs , с001 ny offs |
- •24.5. Дополнительные аспекты
- •24.6. Резюме
- •25.1. Введение
- •X2 rational, y2 rational ) ... ;
- •25.2. Первая грубейшая ошибка
- •25.3. Вторая грубейшая ошибка
- •25.4. Вопросы реализации
- •25.5. Преимущества реального сближения двух технологий
- •25.6. Резюме
Отметим, что продукт DataJoiner может применяться сторонними поставщиками, которые разрабатывают общие средства (например, средства для написания отчетов, статистические пакеты и т.д.), чтобы не слишком заботиться о различиях между теми продуктами СУБД, на которых предполагается их использовать.
Заключительное слово
Очевидно, что при попытках предоставить полную независимость от СУБД возникают значительные проблемы, даже если все участвующие СУБД являются SQL-системами. Однако в будущем эти усилия должны окупиться с лихвой, даже если решения будут не совсем совершенны. В настоящее время доступно несколько продуктов промежуточного доступа к данным, и их, безусловно, будет еще больше в ближайшем будущем. Но предупреждаем, что решения в таких продуктах неизбежно будут далеки от совершенства, хотя поставщики утверждают обратное (предупреждение автора).
20.7. Средства sql
В настоящее время в языке SQL отсутствует поддержка настоящих распределенных систем. Конечно, в области обработки данных никакой поддержки и не требуется — основная задача распределенной базы данных, с точки зрения пользователя, состоит в том, чтобы сохранить возможности обработки данных неизменными. Тем не менее требуются операции определения данных, такие как FRAGMENT, REPLICATE и т.д. [20.15]. Однако до сих пор такие операции в языке SQL отсутствуют.
С другой стороны, язык SQL поддерживает некоторые возможности системы построения "клиент/сервер", включая, в частности, операторы CONNECT и DISCONNECT для установления и разрыва соединения. В действительности SQL-приложения должны выполнять операцию CONNECT для соединения с сервером, прежде чем они смогут выдать какой-либо запрос к базе данных (хотя такая операция CONNECT может быть и неявной). Как только соединение будет установлено, приложение, т.е. клиент, сможет выдать SQL-запрос обычным порядком и необходимая обработка базы данных будет выполнена сервером.
Язык SQL позволяет клиенту, который подключился к одному серверу, подключиться и к другому серверу. После установления второго соединения первое соединение становится пассивным. Поэтому запросы будут выполняться вторым сервером до тех пор, пока клиент не переключится либо на предыдущий сервер с помощью другой новой операции SET CONNECTION, либо еще на один сервер, и тогда второе соединение также станет пассивным, и т.д. Иначе говоря, в любое время у клиента имеется лишь одно активное соединение и любое количество пассивных соединений и все запросы к базе данных от этого клиента направляются для обработки к серверу, с которым установлено активное соединение.
Замечание. Стандарт языка SQL также позволяет (но не требует), чтобы реализация поддерживала мультисерверные или многоканальные транзакции. В этом случае клиент может переключаться с одного сервера на другой по ходу выполнения транзакции, так что одна часть транзакции выполняется на одном сервере, а другая — на другом. Отметим, в частности, что если для транзакции обновления разрешено охватывать несколько серверов, то реализация должна, по-видимому, поддерживать некий вариант двухфазной фиксации, чтобы обесп|чить атомарность транзакции, как предусмотрено стандартом языка SQL.
И наконец, каждое соединение, обеспечиваемое данным клиентом (то ли активное, то ли пассивное), рано или поздно должно быть отключено с помощью соответствующей операции DISCONNECT, хотя в простых случаях такая операция, как и соответствующая операция CONNECT, может быть неявной.
Дополнительную информацию по данному вопросу можно найти в самом стандарте языка SQL [4.22] или в учебном пособии по этому языку [4.19].
20.8. Резюме
В настоящей главе кратко рассматривались системы распределенных баз данных. В качестве плана изложения использовались двенадцать целей для этих систем [20.14]. Однако еще раз подчеркнем, что не все цели равносильны во всех ситуациях. Также здесь речь шла о технических проблемах, которые возникают в областях обработки запросов, управления каталогом, распространения обновлений, управления восстановлением и управления параллельностью. Обсуждались те вопросы, попытки решения которых должны обеспечить независимость от СУБД; в частности, в разделе 20.6 описывались шлюзы и промежуточное программное обеспечение для доступа к данным. Затем мы познакомились с обработкой данных в системах "клиент/сервер", которая может рассматриваться как специальный случай распределенной обработки данных в целом. Популярность подобных программных продуктов, присутствующих на рынке, постоянно возрастает. В частности, в этой главе перечислялись те аспекты языка SQL, которые отвечают требованиям обработки данных в системах "клиент/сервер", а также подчеркивалось, что пользователи должны избегать программирования на уровне записей, т.е. операций с курсором. Кратко была описана концепция хранимых процедур и вызовов удаленных процедур.
Замечание. Одна из проблем, которую мы не обсуждали совсем, — проблема физического проектирования базы данных для распределенных систем. На самом деле, даже если не учитывать возможность фрагментации и репликации, проблема принятия решения о том, какие данные и на каких узлах должны храниться (так называемая проблема размещения), известна как исключительно сложная [20.33]. Фрагментация и репликация лишь еще больше усложняют этот вопрос.
Заслуживает упоминания тот факт, что на рынке программных продуктов стало заметно присутствие некоторых так называемых .массовых параллельных компьютерных систем (см. аннотацию к [17.58] в главе 17). Такие системы обычно содержат большое количество процессоров, соединенных между собой с помощью высокоскоростной шины. Каждый процессор имеет собственную основную память, собственные дисковые накопители и выполняет собственную копию программного обеспечения СУБД, а полная база данных распределяется по всему набору дисковых накопителей. Другими словами, такие системы, по существу, представляют собой систему распределенных баз данных "в одном пакете". Безусловно, что для подобных систем остаются справедливыми все наши рассуждения по таким вопросам, как стратегия обработки запросов, двухфазная фиксация, ситуация глобальной взаимной блокировки и т.д.
В заключение отметим, что двенадцать целей создания распределенных баз данных (или их подмножество, которое включает по крайней мере цели 4-6 и 8), рассматриваемых совместно, похоже, равносильны правилам "независимости от распределения" Код-да (Codd) для реляционной СУБД [9.5]. Приведем это правило здесь для ссылок.
■ Независимость от распределения (Кодд): "Реляционная СУБД обладает независимостью от распределения... [которая подразумевает, что] СУБД имеет подъязык данных, который позволяет пользовательским программам и процедурам терминальной обработки оставаться логически незатронутыми в следующих ситуациях.
а) Когда распределение данных вводится впервые (если первоначально установ- ленная СУБД оперировала только нераспределенными данными).
б) Когда данные перераспределяются (если СУБД оперирует распределенными данными)".
И наконец отметим, что (как уже упоминалось в этой главе) цели 4-6 и 9-12, т.е. все цели, в названии которых есть слово "независимость", могут рассматриваться как расширение привычного понятия независимости данных на случай его применения для распределенной среды. При этом указанные принципы по сути превращаются в инструмент защиты инвестиций в приложения.
Упражнения
Дайте определение понятиям независимости от расположения, независимости от фрагментации и независимости от репликации.
Почему почти все системы распределенных баз данных являются реляционными?
Какими преимуществами обладают распределенные системы? Какие недостатки им свойственны?
Объясните следующие термины.
стратегия обновления на основе первичной копии стратегия блокировки на основе первичной копии ситуация глобальной взаимной блокировки двухфазная фиксация глобальная оптимизация
Опишите схему присвоения имен объектам в системе R*.
Успешность реализации шлюзов типа "точка-точка" зависит (помимо многих других обстоятельств) от согласования различий в интерфейсах между двумя используемыми СУБД. Рассмотрите любые две знакомые вам SQL-системы и укажите как можно больше различий между их интерфейсами. Учитывайте как синтаксические, так и семантические различия.
Исследуйте любую доступную вам систему "клиент/сервер". Поддерживаются ли в ней явным образом операции установления соединения CONNECT и разрыва соединения DISCONNECT? Поддерживается ли в ней операция SET CONNECTION или какие-либо другие операции с "соединениями"? Поддерживаются ли в ней многосерверные транзакции? Поддерживается ли в ней двухфазная фиксация? Какие форматы и протоколы используются для установки соединений типа "клиент/сервер"? Какие типы сетевых сред в ней поддерживаются? Какое аппаратное обеспечение поддерживается для узлов клиентов и узлов серверов? Какое программное обеспечение (операционная система, СУБД) поддерживается для узлов клиентов и узлов серверов?
20.8. Исследуйте любую доступную вам СУБД, поддерживающую язык SQL. Поддерживаются ли в ней хранимые процедуры? Если поддерживаются, то как они создаются? Как они вызываются? На каких языках они пишутся? Полностью ли в ни> поддерживается стандарт языка SQL? Поддерживаются ли в них условное ветвление (IF-THEN-ELSE) и циклы? Каким образом результаты возвращаются клиенту'. Может ли одна хранимая процедура вызвать другую? А на другом узле? Выполняется ли хранимая процедура как часть вызванной транзакции?
Список литературы
20.1. Anderson Т., Breibart Y., Korth Н. F., Wool A. Replication, Consistency, and Practicality: Are These Mutually Exclusive? // Proc. 1998 ACM SIGMOD Int. Conf. or Management of Data. — Seattle, Wash., June, 1998.
В этой статье описаны три схемы для асинхронной репликации (называемой здесь ленивой), схемы, которые гарантируют атомарность транзакций и их глобальную непрерывность без использования двухфазной фиксации. Также описывается имитационное исследование их относительной производительности. Глобальная блокировка, предложенная в [20.21], используется только в первой схеме. В двух других схемах, первая из которых пессимистическая, а вторая оптимистическая, используется граф репликации. В статье делается вывод, что схемы с графом репликации превосходят схемы с использованием блокировки "обычно с огромным преимуществом".
Bell D., Grimson J. Distributed Database Systems. — Reading, Mass.: Addison-Wesley, 1992. Это одно из нескольких существующих учебных пособий, посвященных теме распределенных систем (два других упоминаются в [20.10] и [20.31]). Особенностью книги является подробное изложение учебного материала на основе примера создания сети в учреждениях здравоохранения. К тому же по сравнению с двумя следующими публикациями она является более практической.
Bernstein P. A. Middleware: A Model for Distributed System Services // CACM.— February, 1996. — 39, № 2.
Из краткого обзора: "Классифицированы различные типы межплатформенного программного обеспечения, описаны их свойства, а также рассмотрен процесс их изменения. Предоставлена концептуальная модель для исследования современных и будущих распределенных систем".
20.4. Bernstein P. A., Rothnie J. В., Shipman D. W. (eds.). Tutorial: Distributed Data Base Management // IEEE Computer Society. — 5855 Naplas Plaza, Suite 301, Long Beach, Calif., 1978.
Сборник статей, сгруппированных в следующие разделы.
Обзор методов управления реляционной базой данных.
Обзор методов управления распределенной базой данных.
Методы обработки распределенных запросов.
Методы управления распределенной параллельностью.
Методы обеспечения надежности распределенной базы данных.
20.5. Bernstein P. A. et al. Query Processing in a System for Distributed Databases (SDD-1) // ACM TODS. — December, 1981. — 6, № 4. '
См. комментарий к [20.34].
20.6. Bernstein P. A., Shipman D. W., Rothnie J. B. Concurrency Control in a System for Dis- tributed Databases (SDD-1) // ACM TODS. — March, 1980. — 5, № 1.
См. комментарий к [20.34].
20.7. Bontempo С. J., Saracco С. M. Data Access Middleware: Seeking out The Middle Ground // InfoDB. — August, 1995. — 9, № 4.
Полезное учебное пособие, в котором внимание акцентируется на продукте DataJoiner корпорации IBM (хотя упоминаются и другие продукты).
Breitbart Y., Garcia-Molina Н., Silberschatz A. Overview of Multi-Database Transaction Management // The VLDB Journal. — October, 1992. — 1, Ns 2.
Bright Y., Hurson A. R., Pakzad S. Automated Resolution of Semantic Heterogeneity in Multi-Databases // ACM TODS. — June, 1994. — 19, № 2.
20.10.Ceri S., Pelagatti G. Distributed Databases: Principles and Systems. — New York, N.Y.: McGraw-Hill, 1984.
20.11.Cohen W. W. Integration of Heterogeneous Databases without Common Domains Using Queries Bases on Textual Similarity // Proc. 1998 ACM SIGMOD Int. Conf. on Management of Data. — Seatle, Wash., June, 1998.
Описывается подход, который иногда называют "проблемой ненужных писем". Он позволяет определить, когда две различные текстовые строки (скажем, "AT&T Bell Labs" и "AT&T Research") ссылаются на один и тот же объект (подразумеваются, конечно, определенные семантические различия). Данный подход включает возможности определения схожести таких строк, "которые рассчитаны на использование модели векторного пространства, применяемой в выборке статистических данных". По мнению авторов статьи, быстродействие этого подхода значительно выше, чем быстродействие "простых методов вывода", и, кроме того, он действительно дает удивительно точные результаты.
20.12.Daniels D. et al. An Introduction to Distributed Query Compilation in R* // Distributed Data Bases (ed. H.-J. Schneider): Proc. 2nd Int. Symposium on Distributed Data Bases. — New York, N.Y.: North-Holland, 1982. См. комментарий к [20.39].
20.13.Date С. J. Distributed Databases // Date C. J. An Introduction to Database Systems: Volume II. Chapter 7. — Reading, Mass.: Addison-Wesley, 1983. Некоторые части данной главы основаны на этой более ранней публикации.
20.14.Date С. J. What is a Distributed Database System? // Date С. J. Relational Database Writings 1985-1989. — Reading, Mass.: Addison-Wesley, 1990. В статье введены двенадцать целей для распределенных систем (раздел 20.3 построен строго в соответствии с этой статьей). Как уже упоминалось, требование локальной автономии не может быть достигнуто на все сто процентов. Поэтому определенные ситуации требуют принятия в этом отношении компромиссных решений, кратко перечисленных ниже.
К отдельным фрагментам переменной-отношения обычно не может быть обеспечен непосредственный доступ даже с того узла, на котором они хранятся.
К отдельным копиям реплицируемой переменной-отношения (или фрагмента) не может быть обеспечен непосредственный доступ даже с того узла, на котором они хранятся.
Пусть Р является первичной копией некоторой регшицируемой переменной-отношения (или фрагмента) R, и пусть Р хранится на узле X. Тогда каждый узел, который обращается к отношению R, зависит от узла X, даже если на этом узле хранится другая копия отношения R.
К переменной-отношению, которая фигурирует в ограничении целостности для многих узлов, нельзя осуществить доступ с целью обновления в локальном контексте узла, на котором она хранится. Это возможно только в контексте распределенной базы данных, для которой задано ограничение.
Узел, который действует как участник процесса двухфазной фиксации, должен строго придерживаться указаний (относительно фиксации или отката) соответствующего узла-координатора.
20.15.Date С. J. Distributed Database: A Closer Look // Date С. J. and Darwen H. Relational Database Writings 1989-1991. — Reading, Mass.: Addison-Wesley, 1992. Продолжение публикации [20.14], в которой более подробно обсуждаются многие из перечисленных в этой главе двенадцати целей (хотя изложение ведется в стиле учебного пособия).
20.16.Date С. J. Why Is It So Difficult to Provide A relation Interface to IMS? // Relational
Database: Selected Writings. — Reading, Mass.: Addison-Wesley, 1986. 20.17.Epstein R., Stonebraker M., Wong E. A Distributed Query Processing in a Relational
Database System // Proc. 1978 ACM SIGMOD Int. Conf. on Management of Data. —
Austin, Tx., May-June, 1978.
См. комментарий к [20.36]. 20.18.Goldring R. A Discussion of Relational Database Replication Technology // InfoDB. —
1994. —8, № 1.
Прекрасный обзор асинхронной репликации. 20.19.Grant J., Litwin W., Roussopoulos N., Sellis T. Query Languages for Relational Multi-Databases // The VLDB Journal. — April, 1993. — 2, № 2.
В статье предлагаются расширения реляционной алгебры и реляционного исчисления в отношении систем со многими базами данных. В ней обсуждаются вопросы оптимизации, а также показывается, что каждое выражение реляционной алгебры для нескольких отношений имеет эквивалент в реляционном исчислении для нескольких отношений ("обратная теорема представляет собой интересную научную задачу").
20.20.Gray J. N. A Discussion of Distributed Systems // Proc. Congresso AICO 79. — Bari, Italy, October, 1979. (Эта статья также опубликована в виде отчета: IBM Research Report RJ2699. — 1979.)
Краткий, но очень удачный обзор и одновременно учебное пособие. 20.21.Gray J., Helland P., O'Neil P., Shasha D. The Dangers of Replication and a Solution // Proc. 1996 ACM SIGMOD Int. Conf. on Management of Data. — Montreal, Canada, June, 1996.
Цитата из резюме: "Распространение обновления в общем случае становится все более нестабильным при увеличении рабочей нагрузки... Предлагается новый алгоритм, предусматривающий мобильные (отсоединенные) приложения для предварительных транзакций обновления, которые затем применяются и к главной копии".
20.22.Gupta R., Haritsa J., Ramamritham K. Revisiting Commit Processing in Distributed Database Systems // Proc. 1997 ACM SIGMOD Int. Conf. on Management of Data.— Tucson, Ariz, May, 1997.
Предлагается новый протокол распределенной фиксации, называемый ОРТ, который можно легко реализовать и использовать вместе с традиционными протоколами и который "обеспечивает наиболее высокую эффективность выполнения транзакции для различных рабочих нагрузок и системных конфигураций".
20.23.Hackathorn R. D. Interoperability: DRDA or RDA? // InfoDB. — 1991. — 6, № 2.
20.24.Hammar M., Shipman D. Reliability Mechanism for SDD-1; A System for Distributed Databases // ACM TODS. — December, 1980. — 5, № 4. См. комментарий к [20.34].
20.25.IBM Form №SC26-4651. IBM Corporation: Distributed Relational Database Architecture Reference.
В стандарте DRDA, разработанном фирмой IBM, заданы четыре уровня функциональности распределенной базы данных.
Удаленный запрос.
Удаленная часть работы.
Распределенная часть работы.
Распределенный запрос.
Поскольку эти термины фактически стали стандартами программного обеспечения, по крайней мере некоторой его части, здесь следует объяснить их немного подробнее. Замечание. Термины "запрос" и "часть работы" предложены специалистами фирмы IBM для понятий оператор SQL и транзакция соответственно.
Удаленный запрос. Означает, что приложение на узле X может отослать для выполнения отдельный SQL-оператор некоторому удаленному узлу Y. Этот запрос полностью выполняется и фиксируется (или откатывается) на узле Y. Исходное приложение на узле X может впоследствии отослать другой запрос узлу Y (или, возможно, третьему узлу Z) независимо от того, был ли первый запрос успешным.
Удаленная часть работы. Означает, что приложение на одном узле X может отсылать на некоторый удаленный узел Y для выполнения все запросы к базе данных в составе некоторой заданной "части работы" (т.е. транзакции). Таким образом, обработка транзакции для этой базы данных выполняется целиком на удаленном узле Y. Однако решение о том, будет ли данная транзакция завершена или отменена, принимается на локальном узле X.
Замечание. Удаленная часть работы, по сути, является некоторым процессом в системе "клиент/сервер" с единственным сервером.
3. Распределенная часть работы. Означает, что приложение на одном узлеУ может отсылать к одному или нескольким удаленным узлам Y, Z, ... для выпол- нения некоторые запросы или все запросы к базе данных в составе некоторой заданной "части работы" (т.е. транзакции). Таким образом, обработка транзак- ции для этой базы данных в общем случае выполняется на нескольких узлах.
Причем каждый индивидуальный запрос может выполняться полностью на отдельном узле, а смешанные запросы — на нескольких различных узлах. Однако локальный узел X все еще остается координатором, т.е. решение о том, будет ли данная транзакция выполнена, принимается на этом узле.
Замечание. Распределенная часть работы фактически является некоторым процессом в системе "клиент/сервер" с несколькими серверами. 4. Распределенный запрос. Это единственный из всех четырех уровней, который наиболее близок к понятию поддержки истинной распределенной базы данных. Понятие "распределенный запрос" означает то же самое, что и "распределенная часть работы", плюс разрешение на выполнение индивидуальных запросов (SQL-операторов) к базе данных с охватом нескольких узлов. Например, согласно запросу, поступившему от узла X, может потребоваться выполнить объединение или соединение таблицы на узле Y и таблицы на узле Z. Отметим, что только на этом уровне о системе можно сказать, что она обладает истинной независимостью от расположения. Во всех трех предыдущих случаях пользователь должен иметь сведения о физическом расположении данных. 20.26. Документ ISO DIS 9579-1. Information Processing Systems, Open Systems Interconnection,
Remote Data Access Part 1: Generic Model, Service, and Protocol. — March, 1990. 20.27.Документ ISO DIS 9579-2. Information Processing Systems, Open Systems Interconnection, Remote Data Access Part 2: SQL Specialization. — February, 1990. 20.28.Lindsay B. G. et al. Notes on Distributed Databases // IBM Research Report RJ2571. — July, 1979.
Эта статья некоторыми членами команды разработчиков системы R* разделена на пять глав.
Реплицируемые данные.
Права доступа и представления.
Введение в управление распределенными транзакциями.
Инструменты восстановления.
Инициирование, миграция и завершение выполнения транзакции.
В главе 1 обсуждается проблема распространения обновлений. Глава 2, за исключением нескольких замечаний в самом ее конце, почти полностью посвящена вопросам предоставления прав доступа в нераспределенной системе (в стиле системы R). В главе 3 очень кратко рассматриваются вопросы инициирования, миграции и завершения выполнения транзакций, а также управления параллельностью и восстановлением. Глава 4 посвящена восстановлению, опять же, в нераспределенной системе. Наконец, в главе 5 более подробно обсуждается управление распределенными транзакциями, в частности дается детальное описание протокола двухфазной фиксации.
20.29.Mohan С, Lindsay В. G. Effecient Commit Protocols for the Tree of Processes Model of Distributed Transaction // Proc. 2nd ACM SIGACT-SIGOPS Symposium on Principles of Distributed Computing. — 1983. См. комментарий к [20.39].
20.30. Newman S., Gray J. Which Way to Remote SQL? // DBP&D. — December, 1991. — 4, № 12. См. комментарий к [20.39].
20.31.Oszu M. Т., Valduriez P. Principles of Distributed Database Systems (2nd edition).— Englewood Cliffs, N.J.: Prentice-Hall, 1999.
20.32. Rennhackkamp M. Mobile Database Replication // DBMS. — October, 1997. — 10, № 11. Благодаря невысокой стоимости и портативности компьютеров, а также наличию беспроводных коммуникаций стало возможным появление систем распределенных баз данных нового типа, которые имеют свои специфические преимущества и недостатки. В частности, данные в таких системах могут быть реплицированы буквально на тысячи "узлов", но эти узлы мобильны, часто отключаются, их операционные характеристики очень отличаются от характеристик обычных узлов (например, в стоимость соединений входит и использование аккумуляторных батарей, и время соединения) и т.д. Исследования таких систем начаты сравнительно недавно (см. [20.1], [20.21]). В этой краткой статье освещены некоторые принципиальные концепции и проблемы.
20.33.Rothnie J. В., Goodman N. A Survay of Research and Development in Distributed Database Management // Proc. 3rd Int. Conf. on Very Large Data Bases. — Tokyo, Japan, October, 1977. (Эта статья также опубликована в [20.4].) Очень полезный обзор следующих тем.
Синхронизация транзакций обновления.
Обработка распределенного запроса.
Управление при неисправностях компонентов.
Управление каталогом.
Проектирование базы данных.
Последняя тема относится к проблеме физического проектирования, которая в разделе 20.8 называется проблемой размещения.
20.34.Rothnie J.B. et al. Introduction to a System for Distributed Databases (SDD-1) // ACM TODS. — March, 1980. — 5, № 1.
Работы [20.5], [20.6], [20.24], [20.34] и [20.40] связаны с ранним вариантом распределенной системы SDD-1, которая работала на нескольких компьютерах PDP-10s фирмы DEC, подключенных к сети Arpanet. В этой системе обеспечивалась полная независимость от размещения, фрагментации и репликации. Ниже приводится несколько замечаний по поводу некоторых ее особенностей.
Обработка запросов. Оптимизатор запросов в системе SDD-1 (см. [20.5] и [20.40]) в значительной мере использует оператор полусоединения, который упоминался в главе 6. Преимущество использования полусоединений при обработке распределенных запросов заключается в том, что они могут привести к сокращению объема данных, пересылаемых по сети. Предположим, например, что переменная-отношение поставщиков S хранится на узле А, переменная-отношение поставок SP — на узле В, а запрос формулируется следующим образом: "Определите результат соединения отношений поставщиков и поставок". Вместо того чтобы пересылать все отношение S на узел В, можно выполнить перечисленные ниже действия.
Вычислить проекцию (TEMPI) переменной-отношения SP по атрибуту SI на узле В.
Переслать проекцию TEMPI на узел А.
Вычислить полусоединение (ТЕМР2) проекции TEMPI и отношения S по атрибуту St на узле А.
Переслать полусоединение ТЕМР2 на узел В.
Вычислить полусоединение проекции ТЕМР2 и отношения SP по атрибуту S# на узле В. В результате будет получен ответ на сформулированный выше запрос.
Эта процедура, очевидно, приведет к значительному сокращению пересылки данных по сети тогда и только тогда, когда выполняется следующее условие.
size (TEMPI) + size (ТЕМР2) < size (S)
Здесь функция size() возвращает кардинальность отношения, указанного в качестве аргумента, умноженную на длину отдельного кортежа (скажем, в битах). Это позволяет оптимизатору оценивать размер промежуточных результатов типа TEMPI и ТЕМР2.
Распространение обновления. Алгоритмом распространения обновления в системе SDD-1 предусматривается "немедленное распространение" (понятие первичной копии в ней не вводится).
Управление параллельностью. Управление параллельностью основано не на механизме блокировок, а на методе синхронизации с использованием времен-иых отметок. Цель выбора этого метода состоит в попытке избежать дополнительных накладных расходов на отправку сообщений о блокировке, однако расплатой за это будет относительно небольшая степень параллельности! Дополнительные подробности в этой книге не приводятся, хотя в аннотации к [15.3] очень кратко описана основная идея. Более подробную информацию можно получить в [20.6] и [20.13].
Управление восстановлением. Восстановление основано на протоколе четырех-фазной фиксации, который был выбран для того, чтобы в случае выхода из строя координирующего узла обеспечить большую гибкость всего процесса, чем при использовании обычного протокола двухфазной фиксации. При такой организации управления, к сожалению, процесс, в целом, значительно усложняется. Дополнительные подробности в этой книге не приводятся.
Каталог. Каталог управляется так же, как и обычные пользовательские данные, т.е. он может быть произвольно фрагментирован, а сами фрагменты могут быть реплицированы и распространяться произвольным образом, как и любые другие данные. Преимущества такого подхода очевидны, а недостатки, к сожалению, состоят в том, что, поскольку система не обладает никакими сведениями о расположении произвольной части каталога, ей для хранения таких сведений необходимо придерживать каталог более высокого уровня, который полностью реплицируется, т.е. на каждом узле должна храниться его копия.
20.35.Selinger P. G., Adiba М Е. Access Path Selection in Distributed Data Base Management Systems // S.M. Deen and P. Hammersley. Proc. Int. Conf. On Data Bases. — Aberdeen, Scotland; England: Heyden and Sons Ltd., 1980. См. комментарий к [20.39].
20.36.Stonebraker M. R., Neuhold E. J. Distributed Data Base Version of Ingres // Proc. 2nd Berkley Conf. On Distributed Data Management and Computer Networks. — Lowrence Berkley Laboratory, May, 1977.
Работы [20.17], [20.36] и [20.37] связаны с прототипом распределенной системы INGRES. Распределенная система Distributed Ingres состоит из нескольких копий программного обеспечения University Ingres, установленных и запущенных на нескольких компьютерах PDP-1 Is фирмы DEC. Она поддерживает независимость от расположения (как в системах SDD-1 и R*), независимость от фрагментации, репликацию данных для фрагментов и независимость от репликации. В отличие от систем SDD-1 и R* в системе Distributed Ingres не предполагается, что передача данных в сети обязательно должна быть медленной; наоборот, эта система спроектирована как для медленных сетей дальней связи, так и для сравнительно быстрых локальных сетей. Причем оптимизатор запросов может обнаружить разницу между двумя этими случаями. Алгоритм оптимизации запросов является расширением стратегии декомпозиции системы Ingres, описанной в главе 17. Более подробно он рассматривается в [20.17].
В системе Distributed Ingres обеспечиваются два алгоритма распространения обновления: "эффективный" алгоритм, согласно которому обновляется первичная копия и управление возвращается данной транзакции (причем распространение обновлений выполняется параллельно с помощью набора подчиненных процессов), а также "надежный" алгоритм, согласно которому все копии обновляются одновременно [20.37]. В обоих случаях управление параллельностью основано на механизме блокировки, а управление восстановлением — на протоколе двухфазной фиксации (с некоторыми усовершенствованиями).
Что касается каталога, в системе Distributed Ingres используется полная репликация для некоторых частей каталога, в основном тех, которые содержат логическое описание видимых для пользователя переменных-отношений, а также описание того, как эти переменные-отношения фрагментированы. К тому же с полной репликацией комбинируются элементы локальных каталогов других частей, например описывающих локальные физические структуры хранения, локальную статистику базы данных (используемую оптимизатором), а также ограничения целостности и правила безопасности.
20.37. Stonebraker М. R. Concurency Control and Consistency of Multiple Copies in Distributed
Ingres // IEEE Transactions on Software Engineering. — May, 1979. — 5, № 3.
См. комментарий к [20.36]. 20.38,Wen-Syan Li and Clifton C. Semantic Integration in Heterogeneous Databases Using
Neural Networks // Proc. 20th Int. Conf. on Very Large Data Bases. — Santiago, Chile,
September, 1994.
20.39. Williams R. et al. R*: An Overview of the Architecture // P. Scheuermann. Improving Database Usability and Responsiveness. — New York, N.Y.: Academy Press, 1982. (Эта работа также опубликована в виде отчета: IBM Research RJ3325. — December, 1981.)
В работах [20.12], [20.29], [20.35] и [20.39] обсуждается система R*, которая является распределенной версией системы System R. В системе R* обеспечивается независимость от расположения, но не поддерживаются фрагментация и репликация, а значит, не обеспечивается независимость от фрагментации и репликации. По той же причине для данной системы не возникает вопрос о распространении обновления. Управление параллельностью основано на механизме блоки
ровки (обратите внимание, что существует только одна копия любого блокируемого объекта; при этом вопрос о первичной копии также не возникает). Управление восстановлением основано на протоколе двухфазной фиксации, но с некоторыми усовершенствованиями.
20.40. Wong Е. Retrieving Dispersed Data from SDD-1: A System for Distributed Databases. (Опубликовано в [20.4].) См. комментарий к [20.34].
20.41.Yu С. Т., Chang С. С. Distributed Query Processing // ACM Сотр. Surv. — 1984. — 16, №4.
Здесь представлен материал по методам оптимизации запросов в распределенных системах, а также приведена обширная библиография.
Глава
21
Поддержка принятия решений