МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


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


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


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


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


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


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

ПУБЛИКАЦИЯ БАЗ ДАННЫХ В INTERNET





 

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

1. Создание программного обеспечения БД, формирующего отчеты в виде документов HTML.

2. Создание Web-интерфейса к БД.

Публикация в Internet имеет следующие преимущества по сравнению с обычными локальными и сетевыми БД:

1) возможность удаленного доступа к БД через глобальную или локальную сеть;

2) использование преимуществ протокола HTTP при передаче различной, в том числе мультимедийной, информации;

3) наличие стандартного интерфейса у БД.

Web-интерфейс является стандартом де-факто для любого программного обеспечения, в том числе БД.

Существует два основных подхода к публикации БД в Internet. Первый подход подразумевает формирование статических документов HTML из содержимого БД с последующим доступом к сформированным документам при помощи сервера Web. При модификации содержимого БД осуществляется обновление документов HTML. Программу, осуществляющую преобразование содержимого БД в набор документов

 
 

HTML, будем называть преобразователем. На рис. 4 показано взаимодействие программ при публикации БД в Internet в рамках первого подхода.

Публикация БД в Internet в рамках первого подхода сводится к написанию программы-преобразователя, которая будет периодически или при изменении БД полностью или частично модифицировать документы HTML. К недостаткам первого подхода можно отнести сложности модификации БД и поиска в БД.

Второй подход состоит в динамической генерации документов HTML в соответствии с запросами пользователя Web. При запросе пользователя к БД сервер Web запускает программу, которая передает запрос БД, получает ответ, формирует в соответствии с полученным ответом документ HTML и отправляет его клиенту Web. Программа, осуществляющая работу с БД, может быть создана с использованием любой технологии стороны сервера (например, CGI), либо быть сценарием стороны сервера (например, PHP). На рис. 5 показано взаимодействие программ при публикации БД в Internet с использованием технологии CGI.

Приложение CGI фактически является в данном случае посредником между СУБД и клиентом Web. Архитектура системы на рис. 5 является трехзвенной, в отличие от двухзвенной архитектуры "Клиент-Сервер". Общий вид трехзвенной архитектуры изображен на рис. 6.

 
 

При публикации БД в Internet с использованием технологии CGI тонким клиентом является клиент Web, толстым клиентом – приложение CGI, а сервером – СУБД, которая в данном случае называется сервером баз данных.

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

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

BDE;

ODBC;

InterBase Server;

Microsoft SQL Server;

MySQL;

mSQL;

PostgreSQL;

SyBase;

Informix;

Oracle.

 

Программный интерфейс, как правило, включает средства инициализации СУБД, установления связи с БД, передачи запросов БД и разбора ответов от сервера. Рассмотрим подробнее API некоторых серверов БД.

Фирма Inprise поставляет вместе со своей СУБД BDE два программных интерфейса различного уровня. Программный интерфейс низкого уровня (IDAPI) - это библиотека функций для доступа к базам данных в различных форматах. Интерфейс высокого уровня - это библиотека компонентов для сред визуального программирования Delphi и C++Builder, которая использует интерфейс низкого уровня. В табл. 13 приведены основные классы библиотеки компонентов BDE.

Таблица 13
Основные классы библиотеки компонентов BDE
Название класса Описание
TDataModule Контейнер для хранения остальных компонентов BDE
TDatabase База данных. Содержит название БД или папку с таблицами БД
TQuery SQL запрос. Включает содержимое запроса и метод для его отправки серверу
TDataSet Набор данных. Включает данные, полученные от сервера в качестве ответа

 

Вместе с сервером MySQL фирмы TcX поставляется библиотека, реализующая API для доступа к БД MySQL. В табл. 14 приведены основные функции этой библиотеки.

