Д.Ю.Новиков
Построение механизма доступа к SQL-хранилищам данных из UNIX-систем
При построении промышленных систем, предоставляющих доступ к ресурсам Internet (системы интернет-провайдинга), одним из ключевых моментов является правильная организация хранилища данных, и разработка эффективных механизмов взаимодействия систем доступа к Internet с этим хранилищем. Обычно систему предоставления доступа к ресурсам Internet требуется встраивать в уже сложившуюся информационную систему предприятия с уже сформированным хранилищем данных, и, зачастую, приходится устанавливать взаимодействие между системами доступа и хранилищем данных, работающими под управлением разных операционных систем. В этом случае из-за различий в используемых технологиях, в протоколах передачи информации возникают проблемы, стандартного решения для которых не существует.
В докладе идет речь о построении механизма обмена данными между системами доступа, построенными на основе ОС UNIX и хранилищами данных. Особое внимание уделено случаю, когда база данных (БД) организована на основе SQL-сервера, управляемого ОС WindowsNT. Такая ситуация возникает, например, если сеть провайдера строится по двухуровневому принципу, то есть делится на два связанных сегмента - внутренний и внешний. Во внутреннем сегменте содержится хранилище данных и обеспечивается коллективная работа (управляется ОС Windows NT), внешний сегмент обеспечивает защищенный шлюз с сетью Internet (управляется ОС UNIX). Именно при такой организации компьютерной сети провайдера удается реализовать защищенную, надежную, отказоустойчивую систему предоставления ресурсов сети Internet. Поэтому построение механизма доступа к хранилищу данных для подобного случая имеет особенно важное значение.
В докладе изложены результаты построения механизма обмена данными для следующей ситуации: хранилищем данных является MS SQL-сервер, расположенный во внутреннем сегменте сети, а системой доступа - UNIX-сервер, управляемый FreeBSD. Эта ситуация, как представляется, оказалась наиболее сложной, из-за значительной несовместимости операционных систем, поэтому поиск решения проблемы пришлось сопроводить изучением разных способов реализации механизма доступа. Некоторые из них были опробованы, протестированы и отобраны как подходящие для практического использования.
Наиболее удобный и универсальный способ доступа к различным БД из UNIX-систем удалось реализовать на языке программирования "perl". Язык "perl" является одним из основных языков разработки небольших приложений для UNIX-систем, а также языком построения динамических Web-серверов. Доступ к БД при программировании на "perl" строится на основе двух модулей (библиотек). Первый модуль - DBD (Data Base Driver). Это модуль, организующий API (Application Program Interface) для работы с различными базами данных. Например, чтобы воспользоваться DBD-модулем для базы данных Oracle, необходимо установить в системе UNIX модуль DBD::Oracle. Так же и для других БД (в частности, поддерживаются базы Infomix, Sybase, Adabas, DB2, MySQL, Postgress). Второй модуль - DBI (Data Base Independent interface). Этот модуль дает программисту универсальный интерфейс для доступа к БД. Он использует API, предоставленный модулем DBD и не зависит от типа БД. Список модулей, пригодных для использования в любой UNIX-системе (Linux, FreeBSD, BSDI и т.п.), их описание, исходные тексты распространяются через Internet.
Адрес: http://www.perl.com/CPAN/modules/by-category/07_Database_Interfaces/DBD/
Для БД, для которых нет DBD-модуля, можно применить технологию ODBC. Это технология универсального доступа к БД, аналогичная DBD. Встречаются ситуации, когда для конкретной реализации БД имеется ODBC-драйвер и нет DBD-модуля. Тогда все равно можно получить доступ к БД, используя мост DBD::ODBC. Однако, доступ с помощью ODBC-драйвера медленнее, чем с помощью DBD. ODBC-драйверы для UNIX-систем поставляют разработчики БД. Драйверы для БД, поддерживаемых Windows, распространяет также OpenLinkSoftware. Как выяснилось, эта фирма разработала ODBC-драйверы для MS SQL-сервера, работающие под управлением некоторых UNIX-систем (Linux, BSDI, Solaris). Однако, для FreeBSD ODBC-драйвера нет. Вопреки утверждению представителей OpenLinkSoftware, что для FreeBSD подходит драйвер от BSDI, проведенное исследование показало, что при стандартном подключении драйвер не работает. По-видимому, в связи с тем, что фирма Microsoft не разглашает спецификации протоколов работы MS SQL-сервера, для этого сервера нет DBD-драйвера. И ODBC-драйвера для FreeBSD, как отмечено выше, тоже по существу нет. Поэтому для организации механизма взаимодействия FreeBSD - MS SQL-сервер пришлось искать нетривиальное решение.
Проблему доступа к MS-SQL-серверу из FreeBSD удалось решить, применив технологию FreeTDS. При построении MS SQL-сервера разработчики фирмы Microsoft использовали как прототип Sybase SQL-сервер. Sybase SQL-сервер использует для передачи транзакций протокол TDS (Tabular Data Stream protocol). Одна из версий этого протокола применяется и при обмене данными с MS SQL-сервером. Оказалось, что существует малоизвестный проект "FreeTDS" - реализация протокола FreeTDS под UNIX-системы. Программа freetds, реализующая данный протокол, свободно распространяется (адрес: http://metalab.unc.edu/freetds/). Программный продукт freetds представляет собой набор библиотек доступа к SyBase и MS SQL-серверу. Кроме того, в последней версии freetds присутствует DBD-драйвер, который при правильной настройке и компиляции позволяет работать по протоколу передачи данных, используемому MS SQL-сервером. Таким образом, был найден способ работы с MS SQL-сервером из ОС FreeBSD.
В докладе приводятся результаты проверки работоспособности и тестирования FreeTDS при организации доступа к MS SQL-серверу из ОС FreeBSD. Программирование выполнялось на языках "perl" и "с" При работе с "perl", использовался модуль DBD::FreeTDS, при работе с языком "с" - библиотека freetds_lib. В результате удалось реализовать взаимодействие с таблицами MS-SQL-сервера при приемлемом быстродействии обработки транзакций.
Ранее автором при построении Internet-витрин разрабатывался механизм доступ к БД MS SQL-сервер из ОС WindowsNT. Тогда был использован ODBC-драйвер для ОС Windows фирмы Microsoft, интерпретатор языка ActiveState Perl и perl-модуль ODBC::Win32. Теперь появилась возможность сравнить новую технологию с реализованной ранее применительно к Web-серверам. Было проведено сравнение связок IIS+Perl+Win32::ODBC+ODBS-driver (все под Windows NT) и FreeTDS+Perl+Apache (все под FreeBSD), примененных для организации доступа к MS SQL-серверу. Тест проводился для SQL-транзакции "select" из одной и той же SQL-таблицы. Решение под FreeBSD оказалось примерно в 2-3 раза быстрее, причем при увеличении потока данных разница в скорости увеличивалась.
Практика реализации разработанного механизма в реальной системе доступа к ресурсам Internet подтвердила эффективность его функционирования и позволила решить многие проблемы, характерные для систем интернет-провайдинга. Например, удалось реализовать авторизацию пользователей средствами UNIX, когда данные о пользователях хранятся в базе SQL-сервера, управляемого OC WindowsNT.
Можно утверждать, что построенный механизм применим для разработки Web-интерфейсов к БД (Internet-магазины, Internet-витрины и т.п.). Эта технология, будучи реализованной, позволит использовать в качестве Web-сервера программный продукт Apache (под ОС UNIX), который имеет лучшую защиту и производительность, чем IIS (Web-сервер фирмы Microsoft).
Студия
Последние новости
Путешествие во времени: Падение форинтаПятница, 18 Мая 2012 ![]() Венгерская валюта в нынешнем году побила рекорды среди мировых валют по части падения - форинт переживает не лучшие времена. На нем отразился финансовый кризис, в котором находится Венгрия. Тамошние власти были вынуждены обратиться в Мировой Валютный фонд с просьбой о выдаче кредита, окончательно опозорив форинт в глазах мирового ... Подробнее |
Актуально
Архив публикаций
Реклама
|
