Распределенная СУБД - Краткое руководство

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

В этой главе дается обзор баз данных и систем управления базами данных (СУБД). База данных - это упорядоченный набор связанных данных. СУБД - это программный пакет для работы с базой данных. Подробное изучение СУБД доступно в нашем руководстве под названием «Изучение СУБД». В этой главе мы пересматриваем основные концепции, чтобы можно было легко изучить DDBMS. Рассматриваются три темы: схемы баз данных, типы баз данных и операции с базами данных.

База данных и система управления базами данных

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

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

А database management systemпредставляет собой набор программ, позволяющих создавать и поддерживать базу данных. СУБД доступна в виде программного пакета, который упрощает определение, построение, обработку и совместное использование данных в базе данных. Определение базы данных включает описание структуры базы данных. Построение базы данных предполагает фактическое хранение данных на любом носителе. Под манипуляциями понимается получение информации из базы данных, обновление базы данных и создание отчетов. Совместное использование данных упрощает доступ к данным для разных пользователей или программ.

Примеры областей применения СУБД

  • Банкоматы
  • Система бронирования поездов
  • Система управления персоналом
  • Информационная система для студентов

Примеры пакетов СУБД

  • MySQL
  • Oracle
  • SQL Server
  • dBASE
  • FoxPro
  • PostgreSQL и др.

Схемы базы данных

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

Базы данных часто представлены через three-schema architecture или же ANSISPARC architecture. Цель этой архитектуры - отделить пользовательское приложение от физической базы данных. Три уровня -

  • Internal Level having Internal Schema - Он описывает физическую структуру, детали внутреннего хранилища и пути доступа к базе данных.

  • Conceptual Level having Conceptual Schema- Он описывает структуру всей базы данных, скрывая при этом детали физического хранения данных. Это иллюстрирует сущности, атрибуты с их типами данных и ограничениями, пользовательские операции и отношения.

  • External or View Level having External Schemas or Views - Он описывает часть базы данных, относящуюся к конкретному пользователю или группе пользователей, при этом скрывая остальную часть базы данных.

Типы СУБД

Существует четыре типа СУБД.

Иерархическая СУБД

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

Сетевая СУБД

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

Реляционная СУБД

В реляционных базах данных база данных представлена ​​в виде отношений. Каждое отношение моделирует сущность и представляется в виде таблицы значений. В отношении или таблице строка называется кортежем и обозначает одну запись. Столбец называется полем или атрибутом и обозначает характеристическое свойство объекта. РСУБД - самая популярная система управления базами данных.

Например - Отношения со студентами -

Объектно-ориентированная СУБД

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

Например - упрощенная объектно-ориентированная база данных банковских счетов -

Распределенная СУБД

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

Операции с СУБД

Четыре основные операции с базой данных - это создание, получение, обновление и удаление.

  • CREATE структура базы данных и заполнение ее данными - создание связи с базой данных включает определение структур данных, типов данных и ограничений данных, которые должны быть сохранены.

    Example - Команда SQL для создания таблицы учеников -

CREATE TABLE STUDENT ( 
   ROLL INTEGER PRIMARY KEY, 
   NAME VARCHAR2(25), 
   YEAR INTEGER, 
   STREAM VARCHAR2(10) 
);
  • Как только формат данных определен, фактические данные сохраняются в соответствии с форматом на некотором носителе.

    Example Команда SQL для вставки одного кортежа в таблицу учеников -

INSERT INTO STUDENT ( ROLL, NAME, YEAR, STREAM) 
VALUES ( 1, 'ANKIT JHA', 1, 'COMPUTER SCIENCE');
  • RETRIEVEинформация из базы данных - получение информации обычно включает в себя выбор подмножества таблицы или отображение данных из таблицы после выполнения некоторых вычислений. Это делается путем запроса к таблице.

    Example - Чтобы получить имена всех студентов потока информатики, необходимо выполнить следующий запрос SQL -

SELECT NAME FROM STUDENT 
WHERE STREAM = 'COMPUTER SCIENCE';
  • UPDATE информация, хранящаяся и изменяющая структуру базы данных. Обновление таблицы включает изменение старых значений в строках существующей таблицы на новые.

    Example - Команда SQL для изменения потока с электроники на электронику и связь -

UPDATE STUDENT 
SET STREAM = 'ELECTRONICS AND COMMUNICATIONS' 
WHERE STREAM = 'ELECTRONICS';
  • Изменение базы данных означает изменение структуры таблицы. Однако на изменение таблицы накладывается ряд ограничений.

    Example - Чтобы добавить новое поле или столбец, например адрес в таблицу учеников, мы используем следующую команду SQL -

ALTER TABLE STUDENT 
ADD ( ADDRESS VARCHAR2(50) );
  • DELETE сохраненная информация или удаление таблицы в целом. Удаление определенной информации включает удаление выбранных строк из таблицы, удовлетворяющих определенным условиям.

    Example- Чтобы удалить всех учащихся 4- го курса, когда они теряют сознание, мы используем команду SQL -

DELETE FROM STUDENT 
WHERE YEAR = 4;
  • В качестве альтернативы, вся таблица может быть удалена из базы данных.

    Example - Чтобы полностью удалить таблицу учеников, используется команда SQL -

DROP TABLE STUDENT;

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

А distributed database представляет собой набор нескольких взаимосвязанных баз данных, которые физически распределены по разным адресам и обмениваются данными через компьютерную сеть.

Особенности

  • Базы данных в коллекции логически взаимосвязаны между собой. Часто они представляют собой единую логическую базу данных.

  • Данные физически хранятся на нескольких сайтах. Данными на каждом сайте можно управлять с помощью СУБД независимо от других сайтов.

  • Процессоры на сайтах связаны через сеть. У них нет многопроцессорной конфигурации.

  • Распределенная база данных - это не слабо связанная файловая система.

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

Распределенная система управления базами данных

Система управления распределенной базой данных (DDBMS) - это централизованная система программного обеспечения, которая управляет распределенной базой данных таким образом, как если бы все они хранились в одном месте.

Особенности

  • Он используется для создания, получения, обновления и удаления распределенных баз данных.

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

  • Это гарантирует, что данные, измененные на любом сайте, будут постоянно обновляться.

  • Он используется в прикладных областях, где обрабатываются большие объемы данных, и к ним одновременно обращаются многочисленные пользователи.

  • Он разработан для платформ гетерогенных баз данных.

  • Он поддерживает конфиденциальность и целостность данных в базах данных.

Факторы, способствующие DDBMS

Следующие факторы способствуют переходу на DDBMS:

  • Distributed Nature of Organizational Units- Большинство организаций в настоящее время подразделяются на несколько подразделений, которые физически распределены по всему миру. Каждому устройству требуется собственный набор локальных данных. Таким образом, общая база данных организации становится распределенной.

  • Need for Sharing of Data- Многим организационным единицам часто необходимо общаться друг с другом и делиться своими данными и ресурсами. Для этого требуются общие базы данных или реплицированные базы данных, которые следует использовать синхронно.

  • Support for Both OLTP and OLAP- Онлайн-обработка транзакций (OLTP) и онлайн-аналитическая обработка (OLAP) работают с разнообразными системами, которые могут иметь общие данные. Системы распределенных баз данных помогают обеим этим процессам, предоставляя синхронизированные данные.

  • Database Recovery- Один из распространенных методов, используемых в DDBMS, - это репликация данных на разных сайтах. Репликация данных автоматически помогает в восстановлении данных, если база данных на любом сайте повреждена. Пользователи могут получить доступ к данным с других сайтов, пока поврежденный сайт восстанавливается. Таким образом, сбой базы данных может стать почти незаметным для пользователей.

  • Support for Multiple Application Software- Большинство организаций используют различные прикладные программы, каждое из которых поддерживает свою базу данных. DDBMS обеспечивает единообразную функциональность для использования одних и тех же данных на разных платформах.

Преимущества распределенных баз данных

Ниже приведены преимущества распределенных баз данных перед централизованными базами данных.

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

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

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

Lower Communication Cost- В системах распределенных баз данных, если данные находятся локально там, где они чаще всего используются, то затраты на связь для обработки данных могут быть минимизированы. В централизованных системах это невозможно.

Проблемы распределенных баз данных

Ниже приведены некоторые неприятности, связанные с распределенными базами данных.

  • Need for complex and expensive software - DDBMS требует сложного и зачастую дорогостоящего программного обеспечения для обеспечения прозрачности и координации данных на нескольких сайтах.

  • Processing overhead - Даже простые операции могут потребовать большого количества сообщений и дополнительных вычислений для обеспечения единообразия данных на всех сайтах.

  • Data integrity - Необходимость обновления данных на нескольких сайтах создает проблемы с целостностью данных.

  • Overheads for improper data distribution- Отзывчивость запросов во многом зависит от правильного распределения данных. Неправильное распределение данных часто приводит к очень медленному отклику на запросы пользователей.

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

Типы распределенных баз данных

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

Однородные распределенные базы данных

В однородной распределенной базе данных все сайты используют идентичные СУБД и операционные системы. Его свойства -

  • На сайтах используется очень похожее программное обеспечение.

  • На сайтах используются идентичные СУБД или СУБД от одного производителя.

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

  • Доступ к базе данных осуществляется через единый интерфейс, как если бы это была единственная база данных.

Типы однородных распределенных баз данных

Есть два типа однородных распределенных баз данных:

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

  • Non-autonomous - Данные распределяются по однородным узлам, и центральная или главная СУБД координирует обновление данных на сайтах.

Гетерогенные распределенные базы данных

В гетерогенной распределенной базе данных разные сайты имеют разные операционные системы, продукты СУБД и модели данных. Его свойства -

  • На разных сайтах используются разные схемы и программное обеспечение.

  • Система может состоять из множества СУБД, таких как реляционная, сетевая, иерархическая или объектно-ориентированная.

  • Обработка запросов сложна из-за разных схем.

  • Обработка транзакций сложна из-за разного программного обеспечения.

  • Сайт может не знать о других сайтах, поэтому сотрудничество при обработке запросов пользователей ограничено.

Типы гетерогенных распределенных баз данных

  • Federated - Гетерогенные системы баз данных независимы по своей природе и интегрированы вместе, поэтому они функционируют как единая система баз данных.

  • Un-federated - В системах баз данных используется центральный координирующий модуль, через который осуществляется доступ к базам данных.

