RSS    

   Реферат: Средства доступа к базам данных в Internet и свободно доступная СУБД POSTGRES95

    SELECT city, population FROM cities['epoch','now'] WHERE city='Moscow';

будет являться следующая таблица:

city

population

Moscow 7 360 000
Moscow 8 950 000

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

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

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

    CREATE TABLE salary (name text,pay_by_quarter int4[ ], schedule char16[ ][ ]);

Это свойство POSTGRES95 сближает ее со свойствами объектно-ориентированных СУБД, хотя семантические возможности модели данных POPSTGRES95 существенно слабее.

Язык запросов СУБД POSTGRES95 - POSTQUEL- является вариантом нового стандарта языка SQL-3. Он имеет операторы для определения схемы базы данных (CREATE TABLE, ALTER TABLE), манипулирования данными (UPDATE- заменить, DELETE - удалить, SELECT- выбрать, INSERT- вставить и др.), операторы управления транзакциями, предоставлений и ограничений доступа и др. POSTQUEL, кроме этого, предоставляет много дополнительных возможностей. В их число входят расширенная система типов (кроме обычных типов int, float, real, smallint, char(N), varcha(N), date, time и др. реализована возможность создания пользователями произвольного числа своих типов), поддерживается иерархия и наследование классов, предоставляется возможность определения собственных функций, операторов и агрегатов. В таблицах могут храниться данные размером более 8 KB. Это позволяет осуществлять, так называемый, интерфейс больших объектов (Large Objects Interface), который применяет файл-ориентированный доступ к данным, объявленных как тип large. POSTQUEL не поддерживает подзапросы, но они могут легко быть осуществлены с помощью самостоятельно написанных SQL-функций.

POSTQUEL поддерживает два типа функций: SQL-функции и функции, написанные на языке программирования, например, на Си. Кроме функций, пользователь может создавать свои агрегаты и операторы. POSTGRES95 позволяет легко вводить новые структуры, используя не физическую, а логическую модель хранения данных. В системных каталогах POSTGRES95, в отличие от стандартных реляционных систем, хранится информация не только об отношениях и атрибутах, но также и информация о типах, функциях, методах доступа и т.п. В POSTGRES95 системные каталоги представлены следующими классами: pg_database - базы данных; pg_class - отношения; pg_attribut - атрибуты; pg_proc - процедуры (и на Си, и на SQL); pg_type - типы; pg_aggregate - функции и агрегаты; и др. Каждый класс располагается в файле с соответствующим именем, которое начинается с pg_, куда помещаются все вносимые пользователем изменения при создании таблиц, типов, функций и т.д. Между классами установлены отношения, которые позволяют связывать различные структуры и осуществлять внутренние операции между ними.

Архитектура СУБД POSTGRES95

Архитектура СУБД POSTGRES95 основана на модели "клиент-сервер". Сессия с СУБД состоит из следующих взаимодействующих процессов:

  • postmaster - управляющий процесс-демон, который руководит взаимодействием между внешними и внутренними процессами; он выделяет совместно используемый буффер динамической памяти и выполняет другие инициализации во время запуска.
  • postgres - внутренний серверный процесс базы данных, исполняющий запросы клиента. Postmaster всегда запускает новый postgres-процесс для каждого клиентского приложения. Этот серверный процесс выполняется на машине сервера.
  • внешняя прикладная программа, которая может находиться на другом компьюторе (например, рабочей станции). Она соединяется с postgres через postmaster.

Один раз запущенный процесс-демон postmaster управляет установленным набором баз данных на серевере. Внешняя прикладная программа, желающая получить доступ к одной из этих баз данных, вызывает библиотеку функций прикладного программного интерфейса LIBPQ (рис.4). С помощью этих функций запрос по сети передается postmaster'у, который порождает серверный процесс и соединяет внешнюю программу с сервером. С этого момента клиентские и серверные процессы взаимодействуют без помощи postmaster'a. Таким образом, postmaster постоянно работает, ожидая запросов, в то время, как происходят и завершаются соединения с внешними приложениями. Прикладной программный интерфейс LIBPQ позволяет одной клиентской программе совершать во время одной сессии множественные соединения с сервером БД. Но тем не менее, внешняя программа - это однопотоковый процесс. Многопоточность процессов библиотекой LIBPQ не поддерживается. Другой особенностью архитектуры СУБД POSTGRES95 является то, что postmaster и postgres серверные процессы всегда выполняются на одной и той же машине - сервере базы данных, тогда как внешние программы могут находиться на любых машинах сети.


