MPI как программный инструментарий для обеспечения связи между ветвями параллельного приложения. Его содержание, структура и элементы, принципы работы. Составление распределенной базы данных. UML-диаграммы. Формирование руководства пользователя.
Аннотация к работе
Становление систем управления базами данных совпало по времени со значительными успехами в развитии технологий распределенных вычислений и параллельной обработки. Благодаря интеграции рабочих станций в распределенную среду становится возможным более эффективное распределение функций в ней, когда прикладные программы выполняются на рабочих станциях, называемых серверами приложений, а базы данных обслуживаются выделенными компьютерами, называемыми серверами баз данных. Благодаря применяемому в системах этого типа параллелизму управления данными пользователи получают серверы баз данных высокой производительности и высокой доступности за существенно меньшую цену, чем эквивалентные системы на основе мэйнфреймов. Он предоставляет программисту единый механизм взаимодействия ветвей внутри параллельного приложения независимо от машинной архитектуры (однопроцессорные / многопроцессорные с общей / раздельной памятью), взаимного расположения ветвей (на одном процессоре / на разных) и программного интерфейса пользователя операционной системы. Если ранг процесса равен нулю, то вызывается функция DOCLIENTPROCESS из модуля Client.cpp, иначе (ранг процесса отличен от нуля) вызывается функция DOSERVERPROCESS из модуля Server.cpp.В результате выполнения курсового проекта была разработана распределенная база данных в компьютерной сети.#include «GLOBVAR.
Введение
Становление систем управления базами данных совпало по времени со значительными успехами в развитии технологий распределенных вычислений и параллельной обработки. В результате возникли системы управления распределенными базами данных и системы управления параллельными базами данных. Именно эти системы становятся доминирующими инструментами для создания приложений интенсивной обработки данных.
Благодаря интеграции рабочих станций в распределенную среду становится возможным более эффективное распределение функций в ней, когда прикладные программы выполняются на рабочих станциях, называемых серверами приложений, а базы данных обслуживаются выделенными компьютерами, называемыми серверами баз данных. Это послужило источником развития таких распределенных архитектур, где в роли узлов выступают не просто компьютеры общего назначения, а специализированные серверы.
Параллельный компьютер или мультипроцессор сам по себе является распределенной системой, составленной из узлов (процессоров, компонентов памяти), соединенных быстрой сетью внутри общего корпуса. Технологии распределенных баз данных могут быть естественным образом пересмотрены и распространены на системы параллельных баз данных, т.е. баз данных на параллельных компьютерах. Благодаря применяемому в системах этого типа параллелизму управления данными пользователи получают серверы баз данных высокой производительности и высокой доступности за существенно меньшую цену, чем эквивалентные системы на основе мэйнфреймов.
Анализ требований
Необходимо разработать распределенную базу данных в компьютерной сети. РБД состоит из набора узлов, связанных коммуникационной сетью, в которой: 1) каждый узел - это полноценная СУБД сама по себе;
2) узлы взаимодействуют между собой таким образом, что пользователь любого из них может получить доступ к любым данным в сети так, как будто они находятся на его собственном узле.
Реализация
Среда параллельного программирования реализована на базе интерфейса передачи сообщений MPI, который фактически является стандартом для разработчиков параллельных программ.
MPI - это программный инструментарий для обеспечения связи между ветвями параллельного приложения. Он предоставляет программисту единый механизм взаимодействия ветвей внутри параллельного приложения независимо от машинной архитектуры (однопроцессорные / многопроцессорные с общей / раздельной памятью), взаимного расположения ветвей (на одном процессоре / на разных) и программного интерфейса пользователя операционной системы.
Программа, использующая MPI, легче отлаживается (сужается простор для совершения стереотипных ошибок параллельного программирования) и быстрее переносится на другие платформы (в идеале, простой перекомпиляцией).
Сильная сторона MPI состоит в том, что этот интерфейс предъявляет очень низкие требования к аппаратной части параллельного компьютера. Все, что нужно этому интерфейсу, - чтобы процессоры или ядра совместно использовали одну сеть, пригодную для передачи сообщений между любыми двумя процессами. Это позволяет MPI работать на любой стандартной параллельной системе, от симметричных многопроцессорных систем до систем с распределенной памятью, от суперкомпьютеров с высокой степенью параллелизма до кластеров.
MPI универсален и всеяден. Он не накладывает практически никаких ограничений на приложение, на железо, на каналы, которые используются для связи между компьютерами.
Система программ данного проекта реализована на основе архитектуры «клиент-сервер».
Описание переменных int PROCNUM
Переменная типа int, хранящая значение числа процессов, выполняющихся в рамках коммуникатора MPI_COMM_WORLD. Необходима для определения границы цикла for при отправке информации. int PROCRANK
Переменная типа int, хранящая значение ранга процесса, выполняющегося в рамках коммуникатора MPI_COMM_WORLD. Необходима для идентификации процесса.
MPI_Status Status
Переменная определенного MPI типа. Хранит информацию об успешности (неудаче) последней MPI операции.
Спецификации на программные модули
Main.cpp
Данный модуль является основным модулем программы. По своей структуре схож с классической MPI - программой, в которой в зависимости от ранга процесса (PROCRANK) выполняются те или иные действия. Вначале происходит инициализация MPI, определение ранга текущего процесса и количества выполняемых процессов.
Если ранг процесса равен нулю, то вызывается функция DOCLIENTPROCESS из модуля Client.cpp, иначе (ранг процесса отличен от нуля) вызывается функция DOSERVERPROCESS из модуля Server.cpp.
Затем происходит закрытие библиотеки MPI и программа завершает свою работу.
Client.cpp
Данный модуль содержит функцию DOCLIENTPROCESS, которая вызывается в случае, если ранг текущего процесса равен нулю. В начале работы данная функция осуществляет подключение клиента к базе данных (на данный момент пустой). Затем происходит ввод SQL - оператора пользователем и функция переходит в режим ожидания приема результатов от серверов. После приема происходит обработка полученной информации и запись результатов в базу данных клиента.
Server.cpp
Данный модуль содержит функцию DOSERVERPROCESS, которая вызывается в случае, если ранг текущего процесса отличен от нуля. В начале работы данная функция осуществляет подключение сервера к базе данных, соответствующей его номеру (база данных содержит информацию). Сервер ожидает приема SQL - запроса от клиента. После получения SQL - запроса сервер применяет его к своей базе данных и пересылает результат клиенту.
Схема взаимодействия модулей
Схема взаимодействия модулей программы представлена на рисунке 1. Основной код программы содержится в модуле Main.cpp. Модули Server.cpp и Client.cpp содержат функции работы сервера и клиента соответственно.
Рисунок 1 Схема взаимодействия модулей
UML - диаграммы
Диаграмма вариантов использования
Пользователь занимается эксплуатацией программы. Он имеет возможность осуществить SQL - запрос к базам данных серверов или ввести команду exit, соответствующую выходу из программы.
Рисунок 2 Диаграмма вариантов использования
Диаграмма состояний
После запуска программа переходит в состояние инициализации, а затем в состояние ожидание команды. В зависимости от введенной команды состояние меняется на состояние завершения работы или на состояние SQL - запроса, которое сменяется состоянием вывода результатов на экран, после чего программа вновь переходит в состояние ожидания команды.
Рисунок 3 Диаграмма состояний
Диаграмма действий клиента
Действия начинаются с стандартных для любой MPI - программы функции инициализации. Затем осуществляется ввод пользователем строки, которая может быть интерпретирована как команда выхода из программы клиента, либо как SQL - оператор, который должен быть применен к базам данных серверов. SQL - запрос отправляется серверам в виде строки функцией MPI_Send, результаты принимаются функцией MPI_Recv, выводятся на экран и записываются в базу данных клиента.
Рисунок 4 Диаграмма действий клиента
Диаграмма действий сервера
Действия начинаются со стандартных для любой MPI-программы функции инициализации. Затем происходит подключение сервера к соответствующей базе данных. После получения сообщения от клиента оно анализируется, и программа сервера либо завершает свою работу, либо выполняет SQL - запрос к своей базе данных, после чего пересылает результат клиенту.
Рисунок 5 Диаграмма действий сервера
Диаграмма последовательностей
Рассмотрим передачу данных между тремя программами (один клиент, три сервера). Клиент отравляет SQL - запрос всем серверам, после чего ожидает прием результата. Каждый сервер, получив SQL - запрос, применяет его к своей базе данных, после чего пересылает результат клиенту, который, получив его, обновляет свою базу данных.
Рисунок 6 Диаграмма последовательностей
Структурная схема сети
Отличительной особенностью данной сети является то, что все процессы находятся в одной области видимости (выполняются в рамках одного коммуникатора), однако напрямую взаимодействовать с базой данных другого процесса не могут. Только владелец базы данных может изменять или считывать ее содержимое. Это гарантирует защищенность данных.
Рисунок 7 Структурная схема сети
Руководство пользователя
В результате запуска приложения выводится сообщение о результате подключения к базе данных. В случае удачного подключения пользователю предлагается ввести запрос в БД или команду завершения работы. После обработки SQL - запроса, результаты пересылаются клиенту и записываются в базу данных клиента. После успешного SQL - запроса можно выполнить новую команду.
Вывод
В результате выполнения курсового проекта была разработана распределенная база данных в компьютерной сети. Узлы БД взаимодействуют между собой таким образом, что пользователь любого из них может получить доступ к любым данным в сети так, как будто они находятся на его собственном узле. Разработка проводилась на языке программирования С в среде Microsoft Visual Studio 2010 с использованием ОС Windows XP. Осуществлено функциональное тестирование разработанных приложений, которое показало корректность их работы.
Список литературы
программный база распределенный диаграмма
1) Э. Таненбаум. «Компьютерные сети», Питер 2011 г.
2) С.А. Зинкин. Курс лекций по курсу «Методы и средства обработки данных»
3) Р.Д. Верма «Справочник по функциям Win32 API»
4) Т.А. Павловская «С/С Программирование на языке высокого уровня», Питер 2007 г.
5) В.В. Подбельский, С.С. Фомин «Программирование на языке Си», 2007 г.