Распределенные архитектуры СУБД

Архитектуры DDBMS обычно разрабатываются в зависимости от трех параметров:

  • Distribution - В нем указано физическое распределение данных по разным сайтам.

  • Autonomy - Он указывает на распределение контроля над системой баз данных и степень, в которой каждая составляющая СУБД может работать независимо.

  • Heterogeneity - Это относится к единообразию или несходству моделей данных, компонентов системы и баз данных.

Архитектурные модели

Некоторые из распространенных архитектурных моделей -

  • Клиент-серверная архитектура для DDBMS
  • Одноранговая архитектура для DDBMS
  • Архитектура мульти-СУБД

Клиент-серверная архитектура для DDBMS

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

Две разные клиент-серверные архитектуры:

  • Один сервер Несколько клиентов
  • Несколько серверов и несколько клиентов (показано на следующей диаграмме)

Одноранговая архитектура для DDBMS

В этих системах каждый партнер действует как клиент и как сервер для предоставления услуг базы данных. Сверстники делятся своими ресурсами с другими сверстниками и координируют свои действия.

Эта архитектура обычно имеет четыре уровня схем:

  • Global Conceptual Schema - Отображает глобальное логическое представление данных.

  • Local Conceptual Schema - Изображает логическую организацию данных на каждом сайте.

  • Local Internal Schema - Изображает физическую организацию данных на каждом сайте.

  • External Schema - Отображает представление данных пользователем.

Архитектуры мульти-СУБД

Это интегрированная система баз данных, состоящая из двух или более автономных систем баз данных.

Мульти-СУБД можно выразить через шесть уровней схем:

  • Multi-database View Level - Изображает несколько пользовательских представлений, состоящих из подмножеств интегрированной распределенной базы данных.

  • Multi-database Conceptual Level - Изображает интегрированную базу данных с несколькими базами данных, которая состоит из определений глобальной логической структуры с несколькими базами данных.

  • Multi-database Internal Level - Изображает распределение данных по разным сайтам и отображение нескольких баз данных на локальные данные.

  • Local database View Level - Отображает общественное мнение о местных данных.

  • Local database Conceptual Level - Изображает локальную организацию данных на каждом сайте.

  • Local database Internal Level - Изображает физическую организацию данных на каждом сайте.

Есть два варианта дизайна для мульти-СУБД:

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

Альтернативы дизайна

Альтернативы дизайна распределения для таблиц в DDBMS следующие:

  • Не реплицируются и нефрагментированные
  • Полностью воспроизведен
  • Частично воспроизведен
  • Fragmented
  • Mixed

Не реплицируется и нефрагментировано

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

Полностью воспроизведен

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

Частично реплицируется

Копии таблиц или части таблиц хранятся на разных сайтах. Распределение таблиц производится в соответствии с частотой доступа. При этом учитывается тот факт, что частота доступа к таблицам значительно варьируется от сайта к сайту. Количество копий таблиц (или частей) зависит от того, как часто выполняются запросы доступа, и от сайта, который генерирует запросы доступа.

Фрагментированный

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

Три метода фрагментации:

  • Вертикальная фрагментация
  • Горизонтальная фрагментация
  • Гибридная фрагментация

Смешанное распределение

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

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

Репликация данных

Репликация данных - это процесс хранения отдельных копий базы данных на двух или более сайтах. Это популярный метод отказоустойчивости распределенных баз данных.

Преимущества репликации данных

  • Reliability - В случае отказа какого-либо сайта система баз данных продолжает работать, поскольку копия доступна на другом сайте (ах).

  • Reduction in Network Load- Поскольку доступны локальные копии данных, обработка запросов может выполняться с меньшим использованием сети, особенно в лучшие часы. Обновление данных можно производить в нерабочее время.

  • Quicker Response - Доступность локальных копий данных обеспечивает быструю обработку запросов и, как следствие, быстрое время ответа.

  • Simpler Transactions- Для транзакций требуется меньшее количество объединений таблиц, расположенных на разных сайтах, и минимальная координация в сети. Таким образом, они становятся более простыми по своей природе.

Недостатки репликации данных

  • Increased Storage Requirements- Поддержание нескольких копий данных связано с увеличением затрат на хранение. Требуемое пространство для хранения кратно объему хранения, необходимому для централизованной системы.

  • Increased Cost and Complexity of Data Updating- Каждый раз, когда элемент данных обновляется, обновление должно отражаться во всех копиях данных на разных сайтах. Для этого требуются сложные методы и протоколы синхронизации.

  • Undesirable Application – Database coupling- Если сложные механизмы обновления не используются, устранение несогласованности данных требует сложной координации на уровне приложений. Это приводит к нежелательному связыванию приложения и базы данных.

Некоторые часто используемые методы репликации:

  • Репликация снимков
  • Репликация почти в реальном времени
  • Репликация по запросу

Фрагментация

Фрагментация - это задача разделения таблицы на набор меньших таблиц. Подмножества таблицы называютсяfragments. Фрагментация бывает трех типов: горизонтальная, вертикальная и гибридная (сочетание горизонтальной и вертикальной). Горизонтальную фрагментацию можно разделить на два метода: первичная горизонтальная фрагментация и производная горизонтальная фрагментация.

Фрагментация должна производиться таким образом, чтобы исходная таблица могла быть восстановлена ​​из фрагментов. Это необходимо для того, чтобы исходную таблицу можно было при необходимости восстановить из фрагментов. Это требование называется «реконструктивностью».

Преимущества фрагментации

  • Поскольку данные хранятся рядом с местом использования, эффективность системы баз данных увеличивается.

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

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

Недостатки фрагментации

  • Когда требуются данные из разных фрагментов, скорость доступа может быть очень высокой.

  • В случае рекурсивной фрагментации для восстановления потребуются дорогостоящие методы.

  • Отсутствие резервных копий данных на разных сайтах может сделать базу данных неэффективной в случае сбоя сайта.

Вертикальная фрагментация

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

Например, предположим, что база данных университета хранит записи всех зарегистрированных студентов в таблице Student, имеющей следующую схему.

СТУДЕНТ

Regd_No имя Курс Адрес Семестр Сборы Метки

Теперь детали комиссии хранятся в разделе счетов. В этом случае дизайнер фрагментирует базу данных следующим образом:

CREATE TABLE STD_FEES AS 
   SELECT Regd_No, Fees 
   FROM STUDENT;

Горизонтальная фрагментация

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

Например, в схеме студента, если детали всех студентов курса компьютерных наук необходимо поддерживать в Школе компьютерных наук, то дизайнер будет горизонтально фрагментировать базу данных следующим образом:

CREATE COMP_STD AS 
   SELECT * FROM STUDENT  
   WHERE COURSE = "Computer Science";

Гибридная фрагментация

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

Гибридная фрагментация может быть выполнена двумя альтернативными способами:

  • Сначала сгенерируйте набор горизонтальных фрагментов; затем сгенерируйте вертикальные фрагменты из одного или нескольких горизонтальных фрагментов.

  • Сначала сгенерируйте набор вертикальных фрагментов; затем сгенерируйте горизонтальные фрагменты из одного или нескольких вертикальных фрагментов.

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

Три измерения прозрачности распределения:

  • Прозрачность местоположения
  • Прозрачность фрагментации
  • Прозрачность репликации

Прозрачность местоположения

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

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

Прозрачность фрагментации

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

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

Прозрачность репликации

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

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

Комбинация прозрачных пленок

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

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

Три измерения управления базой данных:

  • Authentication
  • Права доступа
  • Ограничения целостности

Аутентификация

В системе распределенных баз данных аутентификация - это процесс, посредством которого только законные пользователи могут получить доступ к ресурсам данных.

Аутентификация может быть принудительной на двух уровнях -

  • Controlling Access to Client Computer- На этом уровне доступ пользователей ограничен при входе на клиентский компьютер, который обеспечивает пользовательский интерфейс для сервера базы данных. Самый распространенный метод - это комбинация имени пользователя и пароля. Однако для данных с высоким уровнем безопасности могут использоваться более сложные методы, такие как биометрическая аутентификация.

  • Controlling Access to the Database Software- На этом уровне программное обеспечение / администратор базы данных назначает пользователю некоторые учетные данные. Пользователь получает доступ к базе данных, используя эти учетные данные. Один из методов - создать учетную запись на сервере базы данных.

Права доступа

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

В распределенных средах, поскольку существует большое количество таблиц и все же большее количество пользователей, невозможно назначить пользователям индивидуальные права доступа. Итак, DDBMS определяет определенные роли. Роль - это конструкция с определенными привилегиями в системе базы данных. После определения различных ролей отдельным пользователям назначается одна из этих ролей. Часто иерархия ролей определяется в соответствии с иерархией полномочий и ответственности организации.

Например, следующие операторы SQL создают роль «Бухгалтер», а затем назначают эту роль пользователю «ABC».

CREATE ROLE ACCOUNTANT; 
GRANT SELECT, INSERT, UPDATE ON EMP_SAL TO ACCOUNTANT; 
GRANT INSERT, UPDATE, DELETE ON TENDER TO ACCOUNTANT; 
GRANT INSERT, SELECT ON EXPENSE TO ACCOUNTANT; 
COMMIT; 
GRANT ACCOUNTANT TO ABC; 
COMMIT;

Контроль семантической целостности

Контроль семантической целостности определяет и обеспечивает соблюдение ограничений целостности системы баз данных.

Ограничения целостности следующие:

  • Ограничение целостности типа данных
  • Ограничение целостности объекта
  • Ограничение ссылочной целостности

Ограничение целостности типа данных

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

Например, допустим, что в таблице «HOSTEL» есть три поля - номер хостела, название хостела и вместимость. Номер общежития должен начинаться с заглавной буквы «H» и не может быть NULL, а его вместимость не должна превышать 150. Для определения данных можно использовать следующую команду SQL:

CREATE TABLE HOSTEL ( 
   H_NO VARCHAR2(5) NOT NULL, 
   H_NAME VARCHAR2(15), 
   CAPACITY INTEGER, 
   CHECK ( H_NO LIKE 'H%'), 
   CHECK ( CAPACITY <= 150) 
);