Таблица 14
Основные функции библиотеки MySQL
Функция Описание
MYSQL *mysql_init( MYSQL *mysql); Инициализация структуры MYSQL для последующего подключения к СУБД
MYSQL *mysql_connect( MYSQL *mysql, const char *host, const char *user, const char *passwd); Установка соединения с СУБД без соединения с БД
int mysql_create_db( MYSQL *mysql, const char *db); Создание новой БД. Возвращает 0 в случае успешного завершения
int mysql_select_db( MYSQL *mysql, const char *db); Установить соединение с БД. Возвращает 0 в случае успешного завершения
Продолжение табл. 14
Функция Описание
int mysql_query( MYSQL *mysql, const char *query); Отправить запрос SQL. Возвращает 0 в случае успешного завершения
int mysql_real_query( MYSQL *mysql, const char *qyery, unsigned int length); Отправить запрос SQL, содержащий двоичные данные. Возвращает 0 в случае успешного завершения
MYSQL_RES * mysql_store_result( MYSQL *mysql); Получить результат последнего запроса
unsigned int mysql_num_fields( MYSQL_RES *result); Количество полей в полученном результате
int mysql_num_rows( MYSQL_RES *result); Количество записей в полученном результате
MYSQL_FIELD * mysql_fetch_fields( MYSQL_RES *result); Возвращает массив структур MYSQL_FIELD, содержащих поля полученного ответа
MYSQL_ROW mysql_fetch_row( MYSQL_RES *result); Выбрать текущую запись из набора и переместить указатель на следующую запись
void mysql_data_seek( MYSQL_RES *res, unsigned int offset); Перемещение указателя в наборе данных на указанную позицию
my_bool mysql_eof( MYSQL_RES *res); Возвращает ненулевое значение, если указатель набора данных перемещен за последнюю запись в наборе
void mysql_free_result( MYSQL_RES *result); Освобождает память, занятую результатами последнего запроса
Окончание табл. 14
Функция Описание
int mysql_drop_db( MYSQL *mysql, const char *db); Уничтожение БД. Возвращает 0 в случае успешного завершения
unsigned int mysql_errno( MYSQL *mysql); Возвращает номер последней ошибки
char *mysql_error( MYSQL *mysql); Возвращает строку с сообщением о последней ошибке
void mysql_close( MYSQL *mysql); Разрыв соединения с сервером БД

 

 
 

В настоящее время также разработаны API доступа к БД для сценариев стороны сервера, в частности, для PHP. Взаимодействие программ при публикации БД с использованием технологии PHP изображено на рис. 7.

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

В табл. 15 приведены основные функции для доступа к БД MySQL.

 

