Распределенное хранение данных

Распределенные базы данных можно рассматривать как подвид распределенных вычислительных систем, занимающихся обработкой данных. Распределенная вычислительная система состоит из совокупности обрабатывающих элементов (не обязательно однородных), которые соединены между собой с помощью коммуникационной сети и которые взаимодействуют между собой при решении некоторой общей задачи. Можно выделить два преимущества такой системы: (1) увеличение мощности системы при решении общей задачи и (2) возможность автономной работы отдельных элементов системы. Таким образом, мы можем определить распределенную базу данных (Distributed Database – DDB), как совокупность логически взаимосвязанных баз данных, распределенных в компьютерной сети, и распределенную СУБД (Distributed Database Management System– DDBMS) как совокупность программ предназначенных для управления распределенной базы данных.

Существует два основных способа организации распределенной БД с распределенным хранением данных: фрагментация и репликация (тиражирование). Фрагментация, в свою очередь, бывает горизонтальной и вертикальной. При горизонтальной фрагментации разбиение происходит за счет помещения в отдельные таблицы с одинаковой структурой не перекрывающихся групп строк. При вертикальной фрагментации разбиение происходит по столбцам, одни столбцы формируют одну таблицу, другие – другую. При этом для сохранения идентификации целой записи в отдельных фрагментах приходится в каждый фрагмент добавлять первичный ключ таблицы. Информация о местоположении каждого фрагмента обычно хранится в так называемом глобальном словаре данных, который в свою очередь также может быть распределенным. При раздельном хранении фрагментов данных СУБД должна обеспечивать такой механизм работы, чтобы для программ и пользователей распределенная система воспринималась как единая централизованная БД.

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

Первым фактором, по которому можно различать распределенные БД, является степень однородности. Если все пользователи РБД используют одно и тоже программное обеспечение (СУБД) для доступа к данным, и если данные, расположенные на всех компьютерах сети, контролируются все той же СУБД, то такую РБД называют однородной. В противном случае – неоднородной или гетерогенной.

Второй фактор – это степень автономности. С одной стороны, мы можем иметь РСУБД с полным отсутствием локальной автономности, которая имеет единую концептуальную схему данных, единый центр обработки запросов и транзакций, где части единой БД просто распределены по разным компьютерам. С другой стороны, мы можем иметь РСУБД, которая хоть и имеет некоторую общую схему данных, но составлена из полностью автономных СУБД. Такая СУБД называется федеративной СУБД (Federated Database System – FDBMS). Федеративная СУБД может быть даже составлена из СУБД, поддерживающих различные модели данных, типы, ограничения и языки манипулирования данными. Такой вариант распределенной СУБД является более надежным и перспективным, но связан со значительными сложностями реализации. Проблемы в таких системах могут возникать не только вследствие отличия поддерживаемых моделей данных, но и вследствие совпадения имен таблиц и полей, и наоборот, когда поля с одинаковыми именами могут обозначать разные данные. Федеративная СУБД поддерживает глобальную схему, на основании которой пользователи могут строить распределенные запросы и обновлять данные. Федеративная СУБД работает только с общей схемой данных, поскольку все локальные СУБД имеют свои собственные схемы данных и собственными средствами обеспечивают доступ к данным всех их пользователей. Глобальная схема создается посредством слияния локальных схем данных. Программное обеспечение федеративной СУБД предварительно транслирует глобальные запросы в запросы к локальным БД. Затем результаты всех локальных запросов объединяются и предоставляются пользователю.

Архитектура РСУБД может быть представлена следующим образом (рис. 6.4) (основываясь на трехуровневой архитектуре БД ANSI/SPARC).

Рис. 6.4. Архитектура РСУБД

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

Распределенные БД имеют дополнительные преимущества перед традиционными централизованными БД, но не лишены и некоторых недостатков.

Распределенная БД обладает следующими преимуществами:

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

2. Управление распределенными данными на разных уровнях «прозрачности». В идеальном варианте реальное расположение данных должно быть полностью скрыто от пользователя. Он должен работать с распределенной БД как с системой, расположенной в одном месте;

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

4. Увеличение производительности. В распределенных БД фрагменты данных можно разместить там, где они наиболее нужны. Следовательно, падает нагрузка на сеть при пересылке данных. Когда большая БД распределена по локальным компьютерам, размер фрагмента данных на локальном компьютере будет много меньшим, что также приведет к увеличению скорости работы с БД;

5. Увеличение гибкости реорганизации за счет модульности системы.

a. К недостаткам таких систем можно отнести:

6. Повышение сложности. РБД, способные скрыть от пользователей распределенную природу используемых ими данных, являются много более сложными программными комплексами;

7. Усложнение контроля за целостностью данных;

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

9. Повышение сложности, влекущее увеличение стоимости и срока разработки РБД.