Контроль целостности организации

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

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

CREATE TABLE HOSTEL ( 
   H_NO VARCHAR2(5) PRIMARY KEY, 
   H_NAME VARCHAR2(15), 
   CAPACITY INTEGER 
);

Ограничение ссылочной целостности

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

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

CREATE TABLE STUDENT (  
   S_ROLL INTEGER PRIMARY KEY, 
   S_NAME VARCHAR2(25) NOT NULL, 
   S_COURSE VARCHAR2(10), 
   S_HOSTEL VARCHAR2(5) REFERENCES HOSTEL 
);

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

Проблемы оптимизации запросов в DDBMS

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

  • Наличие ряда фрагментов.
  • Распространение фрагментов или таблиц по разным сайтам.
  • Скорость связи.
  • Несоответствие в возможностях локальной обработки.

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

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

Обработка запросов

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

Реляционная алгебра

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

Основные операции -

  • Projection
  • Selection
  • Union
  • Intersection
  • Minus
  • Join

Проекция

Операция проецирования отображает подмножество полей таблицы. Это дает вертикальное разделение таблицы.

Syntax in Relational Algebra

$$ \ pi _ {<{AttributeList}>} {(<{Имя таблицы}>)} $$

Например, давайте рассмотрим следующую базу данных студентов -

STUDENT
Roll_No Name Course Semester Gender
2 Амит Прасад BCA 1 мужчина
4 Варша Тивари BCA 1 женский
5 Асиф Али MCA 2 мужчина
6 Джо Уоллес MCA 1 мужчина
8 Шивани Айенгар BCA 1 женский

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

$$\pi_{Name,Course}{(STUDENT)}$$

Выбор

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

Syntax in Relational Algebra

$$ \ sigma _ {<{Условия}>} {(<{Имя таблицы}>)} $$

Например, в таблице «Студент», если мы хотим отобразить сведения обо всех студентах, которые выбрали курс MCA, мы будем использовать следующее выражение реляционной алгебры:

$$\sigma_{Course} = {\small "BCA"}^{(STUDENT)}$$

Комбинация операций проецирования и выбора

Для большинства запросов нам нужна комбинация операций проекции и выбора. Эти выражения можно записать двумя способами:

  • Использование последовательности операций проекции и выделения.
  • Использование операции переименования для получения промежуточных результатов.

Например, чтобы отобразить имена всех студенток курса BCA -

  • Выражение реляционной алгебры с использованием последовательности операций проекции и выбора

$$\pi_{Name}(\sigma_{Gender = \small "Female" AND \: Course = \small "BCA"}{(STUDENT)})$$

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

$$FemaleBCAStudent \leftarrow \sigma_{Gender = \small "Female" AND \: Course = \small "BCA"} {(STUDENT)}$$

$$Result \leftarrow \pi_{Name}{(FemaleBCAStudent)}$$

Союз

Если P - результат операции, а Q - результат другой операции, объединение P и Q ($p \cup Q$) - это набор всех кортежей, которые находятся либо в P, либо в Q, либо в обоих без дубликатов.

Например, чтобы отобразить всех студентов, которые либо в семестре 1, либо в курсе BCA -

$$Sem1Student \leftarrow \sigma_{Semester = 1}{(STUDENT)}$$

$$BCAStudent \leftarrow \sigma_{Course = \small "BCA"}{(STUDENT)}$$

$$Result \leftarrow Sem1Student \cup BCAStudent$$

Пересечение

Если P - результат операции, а Q - результат другой операции, пересечение P и Q ( $p \cap Q$ ) - это множество всех кортежей, которые находятся в P и Q одновременно.

Например, учитывая следующие две схемы -

EMPLOYEE

EmpID имя город Отдел Зарплата

PROJECT

PId город Отдел Положение дел

Чтобы отобразить названия всех городов, в которых находится проект, а также проживает сотрудник -

$$CityEmp \leftarrow \pi_{City}{(EMPLOYEE)}$$

$$CityProject \leftarrow \pi_{City}{(PROJECT)}$$

$$Result \leftarrow CityEmp \cap CityProject$$

Минус

Если P является результатом операции, а Q - результатом другой операции, P - Q - это набор всех кортежей, которые находятся в P, а не в Q.

Например, чтобы перечислить все отделы, у которых нет текущего проекта (проекты со статусом = текущий) -

$$AllDept \leftarrow \pi_{Department}{(EMPLOYEE)}$$

$$ProjectDept \leftarrow \pi_{Department} (\sigma_{Status = \small "ongoing"}{(PROJECT)})$$

$$Result \leftarrow AllDept - ProjectDept$$

Присоединиться

Операция соединения объединяет связанные кортежи двух разных таблиц (результаты запросов) в одну таблицу.

Например, рассмотрим две схемы, клиент и филиал в базе данных банка, как показано ниже:

CUSTOMER

CustID AccNo ТипOfAc BranchID DateOfOpening

BRANCH

BranchID BranchName IFSCcode Адрес

Чтобы перечислить данные о сотрудниках вместе с деталями филиала -

$$Result \leftarrow CUSTOMER \bowtie_{Customer.BranchID=Branch.BranchID}{BRANCH}$$

Перевод SQL-запросов в реляционную алгебру

Перед оптимизацией запросы SQL переводятся в эквивалентные выражения реляционной алгебры. Запрос сначала разбивается на более мелкие блоки запроса. Эти блоки переводятся в эквивалентные выражения реляционной алгебры. Оптимизация включает оптимизацию каждого блока, а затем оптимизацию запроса в целом.

Примеры

Давайте рассмотрим следующие схемы -

РАБОТНИК

EmpID имя город Отдел Зарплата

ПРОЕКТ

PId город Отдел Положение дел

РАБОТАЕТ

EmpID PID Часы

Пример 1

Чтобы отобразить подробную информацию обо всех сотрудниках, которые получают зарплату МЕНЬШЕ средней зарплаты, мы пишем SQL-запрос:

SELECT * FROM EMPLOYEE 
WHERE SALARY < ( SELECT AVERAGE(SALARY) FROM EMPLOYEE ) ;

Этот запрос содержит один вложенный подзапрос. Итак, это можно разбить на два блока.

Внутренний блок -

SELECT AVERAGE(SALARY)FROM EMPLOYEE ;

Если результатом этого запроса является AvgSal, то внешний блок -

SELECT * FROM EMPLOYEE WHERE SALARY < AvgSal;

Выражение реляционной алгебры для внутреннего блока -

$$AvgSal \leftarrow \Im_{AVERAGE(Salary)}{EMPLOYEE}$$

Выражение реляционной алгебры для внешнего блока -

$$ \ sigma_ {Salary <{AvgSal}>} {EMPLOYEE} $$

Пример 2

Чтобы отобразить идентификатор проекта и статус всех проектов сотрудника Аруна Кумара, мы пишем SQL-запрос -

SELECT PID, STATUS FROM PROJECT 
WHERE PID = ( SELECT FROM WORKS  WHERE EMPID = ( SELECT EMPID FROM EMPLOYEE 
            WHERE NAME = 'ARUN KUMAR'));

Этот запрос содержит два вложенных подзапроса. Таким образом, его можно разбить на три блока, а именно:

SELECT EMPID FROM EMPLOYEE WHERE NAME = 'ARUN KUMAR'; 
SELECT PID FROM WORKS WHERE EMPID = ArunEmpID; 
SELECT PID, STATUS FROM PROJECT WHERE PID = ArunPID;

(Здесь ArunEmpID и ArunPID - это результаты внутренних запросов)

Выражения реляционной алгебры для трех блоков:

$$ArunEmpID \leftarrow \pi_{EmpID}(\sigma_{Name = \small "Arun Kumar"} {(EMPLOYEE)})$$

$$ArunPID \leftarrow \pi_{PID}(\sigma_{EmpID = \small "ArunEmpID"} {(WORKS)})$$

$$Result \leftarrow \pi_{PID, Status}(\sigma_{PID = \small "ArunPID"} {(PROJECT)})$$

Вычисление операторов реляционной алгебры

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

Альтернатива вычисления зависит от трех основных факторов:

  • Тип оператора
  • Доступная память
  • Дисковые структуры

Время на выполнение операции реляционной алгебры складывается из -

  • Пора обработать кортежи.
  • Пора извлечь кортежи таблицы с диска в память.

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

Вычисление выбора

Вычисление операции выбора зависит от сложности условия выбора и наличия индексов для атрибутов таблицы.

Ниже приведены альтернативы вычислений в зависимости от индексов.

  • No Index- Если таблица не отсортирована и не имеет индексов, то процесс выбора включает сканирование всех дисковых блоков таблицы. Каждый блок помещается в память, и каждый кортеж в блоке исследуется, чтобы увидеть, удовлетворяет ли он условию выбора. Если условие выполнено, оно отображается как результат. Это наиболее затратный подход, поскольку каждый кортеж помещается в память и обрабатывается каждый кортеж.

  • B+ Tree Index- Большинство систем баз данных построены на индексе B + Tree. Если условие выбора основано на поле, которое является ключом этого индекса B + Tree, то этот индекс используется для получения результатов. Однако обработка операторов выбора со сложными условиями может включать большее количество обращений к блоку диска и в некоторых случаях полное сканирование таблицы.

  • Hash Index- Если используются хэш-индексы и его ключевое поле используется в условии выбора, то получение кортежей с использованием хэш-индекса становится простым процессом. Хеш-индекс использует хеш-функцию для поиска адреса корзины, в которой хранится значение ключа, соответствующее хеш-значению. Чтобы найти значение ключа в индексе, выполняется хеш-функция и определяется адрес корзины. Выполняется поиск ключевых значений в сегменте. Если совпадение найдено, фактический кортеж извлекается из дискового блока в память.

Вычисление объединений

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

Общие подходы к вычислению соединений:

Подход с вложенным циклом

Это обычный подход соединения. Это можно проиллюстрировать с помощью следующего псевдокода (таблицы P и Q, с кортежами tuple_p и tuple_q и атрибутом соединения a) -

For each tuple_p in P 
For each tuple_q in Q
If tuple_p.a = tuple_q.a Then 
   Concatenate tuple_p and tuple_q and append to Result 
End If 
Next tuple_q 
Next tuple-p