Таблица 15
Основные функции PHP для доступа к БД MySQL
Функция Описание
int mysql_affected_rows(int [link_identifier] ) Количество столбцов, использованных предыдущими mysql операциями
int mysql_close(int [link_identifier] ) Закрывает mysql соединение
int mysql_connect(string [hostname] [:port] , string [username] , string [password] ) Открывает соединение с mysql сервером
int mysql_create_db(string database name, int [link_identifier] ) Создает базу данных mysql
int mysql_data_seek(int result_identifier, int row_number) Перемещает внутренний указатель результата
int mysql_db_query(string database, string query, int [link_identifier] ) Посылает mysql запрос
int mysql_drop_db(string database_name, int [link_identifier] ) Удаляет базу данных mysql
int mysql_errno(int [link_identifier] ) Возвращает номер сообщения об ошибке предыдущей операции mysql
string mysql_error(int [link_identifier] ) Возвращает текст сообщения об ошибке предыдущей операции mysql
array mysql_fetch_array(int result) Выбрать результат как ассоциативный массив
object mysql_fetch_field(int result, int [field_offset] ) Получает информацию о столбце из результата и возвращает ее как объект
Продолжение табл. 15
Функция Описание
array mysql_fetch_lengths(int result) Получает максимальный размер данных для каждого выходного значения
object mysql_fetch_object(int result) Получает строку результата как объект
array mysql_fetch_row(int result) Получите строку результата как пронумерованный массив
string mysql_field_name(int result, int field_index) Получает имя определенного поля в результате
int mysql_field_seek(int result, int field_offset) Устанавливает указатель запроса в определенное поле
string mysql_field_table(int result, int field_offset) Получает имя таблицы, в которой находится указанное поле
string mysql_field_type(int result, int field_offset) Получает тип указанного поля в результате
string mysql_field_flags(int result, int field_offset) Получает флаги, связанные с указанным полем в результате
int mysql_field_len(int result, int field_offset) Возвращает длину указанного поля
int mysql_free_result(int result) Освобождает память результата
int mysql_insert_id(int [link_identifier] ) Получает id сгенерированный предыдущим выполнением SQL-запроса INSERT
int mysql_list_fields(string database_name, string table_name, int [link_identifier] ) Показывает список полей mysql в результате запроса
int mysql_list_dbs(int [link_identifier] ) Показывает список доступных Баз Данных на сервере
int mysql_list_tables(string database, int [link_identifier] ) Показывает список таблиц в базе данных mysql
Окончание табл. 15
Функция Описание
int mysql_num_fields(int result) Получает количество полей в результате
int mysql_num_rows(int result) Получает количество столбцов в результате
int mysql_pconnect(string [hostname] [:port] , string [username] , string [password] ) Открывает устойчивое соединение с mysql-сервером
int mysql_query(string query, int [link_identifier] ) Отправляет SQL-запрос на mysql
int mysql_result(int result, int row, mixed field) Получает данные результата
int mysql_select_db(string database_name, int [link_identifier] ) Выбирает Базу Данных mysql
string mysql_tablename(int result, int i) Получает имя таблицы, содержащей указанное поле

 

Более подробную информацию о доступе к базам данных MySQL из сценариев PHP можно получить в руководствах по СУБД MySQL и языку интерпретатора PHP.


Литература

 

1. Золотов С. Протоколы Internet. – СПб.: BHV – Санкт-Петербург,
1998. – 304 с.

2. Семенов Ю. А. Протоколы и ресурсы Internet. – М.: Радио и связь,
1996. – 320 с.

3. Фролов А. В., Фролов Г. В. Сервер Web своими руками. ­– М.: ДИАЛОГ-МИФИ, 1997. (Библиотека системного программиста, т. 29).

4. Браун М., Ханнатт Д. HTML 3.2 в подлиннике. – СПб.: BHV – Санкт-Петербург, 1997.

5. Фролов А. В., Фролов Г. В. Javascript. – М.: ДИАЛОГ-МИФИ, 1998. (Библиотека системного программиста, т. 34).

6. Тихомиров Ю. Microsoft SQL Server 7.0 в подлиннике. – СПб.: BHV – Санкт-Петербург, 1999. – 720 с.

7. Яргер Р., Риз Дж., Кинг Т. MySQL и mSQL. Базы данных для небольших предприятий и Интернета – СПб.: Символ-Плюс, 2000. – 560 с.

8. Фролов А. В., Фролов Г. В. Microsoft Visual J++. Создание приложений и аплетов на языке Java. В 2-х ч. – М.: ДИАЛОГ-МИФИ, 1997. (Библиотека системного программиста, т. 30, 32).

9. Фролов А. В., Фролов Г. В. Разработка приложений для Internet. – М.: ДИАЛОГ-МИФИ, 1997. – 286 c. (Библиотека системного программиста, т. 31).

10. Храмцов П. Б. Лабиринт Internet. Практическое руководство. – М.: ”Электронинформ”, 1996. – 256 c.

11. Джамса К., Коуп К. Программирование для Internet в среде Windows: Пер. с англ. – СПб.: Питер, 1996. – 688 с.

12. Барфилд Э., Уолтерс Б. Программирование "клиент-сервер" в локальных вычислительных сетях: Пер. с англ. – М.: Информационно-издательский дом "Филинъ", 1997. – 424 с.

 





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.