Рис. 4. Схема взаимодействия процессов POSTGRES95

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

#    <name>                     <address>                   <mask>

     all                        127.0.0.1                   0.0.0.0

     all                        194.85.135.66               0.0.0.0

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

Доступ к базам данных под управлением СУБД POSTGRES95

В СУБД POSTGRES95 реализованы две основные возможности доступа к своим базам данных:

  • через psql - интерфейс командной строки командной оболочки Shell;
  • из прикладной программы, написанной на языке программирования Си (или другом языке) с использованием функций прикладного интерфейса LIBPQ.

Psql - это интерактивный терминальный монитор, позволяющий пользователю формулировать, редактировать и выполнять наборы команд - операторов языка POSTQUEL. Он запускается в режиме командной строки ОС UNIX с указанием имени базы данных:

       % psql polyn

Пользователь может непосредственно из командной строки монитора вводить одну за другой SQL-команды, а может передавать запрос в виде файла с SQL-операторами через командную строку ОС UNIX:

       % psql <>

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

LIBPQ - прикладной программный интерфейс POSTGRES95. Он представлен набором библиотечных функций (подпрограмм), которые позволяют клиентским программам посылать запросы серверу СУБД и получать от него соответствующие результаты. Для этого в прикладную программу включают главный файл библиотеки libpq-fe.h , встраивают функции LIBPQ и производят компиляцию кода программы с библиотеками POSTGRES95. Схема доступа к базам данных из внешних программ достаточно простая. С помощью специальной функции PQsetdb устанавливается TCP-соединение по определенному порту (как правило, - 5432) прикладной программы с процессом-демоном postmaster'ом. При этом функции передаются параметры значений имени базы данных, IP-адреса сервера, порта соединения. Далее при успешном соединении происходит выполнение в рамках функции PQexec SQL-операторов языка запросов POSTQUEL - открытие транзакции с базой данных, выполнение запроса и закрытие транзакции. После этого происходит завешение соединения с базой данных. При выполнении запроса по выбору данных из БД POSTGRES95 создает временную таблицу, в которую помещает полученный результат. Используя SQL-операторы, связанные с курсорами, и специальные функции LIBPQ по работе с кортежами, полями отношений, достаточно просто осуществляется доступ к элементам результирующей таблицы, что приводит к генерации произвольных отчетов по запросам пользователей. Ниже приведен фрагмент Cи-программы, реализующей запрос к базе данных "polyn":

pghost= "ns.polyn.kiae.su"

pgport= "5432";

pgoptions=NULL;

pgtty=NULL;

dbname= "polyn"

/*установка соединения с базой данных */

conn = PQsetdb(pghost, pgport, pgoptions, pgtty, dbname);

/* проверка статуса выполнения соединения */

if (PQstatus(conn)== CONNECTION_BAD)

{    printf("connection to database '%s' failed", dbname);

      printf("%s", PQerrorMessage(conn));

      PQfinish(conn);

      exit(1);

}

/* начало транзакции с БД*/

res=PQexec(conn,"BEGIN");

/* проверка статуса выполнения функции */

if (PQresultStatus(res)!=PGRES_COMMAND_OK)

{     printf("BEGIN command failed");

       PQclear(res);

       PQfinish(conn);

        exit(1);   }

PQclear(res);

/* выполнение SQL-опреатора установки курсора на результат запроса выбора поля isotop из отношения isotop */

res=PQexec(conn,"DECLARE myportal CURSOR FOR select isotop.isotop  from  isotop ");

/* выполнение оператора чтения по курсору */

res=PQexec(conn,"FETCH ALL in myportal");

/* определение количества кортежей и атрибутов в результирующей таблице */

ntups = PQntuples(res);

nflds = PQnfields(res);