Подход сортировки-слияния

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

Подход хеш-соединения

Этот подход состоит из двух этапов: этапа разделения и этапа исследования. На этапе разделения таблицы P и Q разбиваются на два набора непересекающихся разделов. Выбирается общая хеш-функция. Эта хеш-функция используется для назначения кортежей разделам. На этапе проверки кортежи в разделе P сравниваются с кортежами в соответствующем разделе Q. Если они совпадают, они записываются.

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

В централизованной системе обработка запросов выполняется со следующей целью:

  • Минимизация времени ответа на запрос (время, необходимое для выдачи результатов на запрос пользователя).

  • Увеличьте пропускную способность системы (количество запросов, обрабатываемых за заданный промежуток времени).

  • Уменьшите объем памяти и хранилища, необходимых для обработки.

  • Увеличьте параллелизм.

Анализ и перевод запросов

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

Шаги по оптимизации запросов

Оптимизация запросов включает три этапа, а именно создание дерева запросов, создание плана и создание кода плана запроса.

Step 1 − Query Tree Generation

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

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

Например, давайте рассмотрим следующие схемы -

РАБОТНИК

EmpID EName Salary DeptNo DateOfJoining

DEPARTMENT

DNo DName Location

Example 1

Let us consider the query as the following.

$$\pi_{EmpID} (\sigma_{EName = \small "ArunKumar"} {(EMPLOYEE)})$$

The corresponding query tree will be −

Example 2

Let us consider another query involving a join.

$\pi_{EName, Salary} (\sigma_{DName = \small "Marketing"} {(DEPARTMENT)}) \bowtie_{DNo=DeptNo}{(EMPLOYEE)}$

Following is the query tree for the above query.

Step 2 − Query Plan Generation

After the query tree is generated, a query plan is made. A query plan is an extended query tree that includes access paths for all operations in the query tree. Access paths specify how the relational operations in the tree should be performed. For example, a selection operation can have an access path that gives details about the use of B+ tree index for selection.

Besides, a query plan also states how the intermediate tables should be passed from one operator to the next, how temporary tables should be used and how operations should be pipelined/combined.

Step 3− Code Generation

Code generation is the final step in query optimization. It is the executable form of the query, whose form depends upon the type of the underlying operating system. Once the query code is generated, the Execution Manager runs it and produces the results.

Approaches to Query Optimization

Among the approaches for query optimization, exhaustive search and heuristics-based algorithms are mostly used.

Exhaustive Search Optimization

In these techniques, for a query, all possible query plans are initially generated and then the best plan is selected. Though these techniques provide the best solution, it has an exponential time and space complexity owing to the large solution space. For example, dynamic programming technique.

Heuristic Based Optimization

Heuristic based optimization uses rule-based optimization approaches for query optimization. These algorithms have polynomial time and space complexity, which is lower than the exponential complexity of exhaustive search-based algorithms. However, these algorithms do not necessarily produce the best query plan.

Some of the common heuristic rules are −

  • Perform select and project operations before join operations. This is done by moving the select and project operations down the query tree. This reduces the number of tuples available for join.

  • Perform the most restrictive select/project operations at first before the other operations.

  • Avoid cross-product operation since they result in very large-sized intermediate tables.

This chapter discusses query optimization in distributed database system.

Distributed Query Processing Architecture

In a distributed database system, processing a query comprises of optimization at both the global and the local level. The query enters the database system at the client or controlling site. Here, the user is validated, the query is checked, translated, and optimized at a global level.

The architecture can be represented as −

Mapping Global Queries into Local Queries

The process of mapping global queries to local ones can be realized as follows −

  • The tables required in a global query have fragments distributed across multiple sites. The local databases have information only about local data. The controlling site uses the global data dictionary to gather information about the distribution and reconstructs the global view from the fragments.

  • If there is no replication, the global optimizer runs local queries at the sites where the fragments are stored. If there is replication, the global optimizer selects the site based upon communication cost, workload, and server speed.

  • The global optimizer generates a distributed execution plan so that least amount of data transfer occurs across the sites. The plan states the location of the fragments, order in which query steps needs to be executed and the processes involved in transferring intermediate results.

  • The local queries are optimized by the local database servers. Finally, the local query results are merged together through union operation in case of horizontal fragments and join operation for vertical fragments.

For example, let us consider that the following Project schema is horizontally fragmented according to City, the cities being New Delhi, Kolkata and Hyderabad.

PROJECT

PId City Department Status

Suppose there is a query to retrieve details of all projects whose status is “Ongoing”.

The global query will be &inus;

$$\sigma_{status} = {\small "ongoing"}^{(PROJECT)}$$

Query in New Delhi’s server will be −

$$\sigma_{status} = {\small "ongoing"}^{({NewD}_-{PROJECT})}$$

Query in Kolkata’s server will be −

$$\sigma_{status} = {\small "ongoing"}^{({Kol}_-{PROJECT})}$$

Query in Hyderabad’s server will be −

$$\sigma_{status} = {\small "ongoing"}^{({Hyd}_-{PROJECT})}$$

In order to get the overall result, we need to union the results of the three queries as follows −

$\sigma_{status} = {\small "ongoing"}^{({NewD}_-{PROJECT})} \cup \sigma_{status} = {\small "ongoing"}^{({kol}_-{PROJECT})} \cup \sigma_{status} = {\small "ongoing"}^{({Hyd}_-{PROJECT})}$

Distributed Query Optimization

Distributed query optimization requires evaluation of a large number of query trees each of which produce the required results of a query. This is primarily due to the presence of large amount of replicated and fragmented data. Hence, the target is to find an optimal solution instead of the best solution.

The main issues for distributed query optimization are −

  • Optimal utilization of resources in the distributed system.
  • Query trading.
  • Reduction of solution space of the query.

Optimal Utilization of Resources in the Distributed System

A distributed system has a number of database servers in the various sites to perform the operations pertaining to a query. Following are the approaches for optimal resource utilization −

Operation Shipping − In operation shipping, the operation is run at the site where the data is stored and not at the client site. The results are then transferred to the client site. This is appropriate for operations where the operands are available at the same site. Example: Select and Project operations.

Data Shipping − In data shipping, the data fragments are transferred to the database server, where the operations are executed. This is used in operations where the operands are distributed at different sites. This is also appropriate in systems where the communication costs are low, and local processors are much slower than the client server.

Hybrid Shipping − This is a combination of data and operation shipping. Here, data fragments are transferred to the high-speed processors, where the operation runs. The results are then sent to the client site.

Query Trading

In query trading algorithm for distributed database systems, the controlling/client site for a distributed query is called the buyer and the sites where the local queries execute are called sellers. The buyer formulates a number of alternatives for choosing sellers and for reconstructing the global results. The target of the buyer is to achieve the optimal cost.

The algorithm starts with the buyer assigning sub-queries to the seller sites. The optimal plan is created from local optimized query plans proposed by the sellers combined with the communication cost for reconstructing the final result. Once the global optimal plan is formulated, the query is executed.

Reduction of Solution Space of the Query

Optimal solution generally involves reduction of solution space so that the cost of query and data transfer is reduced. This can be achieved through a set of heuristic rules, just as heuristics in centralized systems.

Following are some of the rules −

  • Perform selection and projection operations as early as possible. This reduces the data flow over communication network.

  • Simplify operations on horizontal fragments by eliminating selection conditions which are not relevant to a particular site.

  • In case of join and union operations comprising of fragments located in multiple sites, transfer fragmented data to the site where most of the data is present and perform operation there.

  • Use semi-join operation to qualify tuples that are to be joined. This reduces the amount of data transfer which in turn reduces communication cost.

  • Merge the common leaves and sub-trees in a distributed query tree.

This chapter discusses the various aspects of transaction processing. We’ll also study the low level tasks included in a transaction, the transaction states and properties of a transaction. In the last portion, we will look over schedules and serializability of schedules.

Transactions

A transaction is a program including a collection of database operations, executed as a logical unit of data processing. The operations performed in a transaction include one or more of database operations like insert, delete, update or retrieve data. It is an atomic process that is either performed into completion entirely or is not performed at all. A transaction involving only data retrieval without any data update is called read-only transaction.

Each high level operation can be divided into a number of low level tasks or operations. For example, a data update operation can be divided into three tasks −

  • read_item() − reads data item from storage to main memory.

  • modify_item() − change value of item in the main memory.

  • write_item() − write the modified value from main memory to storage.

Database access is restricted to read_item() and write_item() operations. Likewise, for all transactions, read and write forms the basic database operations.

Transaction Operations

The low level operations performed in a transaction are −

  • begin_transaction − A marker that specifies start of transaction execution.

  • read_item or write_item − Database operations that may be interleaved with main memory operations as a part of transaction.

  • end_transaction − A marker that specifies end of transaction.

  • commit − A signal to specify that the transaction has been successfully completed in its entirety and will not be undone.

  • rollback − A signal to specify that the transaction has been unsuccessful and so all temporary changes in the database are undone. A committed transaction cannot be rolled back.

Transaction States

A transaction may go through a subset of five states, active, partially committed, committed, failed and aborted.

  • Active − The initial state where the transaction enters is the active state. The transaction remains in this state while it is executing read, write or other operations.

  • Partially Committed − The transaction enters this state after the last statement of the transaction has been executed.

  • Committed − The transaction enters this state after successful completion of the transaction and system checks have issued commit signal.

  • Failed − The transaction goes from partially committed state or active state to failed state when it is discovered that normal execution can no longer proceed or system checks fail.

  • Aborted − This is the state after the transaction has been rolled back after failure and the database has been restored to its state that was before the transaction began.

The following state transition diagram depicts the states in the transaction and the low level transaction operations that causes change in states.

Desirable Properties of Transactions

Any transaction must maintain the ACID properties, viz. Atomicity, Consistency, Isolation, and Durability.

  • Atomicity − This property states that a transaction is an atomic unit of processing, that is, either it is performed in its entirety or not performed at all. No partial update should exist.

  • Consistency − A transaction should take the database from one consistent state to another consistent state. It should not adversely affect any data item in the database.

  • Isolation − A transaction should be executed as if it is the only one in the system. There should not be any interference from the other concurrent transactions that are simultaneously running.

  • Durability − If a committed transaction brings about a change, that change should be durable in the database and not lost in case of any failure.

Schedules and Conflicts

In a system with a number of simultaneous transactions, a schedule is the total order of execution of operations. Given a schedule S comprising of n transactions, say T1, T2, T3………..Tn; for any transaction Ti, the operations in Ti must execute as laid down in the schedule S.

Types of Schedules

There are two types of schedules −

  • Serial Schedules − In a serial schedule, at any point of time, only one transaction is active, i.e. there is no overlapping of transactions. This is depicted in the following graph −

  • Parallel Schedules − In parallel schedules, more than one transactions are active simultaneously, i.e. the transactions contain operations that overlap at time. This is depicted in the following graph −

Conflicts in Schedules

In a schedule comprising of multiple transactions, a conflict occurs when two active transactions perform non-compatible operations. Two operations are said to be in conflict, when all of the following three conditions exists simultaneously −

  • The two operations are parts of different transactions.

  • Both the operations access the same data item.

  • At least one of the operations is a write_item() operation, i.e. it tries to modify the data item.

Serializability

A serializable schedule of ‘n’ transactions is a parallel schedule which is equivalent to a serial schedule comprising of the same ‘n’ transactions. A serializable schedule contains the correctness of serial schedule while ascertaining better CPU utilization of parallel schedule.

Equivalence of Schedules

Equivalence of two schedules can be of the following types −

  • Result equivalence − Two schedules producing identical results are said to be result equivalent.

  • View equivalence − Two schedules that perform similar action in a similar manner are said to be view equivalent.

  • Conflict equivalence − Two schedules are said to be conflict equivalent if both contain the same set of transactions and has the same order of conflicting pairs of operations.

Concurrency controlling techniques ensure that multiple transactions are executed simultaneously while maintaining the ACID properties of the transactions and serializability in the schedules.

In this chapter, we will study the various approaches for concurrency control.

Locking Based Concurrency Control Protocols

Locking-based concurrency control protocols use the concept of locking data items. A lock is a variable associated with a data item that determines whether read/write operations can be performed on that data item. Generally, a lock compatibility matrix is used which states whether a data item can be locked by two transactions at the same time.

Locking-based concurrency control systems can use either one-phase or two-phase locking protocols.

One-phase Locking Protocol

In this method, each transaction locks an item before use and releases the lock as soon as it has finished using it. This locking method provides for maximum concurrency but does not always enforce serializability.

Two-phase Locking Protocol

In this method, all locking operations precede the first lock-release or unlock operation. The transaction comprise of two phases. In the first phase, a transaction only acquires all the locks it needs and do not release any lock. This is called the expanding or the growing phase. In the second phase, the transaction releases the locks and cannot request any new locks. This is called the shrinking phase.

Every transaction that follows two-phase locking protocol is guaranteed to be serializable. However, this approach provides low parallelism between two conflicting transactions.

Timestamp Concurrency Control Algorithms

Timestamp-based concurrency control algorithms use a transaction’s timestamp to coordinate concurrent access to a data item to ensure serializability. A timestamp is a unique identifier given by DBMS to a transaction that represents the transaction’s start time.

These algorithms ensure that transactions commit in the order dictated by their timestamps. An older transaction should commit before a younger transaction, since the older transaction enters the system before the younger one.

Timestamp-based concurrency control techniques generate serializable schedules such that the equivalent serial schedule is arranged in order of the age of the participating transactions.

Some of timestamp based concurrency control algorithms are −

  • Basic timestamp ordering algorithm.
  • Conservative timestamp ordering algorithm.
  • Multiversion algorithm based upon timestamp ordering.

Timestamp based ordering follow three rules to enforce serializability −

  • Access Rule − When two transactions try to access the same data item simultaneously, for conflicting operations, priority is given to the older transaction. This causes the younger transaction to wait for the older transaction to commit first.

  • Late Transaction Rule − If a younger transaction has written a data item, then an older transaction is not allowed to read or write that data item. This rule prevents the older transaction from committing after the younger transaction has already committed.

  • Younger Transaction Rule − A younger transaction can read or write a data item that has already been written by an older transaction.

Optimistic Concurrency Control Algorithm

In systems with low conflict rates, the task of validating every transaction for serializability may lower performance. In these cases, the test for serializability is postponed to just before commit. Since the conflict rate is low, the probability of aborting transactions which are not serializable is also low. This approach is called optimistic concurrency control technique.

In this approach, a transaction’s life cycle is divided into the following three phases −

  • Execution Phase − A transaction fetches data items to memory and performs operations upon them.

  • Validation Phase − A transaction performs checks to ensure that committing its changes to the database passes serializability test.

  • Commit Phase − A transaction writes back modified data item in memory to the disk.

This algorithm uses three rules to enforce serializability in validation phase −

Rule 1 − Given two transactions Ti and Tj, if Ti is reading the data item which Tj is writing, then Ti’s execution phase cannot overlap with Tj’s commit phase. Tj can commit only after Ti has finished execution.

Rule 2 − Given two transactions Ti and Tj, if Ti is writing the data item that Tj is reading, then Ti’s commit phase cannot overlap with Tj’s execution phase. Tj can start executing only after Ti has already committed.

Rule 3 − Given two transactions Ti and Tj, if Ti is writing the data item which Tj is also writing, then Ti’s commit phase cannot overlap with Tj’s commit phase. Tj can start to commit only after Ti has already committed.

Concurrency Control in Distributed Systems

In this section, we will see how the above techniques are implemented in a distributed database system.

Distributed Two-phase Locking Algorithm

The basic principle of distributed two-phase locking is same as the basic two-phase locking protocol. However, in a distributed system there are sites designated as lock managers. A lock manager controls lock acquisition requests from transaction monitors. In order to enforce co-ordination between the lock managers in various sites, at least one site is given the authority to see all transactions and detect lock conflicts.

Depending upon the number of sites who can detect lock conflicts, distributed two-phase locking approaches can be of three types −

  • Centralized two-phase locking − In this approach, one site is designated as the central lock manager. All the sites in the environment know the location of the central lock manager and obtain lock from it during transactions.

  • Primary copy two-phase locking − In this approach, a number of sites are designated as lock control centers. Each of these sites has the responsibility of managing a defined set of locks. All the sites know which lock control center is responsible for managing lock of which data table/fragment item.

  • Distributed two-phase locking − In this approach, there are a number of lock managers, where each lock manager controls locks of data items stored at its local site. The location of the lock manager is based upon data distribution and replication.

Distributed Timestamp Concurrency Control

In a centralized system, timestamp of any transaction is determined by the physical clock reading. But, in a distributed system, any site’s local physical/logical clock readings cannot be used as global timestamps, since they are not globally unique. So, a timestamp comprises of a combination of site ID and that site’s clock reading.

For implementing timestamp ordering algorithms, each site has a scheduler that maintains a separate queue for each transaction manager. During transaction, a transaction manager sends a lock request to the site’s scheduler. The scheduler puts the request to the corresponding queue in increasing timestamp order. Requests are processed from the front of the queues in the order of their timestamps, i.e. the oldest first.

Conflict Graphs

Another method is to create conflict graphs. For this transaction classes are defined. A transaction class contains two set of data items called read set and write set. A transaction belongs to a particular class if the transaction’s read set is a subset of the class’ read set and the transaction’s write set is a subset of the class’ write set. In the read phase, each transaction issues its read requests for the data items in its read set. In the write phase, each transaction issues its write requests.

A conflict graph is created for the classes to which active transactions belong. This contains a set of vertical, horizontal, and diagonal edges. A vertical edge connects two nodes within a class and denotes conflicts within the class. A horizontal edge connects two nodes across two classes and denotes a write-write conflict among different classes. A diagonal edge connects two nodes across two classes and denotes a write-read or a read-write conflict among two classes.

The conflict graphs are analyzed to ascertain whether two transactions within the same class or across two different classes can be run in parallel.

Distributed Optimistic Concurrency Control Algorithm

Distributed optimistic concurrency control algorithm extends optimistic concurrency control algorithm. For this extension, two rules are applied −

Rule 1 − According to this rule, a transaction must be validated locally at all sites when it executes. If a transaction is found to be invalid at any site, it is aborted. Local validation guarantees that the transaction maintains serializability at the sites where it has been executed. After a transaction passes local validation test, it is globally validated.

Rule 2 − According to this rule, after a transaction passes local validation test, it should be globally validated. Global validation ensures that if two conflicting transactions run together at more than one site, they should commit in the same relative order at all the sites they run together. This may require a transaction to wait for the other conflicting transaction, after validation before commit. This requirement makes the algorithm less optimistic since a transaction may not be able to commit as soon as it is validated at a site.

This chapter overviews deadlock handling mechanisms in database systems. We’ll study the deadlock handling mechanisms in both centralized and distributed database system.

What are Deadlocks?

Deadlock is a state of a database system having two or more transactions, when each transaction is waiting for a data item that is being locked by some other transaction. A deadlock can be indicated by a cycle in the wait-for-graph. This is a directed graph in which the vertices denote transactions and the edges denote waits for data items.

For example, in the following wait-for-graph, transaction T1 is waiting for data item X which is locked by T3. T3 is waiting for Y which is locked by T2 and T2 is waiting for Z which is locked by T1. Hence, a waiting cycle is formed, and none of the transactions can proceed executing.

Deadlock Handling in Centralized Systems

There are three classical approaches for deadlock handling, namely −

  • Deadlock prevention.
  • Deadlock avoidance.
  • Deadlock detection and removal.

All of the three approaches can be incorporated in both a centralized and a distributed database system.

Deadlock Prevention

The deadlock prevention approach does not allow any transaction to acquire locks that will lead to deadlocks. The convention is that when more than one transactions request for locking the same data item, only one of them is granted the lock.

One of the most popular deadlock prevention methods is pre-acquisition of all the locks. In this method, a transaction acquires all the locks before starting to execute and retains the locks for the entire duration of transaction. If another transaction needs any of the already acquired locks, it has to wait until all the locks it needs are available. Using this approach, the system is prevented from being deadlocked since none of the waiting transactions are holding any lock.

Deadlock Avoidance

The deadlock avoidance approach handles deadlocks before they occur. It analyzes the transactions and the locks to determine whether or not waiting leads to a deadlock.