/* вывод имен атрибутов */

for (i=0; i

%s

",PQfname(res,i));

}

/* вывод элементов результирующего отношения */

for(i=0; i%s\n",PQgetvalue(res,i,j));

          }

}

PQclear(res);

/* закрытие курсора */

res=PQexec(conn,"CLOSE myportal");

PQclear(res);

/* закрытие транзакции */

res=PQexec(conn,"END");

PQclear(res); 

/* закрытие соединения*/

PQfinish(conn);         

Для осуществления доступа к базам данных POSTGRES95 из World Wide Web можно использовать любые описанные выше механизмы - CGI, FastCGI, API, Java. Например, API-модуль сервера Apache PHP поддерживает взаимодействие с библиотеками POSTGRES95, а также разработаны два ODBC-драйвера, PostODBC и OpenLink ODBC, которые упрощают разработку программ-шлюзов. Но все же не стоит забывать и о достаточно удобном и простом средстве построения интерактивных приложений - Common Gataway Interface, который не требует никакого дополнительного программного обеспечения и достаточно легок в применении. В качестве примера использования CGI для доступа к базам данных под управлением POSTGRES95 можно привести созданную для РНЦ "Курчатовский институт" информационную систему базы численных данных о радиационном загрязнении 30-км зоны вокруг ЧАЭС "Проба" на Web-сервере Apache. Создание информационной системы было направлено на выполнение следующих задач:

  1. Ввод новой информации в БД для ведения базы данных.
  2. Генерация отчетов по запросам пользователей.

Структура взаимодействия программного обеспечения информационной системы выглядит следующим образом (рис. 5). Согласно технологии WWW, сервер протокола HTTP Apache, работающий, как правило, по 80-му порту стека протоколов TCP-IP, принимает запросы от пользователя с помощью клиентских программ просмотра гипертекстовых документов (Netscape Navigator, Internet Explorer, Lynx и др.). Формализованный доступ к данным в рамках информационной системы осуществляется на основе HTML-форм. С их помощью введенные в поля формы данные передаются на сервер Apache, который вызывает указанную в форме CGI-программу для обработки этих параметров и передает ей управление. CGI-скрипт с помощью функций прикладного интерфейса СУБД POSTGRES95 преобразует данные в SQL-запрос, устанавливает соединение с сервером СУБД и передает ему запрос на выполнение. Сервер СУБД выполняет запрос, обращаясь к БД "Проба" и возвращает результат CGI-скрипту, который, в свою очередь, формирует "на-лету" HTML-документ и через сервер Apache передает его клиенту.


Рис. 5. Структура взаимодействия программного обеспечения информационной системы

Все навигационные HTML-страницы информационной системы сгенерированны CGI-программами, так как все HTML-формы - для введения поисковых критериев (рис.6) и ввода новых данных для обновления БД (рис.7)- содержат значения из файлов словарей, что обеспечивает более удобный интерфейс и более быстрое заполнение форм.

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


Рис. 6. Интерфейсная страница для поиска данных


Рис. 7. HTML-страница для обновления базы данных

Заключение

Таким образом, на сегодняшний день существует достаточно средств, обеспечивающих как хранение накопленных массивов информации, так и осуществляющих удобный доступ к ним через интерфейс World Wide Web. И не всегда их необходимо приобретать по коммерческим расценкам. Internet предоставляет много ресурсов бесплатно - необходимо иметь только желание и определенную настойчивость для их получения. Свободно распространяемая СУБД POSTGRES95 является тому очевидным примером. А средства доступа из WWW выбирайте сами - все они достаточно функциональны и выбор зависит в основном от целей, которые вы преследуете.

Список литературы

  1. С.Д. Кузнецов. Введение в СУБД. "СУБД" 2-3,1996г.
  2. С.Д.Кузнецов. Доступ к базам данных с использованием технологии WWW. "СУБД" 5-6, 1996 г.
  3. http://oozoo.vnet.net/postgres95/
  4. http://www.fastcgi.com

Страницы: 1, 2, 3


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

Обратная связь

Поиск
Обратная связь
Реклама и размещение статей на сайте
© 2010.