The method can be briefly stated as follows. Transactions start executing and request data items that they need to lock. The lock manager checks whether the lock is available. If it is available, the lock manager allocates the data item and the transaction acquires the lock. However, if the item is locked by some other transaction in incompatible mode, the lock manager runs an algorithm to test whether keeping the transaction in waiting state will cause a deadlock or not. Accordingly, the algorithm decides whether the transaction can wait or one of the transactions should be aborted.

There are two algorithms for this purpose, namely wait-die and wound-wait. Let us assume that there are two transactions, T1 and T2, where T1 tries to lock a data item which is already locked by T2. The algorithms are as follows −

  • Wait-Die − If T1 is older than T2, T1 is allowed to wait. Otherwise, if T1 is younger than T2, T1 is aborted and later restarted.

  • Wound-Wait − If T1 is older than T2, T2 is aborted and later restarted. Otherwise, if T1 is younger than T2, T1 is allowed to wait.

Deadlock Detection and Removal

The deadlock detection and removal approach runs a deadlock detection algorithm periodically and removes deadlock in case there is one. It does not check for deadlock when a transaction places a request for a lock. When a transaction requests a lock, the lock manager checks whether it is available. If it is available, the transaction is allowed to lock the data item; otherwise the transaction is allowed to wait.

Since there are no precautions while granting lock requests, some of the transactions may be deadlocked. To detect deadlocks, the lock manager periodically checks if the wait-forgraph has cycles. If the system is deadlocked, the lock manager chooses a victim transaction from each cycle. The victim is aborted and rolled back; and then restarted later. Some of the methods used for victim selection are −

  • Choose the youngest transaction.
  • Choose the transaction with fewest data items.
  • Choose the transaction that has performed least number of updates.
  • Choose the transaction having least restart overhead.
  • Choose the transaction which is common to two or more cycles.

This approach is primarily suited for systems having transactions low and where fast response to lock requests is needed.

Deadlock Handling in Distributed Systems

Transaction processing in a distributed database system is also distributed, i.e. the same transaction may be processing at more than one site. The two main deadlock handling concerns in a distributed database system that are not present in a centralized system are transaction location and transaction control. Once these concerns are addressed, deadlocks are handled through any of deadlock prevention, deadlock avoidance or deadlock detection and removal.

Transaction Location

Transactions in a distributed database system are processed in multiple sites and use data items in multiple sites. The amount of data processing is not uniformly distributed among these sites. The time period of processing also varies. Thus the same transaction may be active at some sites and inactive at others. When two conflicting transactions are located in a site, it may happen that one of them is in inactive state. This condition does not arise in a centralized system. This concern is called transaction location issue.

This concern may be addressed by Daisy Chain model. In this model, a transaction carries certain details when it moves from one site to another. Some of the details are the list of tables required, the list of sites required, the list of visited tables and sites, the list of tables and sites that are yet to be visited and the list of acquired locks with types. After a transaction terminates by either commit or abort, the information should be sent to all the concerned sites.

Transaction Control

Transaction control is concerned with designating and controlling the sites required for processing a transaction in a distributed database system. There are many options regarding the choice of where to process the transaction and how to designate the center of control, like −

  • One server may be selected as the center of control.
  • The center of control may travel from one server to another.
  • The responsibility of controlling may be shared by a number of servers.

Distributed Deadlock Prevention

Just like in centralized deadlock prevention, in distributed deadlock prevention approach, a transaction should acquire all the locks before starting to execute. This prevents deadlocks.

The site where the transaction enters is designated as the controlling site. The controlling site sends messages to the sites where the data items are located to lock the items. Then it waits for confirmation. When all the sites have confirmed that they have locked the data items, transaction starts. If any site or communication link fails, the transaction has to wait until they have been repaired.

Though the implementation is simple, this approach has some drawbacks −

  • Pre-acquisition of locks requires a long time for communication delays. This increases the time required for transaction.

  • In case of site or link failure, a transaction has to wait for a long time so that the sites recover. Meanwhile, in the running sites, the items are locked. This may prevent other transactions from executing.

  • If the controlling site fails, it cannot communicate with the other sites. These sites continue to keep the locked data items in their locked state, thus resulting in blocking.

Distributed Deadlock Avoidance

As in centralized system, distributed deadlock avoidance handles deadlock prior to occurrence. Additionally, in distributed systems, transaction location and transaction control issues needs to be addressed. Due to the distributed nature of the transaction, the following conflicts may occur −

  • Conflict between two transactions in the same site.
  • Conflict between two transactions in different sites.

In case of conflict, one of the transactions may be aborted or allowed to wait as per distributed wait-die or distributed wound-wait algorithms.

Let us assume that there are two transactions, T1 and T2. T1 arrives at Site P and tries to lock a data item which is already locked by T2 at that site. Hence, there is a conflict at Site P. The algorithms are as follows −

  • Distributed Wound-Die

    • If T1 is older than T2, T1 is allowed to wait. T1 can resume execution after Site P receives a message that T2 has either committed or aborted successfully at all sites.

    • If T1 is younger than T2, T1 is aborted. The concurrency control at Site P sends a message to all sites where T1 has visited to abort T1. The controlling site notifies the user when T1 has been successfully aborted in all the sites.

  • Distributed Wait-Wait

    • If T1 is older than T2, T2 needs to be aborted. If T2 is active at Site P, Site P aborts and rolls back T2 and then broadcasts this message to other relevant sites. If T2 has left Site P but is active at Site Q, Site P broadcasts that T2 has been aborted; Site L then aborts and rolls back T2 and sends this message to all sites.

    • If T1 is younger than T1, T1 is allowed to wait. T1 can resume execution after Site P receives a message that T2 has completed processing.

Distributed Deadlock Detection

Just like centralized deadlock detection approach, deadlocks are allowed to occur and are removed if detected. The system does not perform any checks when a transaction places a lock request. For implementation, global wait-for-graphs are created. Existence of a cycle in the global wait-for-graph indicates deadlocks. However, it is difficult to spot deadlocks since transaction waits for resources across the network.

Alternatively, deadlock detection algorithms can use timers. Each transaction is associated with a timer which is set to a time period in which a transaction is expected to finish. If a transaction does not finish within this time period, the timer goes off, indicating a possible deadlock.

Another tool used for deadlock handling is a deadlock detector. In a centralized system, there is one deadlock detector. In a distributed system, there can be more than one deadlock detectors. A deadlock detector can find deadlocks for the sites under its control. There are three alternatives for deadlock detection in a distributed system, namely.

  • Centralized Deadlock Detector − One site is designated as the central deadlock detector.

  • Hierarchical Deadlock Detector − A number of deadlock detectors are arranged in hierarchy.

  • Distributed Deadlock Detector − All the sites participate in detecting deadlocks and removing them.

This chapter looks into replication control, which is required to maintain consistent data in all sites. We will study the replication control techniques and the algorithms required for replication control.

As discussed earlier, replication is a technique used in distributed databases to store multiple copies of a data table at different sites. The problem with having multiple copies in multiple sites is the overhead of maintaining data consistency, particularly during update operations.

In order to maintain mutually consistent data in all sites, replication control techniques need to be adopted. There are two approaches for replication control, namely −

  • Synchronous Replication Control
  • Asynchronous Replication Control

Synchronous Replication Control

In synchronous replication approach, the database is synchronized so that all the replications always have the same value. A transaction requesting a data item will have access to the same value in all the sites. To ensure this uniformity, a transaction that updates a data item is expanded so that it makes the update in all the copies of the data item. Generally, two-phase commit protocol is used for the purpose.

For example, let us consider a data table PROJECT(PId, PName, PLocation). We need to run a transaction T1 that updates PLocation to ‘Mumbai’, if PLocation is ‘Bombay’. If no replications are there, the operations in transaction T1 will be −

Begin T1: 
   Update PROJECT Set PLocation = 'Mumbai' 
   Where PLocation = 'Bombay'; 
End T1;

If the data table has two replicas in Site A and Site B, T1 needs to spawn two children T1A and T1B corresponding to the two sites. The expanded transaction T1 will be −

Begin T1: 
   Begin T1A : 
      Update PROJECT Set PLocation = 'Mumbai' 
      Where PLocation = 'Bombay'; 
   End T1A;  
	
   Begin T2A : 
      Update PROJECT Set PLocation = 'Mumbai'
      Where PLocation = 'Bombay'; 
   End T2A; 
	
End T1;

Asynchronous Replication Control

In asynchronous replication approach, the replicas do not always maintain the same value. One or more replicas may store an outdated value, and a transaction can see the different values. The process of bringing all the replicas to the current value is called synchronization.

A popular method of synchronization is store and forward method. In this method, one site is designated as the primary site and the other sites are secondary sites. The primary site always contains updated values. All the transactions first enter the primary site. These transactions are then queued for application in the secondary sites. The secondary sites are updated using rollout method only when a transaction is scheduled to execute on it.

Replication Control Algorithms

Some of the replication control algorithms are −

  • Master-slave replication control algorithm.
  • Distributed voting algorithm.
  • Majority consensus algorithm.
  • Circulating token algorithm.

Master-Slave Replication Control Algorithm

There is one master site and ‘N’ slave sites. A master algorithm runs at the master site to detect conflicts. A copy of slave algorithm runs at each slave site. The overall algorithm executes in the following two phases −

  • Transaction acceptance/rejection phase − When a transaction enters the transaction monitor of a slave site, the slave site sends a request to the master site. The master site checks for conflicts. If there aren’t any conflicts, the master sends an “ACK+” message to the slave site which then starts the transaction application phase. Otherwise, the master sends an “ACK-” message to the slave which then rejects the transaction.

  • Transaction application phase − Upon entering this phase, the slave site where transaction has entered broadcasts a request to all slaves for executing the transaction. On receiving the requests, the peer slaves execute the transaction and send an “ACK” to the requesting slave on completion. After the requesting slave has received “ACK” messages from all its peers, it sends a “DONE” message to the master site. The master understands that the transaction has been completed and removes it from the pending queue.

Distributed Voting Algorithm

This comprises of ‘N’ peer sites, all of whom must “OK” a transaction before it starts executing. Following are the two phases of this algorithm −

  • Distributed transaction acceptance phase − When a transaction enters the transaction manager of a site, it sends a transaction request to all other sites. On receiving a request, a peer site resolves conflicts using priority based voting rules. If all the peer sites are “OK” with the transaction, the requesting site starts application phase. If any of the peer sites does not “OK” a transaction, the requesting site rejects the transaction.

  • Distributed transaction application phase − Upon entering this phase, the site where the transaction has entered, broadcasts a request to all slaves for executing the transaction. On receiving the requests, the peer slaves execute the transaction and send an “ACK” message to the requesting slave on completion. After the requesting slave has received “ACK” messages from all its peers, it lets the transaction manager know that the transaction has been completed.

Majority Consensus Algorithm

This is a variation from the distributed voting algorithm, where a transaction is allowed to execute when a majority of the peers “OK” a transaction. This is divided into three phases −

  • Voting phase − When a transaction enters the transaction manager of a site, it sends a transaction request to all other sites. On receiving a request, a peer site tests for conflicts using voting rules and keeps the conflicting transactions, if any, in pending queue. Then, it sends either an “OK” or a “NOT OK” message.

  • Transaction acceptance/rejection phase − If the requesting site receives a majority “OK” on the transaction, it accepts the transaction and broadcasts “ACCEPT” to all the sites. Otherwise, it broadcasts “REJECT” to all the sites and rejects the transaction.

  • Transaction application phase − When a peer site receives a “REJECT” message, it removes this transaction from its pending list and reconsiders all deferred transactions. When a peer site receives an “ACCEPT” message, it applies the transaction and rejects all the deferred transactions in the pending queue which are in conflict with this transaction. It sends an “ACK” to the requesting slave on completion.

Circulating Token Algorithm

In this approach the transactions in the system are serialized using a circulating token and executed accordingly against every replica of the database. Thus, all the transactions are accepted, i.e. none is rejected. This has two phases −

  • Transaction serialization phase − In this phase, all transactions are scheduled to run in a serialization order. Each transaction in each site is assigned a unique ticket from a sequential series, indicating the order of transaction. Once a transaction has been assigned a ticket, it is broadcasted to all the sites.

  • Transaction application phase − When a site receives a transaction along with its ticket, it places the transaction for execution according to its ticket. After the transaction has finished execution, this site broadcasts an appropriate message. A transaction ends when it has completed execution in all the sites.

A database management system is susceptible to a number of failures. In this chapter we will study the failure types and commit protocols. In a distributed database system, failures can be broadly categorized into soft failures, hard failures and network failures.

Soft Failure

Soft failure is the type of failure that causes the loss in volatile memory of the computer and not in the persistent storage. Here, the information stored in the non-persistent storage like main memory, buffers, caches or registers, is lost. They are also known as system crash. The various types of soft failures are as follows −

  • Operating system failure.
  • Main memory crash.
  • Transaction failure or abortion.
  • System generated error like integer overflow or divide-by-zero error.
  • Failure of supporting software.
  • Power failure.

Hard Failure

A hard failure is the type of failure that causes loss of data in the persistent or non-volatile storage like disk. Disk failure may cause corruption of data in some disk blocks or failure of the total disk. The causes of a hard failure are −

  • Power failure.
  • Faults in media.
  • Read-write malfunction.
  • Corruption of information on the disk.
  • Read/write head crash of disk.

Recovery from disk failures can be short, if there is a new, formatted, and ready-to-use disk on reserve. Otherwise, duration includes the time it takes to get a purchase order, buy the disk, and prepare it.

Network Failure

Network failures are prevalent in distributed or network databases. These comprises of the errors induced in the database system due to the distributed nature of the data and transferring data over the network. The causes of network failure are as follows −

  • Communication link failure.
  • Network congestion.
  • Information corruption during transfer.
  • Site failures.
  • Network partitioning.

Commit Protocols

Any database system should guarantee that the desirable properties of a transaction are maintained even after failures. If a failure occurs during the execution of a transaction, it may happen that all the changes brought about by the transaction are not committed. This makes the database inconsistent. Commit protocols prevent this scenario using either transaction undo (rollback) or transaction redo (roll forward).

Commit Point

The point of time at which the decision is made whether to commit or abort a transaction, is known as commit point. Following are the properties of a commit point.

  • It is a point of time when the database is consistent.

  • At this point, the modifications brought about by the database can be seen by the other transactions. All transactions can have a consistent view of the database.

  • At this point, all the operations of transaction have been successfully executed and their effects have been recorded in transaction log.

  • At this point, a transaction can be safely undone, if required.

  • At this point, a transaction releases all the locks held by it.

Transaction Undo

The process of undoing all the changes made to a database by a transaction is called transaction undo or transaction rollback. This is mostly applied in case of soft failure.

Transaction Redo

The process of reapplying the changes made to a database by a transaction is called transaction redo or transaction roll forward. This is mostly applied for recovery from a hard failure.

Transaction Log

A transaction log is a sequential file that keeps track of transaction operations on database items. As the log is sequential in nature, it is processed sequentially either from the beginning or from the end.

Purposes of a transaction log −

  • To support commit protocols to commit or support transactions.
  • To aid database recovery after failure.

A transaction log is usually kept on the disk, so that it is not affected by soft failures. Additionally, the log is periodically backed up to an archival storage like magnetic tape to protect it from disk failures as well.

Lists in Transaction Logs

The transaction log maintains five types of lists depending upon the status of the transaction. This list aids the recovery manager to ascertain the status of a transaction. The status and the corresponding lists are as follows −

  • A transaction that has a transaction start record and a transaction commit record, is a committed transaction – maintained in commit list.

  • A transaction that has a transaction start record and a transaction failed record but not a transaction abort record, is a failed transaction – maintained in failed list.

  • A transaction that has a transaction start record and a transaction abort record is an aborted transaction – maintained in abort list.

  • A transaction that has a transaction start record and a transaction before-commit record is a before-commit transaction, i.e. a transaction where all the operations have been executed but not committed – maintained in before-commit list.

  • A transaction that has a transaction start record but no records of before-commit, commit, abort or failed, is an active transaction – maintained in active list.

Immediate Update and Deferred Update

Immediate Update and Deferred Update are two methods for maintaining transaction logs.

In immediate update mode, when a transaction executes, the updates made by the transaction are written directly onto the disk. The old values and the updates values are written onto the log before writing to the database in disk. On commit, the changes made to the disk are made permanent. On rollback, changes made by the transaction in the database are discarded and the old values are restored into the database from the old values stored in the log.

In deferred update mode, when a transaction executes, the updates made to the database by the transaction are recorded in the log file. On commit, the changes in the log are written onto the disk. On rollback, the changes in the log are discarded and no changes are applied to the database.

In order to recuperate from database failure, database management systems resort to a number of recovery management techniques. In this chapter, we will study the different approaches for database recovery.

The typical strategies for database recovery are −

  • In case of soft failures that result in inconsistency of database, recovery strategy includes transaction undo or rollback. However, sometimes, transaction redo may also be adopted to recover to a consistent state of the transaction.

  • In case of hard failures resulting in extensive damage to database, recovery strategies encompass restoring a past copy of the database from archival backup. A more current state of the database is obtained through redoing operations of committed transactions from transaction log.

Recovery from Power Failure

Power failure causes loss of information in the non-persistent memory. When power is restored, the operating system and the database management system restart. Recovery manager initiates recovery from the transaction logs.

In case of immediate update mode, the recovery manager takes the following actions −

  • Transactions which are in active list and failed list are undone and written on the abort list.

  • Transactions which are in before-commit list are redone.

  • No action is taken for transactions in commit or abort lists.

In case of deferred update mode, the recovery manager takes the following actions −

  • Transactions which are in the active list and failed list are written onto the abort list. No undo operations are required since the changes have not been written to the disk yet.

  • Transactions which are in before-commit list are redone.

  • No action is taken for transactions in commit or abort lists.

Recovery from Disk Failure

A disk failure or hard crash causes a total database loss. To recover from this hard crash, a new disk is prepared, then the operating system is restored, and finally the database is recovered using the database backup and transaction log. The recovery method is same for both immediate and deferred update modes.

The recovery manager takes the following actions −

  • The transactions in the commit list and before-commit list are redone and written onto the commit list in the transaction log.

  • The transactions in the active list and failed list are undone and written onto the abort list in the transaction log.

Checkpointing

Checkpoint is a point of time at which a record is written onto the database from the buffers. As a consequence, in case of a system crash, the recovery manager does not have to redo the transactions that have been committed before checkpoint. Periodical checkpointing shortens the recovery process.

The two types of checkpointing techniques are −

  • Consistent checkpointing
  • Fuzzy checkpointing

Consistent Checkpointing

Consistent checkpointing creates a consistent image of the database at checkpoint. During recovery, only those transactions which are on the right side of the last checkpoint are undone or redone. The transactions to the left side of the last consistent checkpoint are already committed and needn’t be processed again. The actions taken for checkpointing are −

  • The active transactions are suspended temporarily.
  • All changes in main-memory buffers are written onto the disk.
  • A “checkpoint” record is written in the transaction log.
  • The transaction log is written to the disk.
  • The suspended transactions are resumed.

If in step 4, the transaction log is archived as well, then this checkpointing aids in recovery from disk failures and power failures, otherwise it aids recovery from only power failures.

Fuzzy Checkpointing

In fuzzy checkpointing, at the time of checkpoint, all the active transactions are written in the log. In case of power failure, the recovery manager processes only those transactions that were active during checkpoint and later. The transactions that have been committed before checkpoint are written to the disk and hence need not be redone.

Example of Checkpointing

Let us consider that in system the time of checkpointing is tcheck and the time of system crash is tfail. Let there be four transactions Ta, Tb, Tc and Td such that −

  • Ta commits before checkpoint.

  • Tb starts before checkpoint and commits before system crash.

  • Tc starts after checkpoint and commits before system crash.

  • Td starts after checkpoint and was active at the time of system crash.

The situation is depicted in the following diagram −

The actions that are taken by the recovery manager are −

  • Nothing is done with Ta.
  • Transaction redo is performed for Tb and Tc.
  • Transaction undo is performed for Td.

Transaction Recovery Using UNDO / REDO

Transaction recovery is done to eliminate the adverse effects of faulty transactions rather than to recover from a failure. Faulty transactions include all transactions that have changed the database into undesired state and the transactions that have used values written by the faulty transactions.

Transaction recovery in these cases is a two-step process −

  • UNDO all faulty transactions and transactions that may be affected by the faulty transactions.

  • REDO all transactions that are not faulty but have been undone due to the faulty transactions.

Steps for the UNDO operation are −

  • If the faulty transaction has done INSERT, the recovery manager deletes the data item(s) inserted.

  • If the faulty transaction has done DELETE, the recovery manager inserts the deleted data item(s) from the log.

  • If the faulty transaction has done UPDATE, the recovery manager eliminates the value by writing the before-update value from the log.

Steps for the REDO operation are −

  • If the transaction has done INSERT, the recovery manager generates an insert from the log.

  • If the transaction has done DELETE, the recovery manager generates a delete from the log.

  • If the transaction has done UPDATE, the recovery manager generates an update from the log.

In a local database system, for committing a transaction, the transaction manager has to only convey the decision to commit to the recovery manager. However, in a distributed system, the transaction manager should convey the decision to commit to all the servers in the various sites where the transaction is being executed and uniformly enforce the decision. When processing is complete at each site, it reaches the partially committed transaction state and waits for all other transactions to reach their partially committed states. When it receives the message that all the sites are ready to commit, it starts to commit. In a distributed system, either all sites commit or none of them does.

The different distributed commit protocols are −

  • One-phase commit
  • Two-phase commit
  • Three-phase commit

Distributed One-phase Commit

Distributed one-phase commit is the simplest commit protocol. Let us consider that there is a controlling site and a number of slave sites where the transaction is being executed. The steps in distributed commit are −

  • After each slave has locally completed its transaction, it sends a “DONE” message to the controlling site.

  • The slaves wait for “Commit” or “Abort” message from the controlling site. This waiting time is called window of vulnerability.

  • When the controlling site receives “DONE” message from each slave, it makes a decision to commit or abort. This is called the commit point. Then, it sends this message to all the slaves.

  • On receiving this message, a slave either commits or aborts and then sends an acknowledgement message to the controlling site.

Distributed Two-phase Commit

Distributed two-phase commit reduces the vulnerability of one-phase commit protocols. The steps performed in the two phases are as follows −

Phase 1: Prepare Phase

  • After each slave has locally completed its transaction, it sends a “DONE” message to the controlling site. When the controlling site has received “DONE” message from all slaves, it sends a “Prepare” message to the slaves.

  • The slaves vote on whether they still want to commit or not. If a slave wants to commit, it sends a “Ready” message.

  • A slave that does not want to commit sends a “Not Ready” message. This may happen when the slave has conflicting concurrent transactions or there is a timeout.

Phase 2: Commit/Abort Phase

  • After the controlling site has received “Ready” message from all the slaves −

    • The controlling site sends a “Global Commit” message to the slaves.

    • The slaves apply the transaction and send a “Commit ACK” message to the controlling site.

    • When the controlling site receives “Commit ACK” message from all the slaves, it considers the transaction as committed.

  • After the controlling site has received the first “Not Ready” message from any slave −

    • The controlling site sends a “Global Abort” message to the slaves.

    • The slaves abort the transaction and send a “Abort ACK” message to the controlling site.

    • When the controlling site receives “Abort ACK” message from all the slaves, it considers the transaction as aborted.

Distributed Three-phase Commit

The steps in distributed three-phase commit are as follows −

Phase 1: Prepare Phase

The steps are same as in distributed two-phase commit.

Phase 2: Prepare to Commit Phase

  • The controlling site issues an “Enter Prepared State” broadcast message.
  • The slave sites vote “OK” in response.

Phase 3: Commit / Abort Phase

The steps are same as two-phase commit except that “Commit ACK”/”Abort ACK” message is not required.

In this chapter, we will look into the threats that a database system faces and the measures of control. We will also study cryptography as a security tool.

Database Security and Threats

Data security is an imperative aspect of any database system. It is of particular importance in distributed systems because of large number of users, fragmented and replicated data, multiple sites and distributed control.

Threats in a Database

  • Availability loss − Availability loss refers to non-availability of database objects by legitimate users.

  • Integrity loss − Integrity loss occurs when unacceptable operations are performed upon the database either accidentally or maliciously. This may happen while creating, inserting, updating or deleting data. It results in corrupted data leading to incorrect decisions.

  • Confidentiality loss − Confidentiality loss occurs due to unauthorized or unintentional disclosure of confidential information. It may result in illegal actions, security threats and loss in public confidence.

Measures of Control

The measures of control can be broadly divided into the following categories −

  • Access Control − Access control includes security mechanisms in a database management system to protect against unauthorized access. A user can gain access to the database after clearing the login process through only valid user accounts. Each user account is password protected.

  • Flow Control − Distributed systems encompass a lot of data flow from one site to another and also within a site. Flow control prevents data from being transferred in such a way that it can be accessed by unauthorized agents. A flow policy lists out the channels through which information can flow. It also defines security classes for data as well as transactions.

  • Data Encryption − Data encryption refers to coding data when sensitive data is to be communicated over public channels. Even if an unauthorized agent gains access of the data, he cannot understand it since it is in an incomprehensible format.

What is Cryptography?

Cryptography is the science of encoding information before sending via unreliable communication paths so that only an authorized receiver can decode and use it.

The coded message is called cipher text and the original message is called plain text. The process of converting plain text to cipher text by the sender is called encoding or encryption. The process of converting cipher text to plain text by the receiver is called decoding or decryption.

The entire procedure of communicating using cryptography can be illustrated through the following diagram −

Conventional Encryption Methods

In conventional cryptography, the encryption and decryption is done using the same secret key. Here, the sender encrypts the message with an encryption algorithm using a copy of the secret key. The encrypted message is then send over public communication channels. On receiving the encrypted message, the receiver decrypts it with a corresponding decryption algorithm using the same secret key.

Security in conventional cryptography depends on two factors −

  • A sound algorithm which is known to all.

  • A randomly generated, preferably long secret key known only by the sender and the receiver.

The most famous conventional cryptography algorithm is Data Encryption Standard or DES.

The advantage of this method is its easy applicability. However, the greatest problem of conventional cryptography is sharing the secret key between the communicating parties. The ways to send the key are cumbersome and highly susceptible to eavesdropping.

Public Key Cryptography

In contrast to conventional cryptography, public key cryptography uses two different keys, referred to as public key and the private key. Each user generates the pair of public key and private key. The user then puts the public key in an accessible place. When a sender wants to sends a message, he encrypts it using the public key of the receiver. On receiving the encrypted message, the receiver decrypts it using his private key. Since the private key is not known to anyone but the receiver, no other person who receives the message can decrypt it.

The most popular public key cryptography algorithms are RSA algorithm and Diffie– Hellman algorithm. This method is very secure to send private messages. However, the problem is, it involves a lot of computations and so proves to be inefficient for long messages.

The solution is to use a combination of conventional and public key cryptography. The secret key is encrypted using public key cryptography before sharing between the communicating parties. Then, the message is send using conventional cryptography with the aid of the shared secret key.

Digital Signatures

A Digital Signature (DS) is an authentication technique based on public key cryptography used in e-commerce applications. It associates a unique mark to an individual within the body of his message. This helps others to authenticate valid senders of messages.

Typically, a user’s digital signature varies from message to message in order to provide security against counterfeiting. The method is as follows −

  • The sender takes a message, calculates the message digest of the message and signs it digest with a private key.

  • The sender then appends the signed digest along with the plaintext message.

  • The message is sent over communication channel.

  • The receiver removes the appended signed digest and verifies the digest using the corresponding public key.

  • The receiver then takes the plaintext message and runs it through the same message digest algorithm.

  • If the results of step 4 and step 5 match, then the receiver knows that the message has integrity and authentic.

A distributed system needs additional security measures than centralized system, since there are many users, diversified data, multiple sites and distributed control. In this chapter, we will look into the various facets of distributed database security.

In distributed communication systems, there are two types of intruders −

  • Passive eavesdroppers − They monitor the messages and get hold of private information.

  • Active attackers − They not only monitor the messages but also corrupt data by inserting new data or modifying existing data.

Security measures encompass security in communications, security in data and data auditing.

Communications Security

In a distributed database, a lot of data communication takes place owing to the diversified location of data, users and transactions. So, it demands secure communication between users and databases and between the different database environments.

Security in communication encompasses the following −

  • Data should not be corrupt during transfer.

  • The communication channel should be protected against both passive eavesdroppers and active attackers.

  • In order to achieve the above stated requirements, well-defined security algorithms and protocols should be adopted.

Two popular, consistent technologies for achieving end-to-end secure communications are −

  • Secure Socket Layer Protocol or Transport Layer Security Protocol.
  • Virtual Private Networks (VPN).

Data Security

In distributed systems, it is imperative to adopt measure to secure data apart from communications. The data security measures are −

  • Authentication and authorization − These are the access control measures adopted to ensure that only authentic users can use the database. To provide authentication digital certificates are used. Besides, login is restricted through username/password combination.

  • Data encryption − The two approaches for data encryption in distributed systems are −

    • Internal to distributed database approach: The user applications encrypt the data and then store the encrypted data in the database. For using the stored data, the applications fetch the encrypted data from the database and then decrypt it.

    • External to distributed database: The distributed database system has its own encryption capabilities. The user applications store data and retrieve them without realizing that the data is stored in an encrypted form in the database.

  • Validated input − In this security measure, the user application checks for each input before it can be used for updating the database. An un-validated input can cause a wide range of exploits like buffer overrun, command injection, cross-site scripting and corruption in data.

Data Auditing

A database security system needs to detect and monitor security violations, in order to ascertain the security measures it should adopt. It is often very difficult to detect breach of security at the time of occurrences. One method to identify security violations is to examine audit logs. Audit logs contain information such as −

  • Date, time and site of failed access attempts.
  • Details of successful access attempts.
  • Vital modifications in the database system.
  • Access of huge amounts of data, particularly from databases in multiple sites.

All the above information gives an insight of the activities in the database. A periodical analysis of the log helps to identify any unnatural activity along with its site and time of occurrence. This log is ideally stored in a separate server so that it is inaccessible to attackers.