Переход с файл-серверных программ в среду SQL клиент-сервер
Исправно работающая программа на Clipper или Foxpro - довольно старая но очень большая, со множеством форм, отчетов и т.д. Разрабатывать новую, на современной платформе очень долго и затратно. Вы можете увеличить надежность баз данных, особенно при работе в сетях, без больших затрат, перенеся DBF базы в клиент серверную архитектуру. Обычные файловые СУБД не поддерживают целостность баз данных и не имеют механизмов управления трансакциями, что существенно затрудняет обеспечение логической непротиворечивости информации при сбоях оборудования и программ.
Возросшим требованиям удовлетворяет архитектура клиент-сервер, основанная на выделении одного узла сети под сервер БД с реляционной СУБД, поддерживающей максимальный уровень надежности хранения, ее актуальность и достоверность. Однако методика программирования на непроцедурном языке SQL не согласуется с опытом разработки программ для СУБД.
Не стоит забывать, что накоплен большой опыт работы на системах семейства xBase, в частности, Clipper или FoxPro. Разработано большое число различных программ, которые внедрены и успешно работают многие годы. При интеграции отдельных автоматизированных рабочих мест в общие корпоративные сети было бы желательно сохранить не только постановку задачи и применяемые алгоритмы, но и собственно рабочие программы.
Предлагаем несколько способов к интеграции и адаптации файл-серверных (DBF) приложений к клиент-серверной архитектуре (SQL):
-
связь с сервером БД через открытый протокол ODBC;
-
использование библиотек доступа к серверам БД;
-
укрупнение файл-серверных приложений.
Чтобы оценить возможности этих методов, рассмотрим их несколько подробнее.
Библиотеки доступа к серверам приложений удобно применять для адаптации файл-серверных программ, построенных на системах программирования типа Clipper, FoxPro или Clarion.
Система управления записями Clarion достаточно легко связывается с сервером баз данных Btrieve через библиотеку доступа. Однако стоит заметить, что Btrieve не является SQL-сервером БД, что затрудняет программирование с использованием этого средства.
Программы, написанные на Clipper, можно адаптировать с помощью программного интерфейса с выбранным сервером БД. Для примера можно привести библиотеку интерфейса Clipper-Oracle.
Программный интерфейс реализован в виде библиотеки функций, доступных для их использования в прикладных программах, написанных на языке Clipper, и выполняющих все необходимые операции над базой данных Oracle. Функции написаны на языках Clipper и Си.
Можно выполнять такие операции над таблицами базы данных системы Oracle, с помощью функций этой библиотеки:
-
подключиться к системе Oracle;
-
вставка в базу данных новой строки;
-
удаление существующей строки;
-
Изменение содержимого полей существующей строки;
-
выполнить поиск строк по заданному точному значению полей;
-
выполнить различный поиск строк по заданному шаблону значений полей;
-
выполнить поиск строк по их относительному номеру в заданной группе;
-
блокировать и разблокировать таблицы базы;
-
обрабатывать транзакции, в том числе есть возможность установки контрольных точек внутри транзакции.
В то же время для всех этих операций (кроме обработки транзакций) имеются соответствующие аналоги в системе Clipper, и все операции с базой данных системы Clipper могут быть реализованы с помощью функций предлагаемой библиотеки.
Кроме того, есть возможность непосредственного использования языка SQL, который является основным языком данных не только в Oracle, но в большинстве других развитых СУБД.
Версия языка SQL, реализованная в Oracle, ориентированная на стандарт этого языка и содержит ряд ограничений. Например, оператор Fetch позволяет перемещаться по результирующей таблицы только в одном направлении, исключая возвращение назад. Функции библиотеки снимают эти ограничения.
С помощью функций библиотеки можно обрабатывать таблицы Oracle всех типов, в том числе виртуальные таблицы, Групповые таблицы, таблицы с индексами и без индексов. При этом обеспечивается преобразование форматов данных Oracle в форматы данных Clipper и наоборот.
Единицей обмена между приложением и базой данных есть строка таблицы, с точки зрения Clipper является массивом. Каждый элемент массива соответствует одному полю таблицы. Аналогично представляются ключи и поля поиска.
В состав библиотеки входят следующие функции:
INIT () подключение к Oracle;
OPEN () открытие таблицы;
INSERT () добавление строки;
UPDATE () корректировка строки;
DELETE () удаление строки;
SELECT () поиск строки;
NEXT () чтение следующей строки;
SET () чтение строки по относительному номеру;
SKIP () пропуск строк;
FILTER () выбор строк по условию;
GETIND () сохранение индекса;
SETIND () установка индекса;
COMMIT () конец транзакции;
SAVE () установка контрольной точки;
ROLL () откат транзакции;
LOCK () блокировка таблицы;
SQL () выполнение оператора SQL;
CLOSE () закрытие таблицы;
STOP () отключение от Oracle.
Данные функции не препятствуют использованию собственных средств управления данными Clipper, что позволяет совместно обрабатывать разнородные базы данных. Так, в качестве центральной может использоваться база данных Oracle, а в качестве локальной может использоваться база данных Clipper на персональном компьютере пользователя.
-
XBase - является "коллекция спецификаций, программ, утилит и С ++ библиотека классов для работы с Xbase файлов данных и индексов. То есть, если вы имеете дело с Dbase совместимыми базами, такими как Dbase, Clipper, FoxPro и т.д., это тоже библиотека для Вас. Он поддерживает DBF файлы, индексные файлы Dbase в NDX, NTX файлы Clipper в DBT, mem файлы и другие.
В состав интерфейсных средств включен специальный модуль для автономной отладки прикладных программ без системы Oracle. Этот модуль выполняет все функции интерфейса на DBF-файлах, что позволяет разрабатывать и полностью отлаживать программы, используя только систему Clipper на обычном персональном компьютере. Кроме того, эта возможность позволяет разрабатывать прикладные программы сразу в двух вариантах - сетевом и автономном.
Такой подход позволяет сохранить ранее разработанное и внедренное программное обеспечение, обеспечить преемственность при разработке новых прикладных систем, поддержать единую технологию программирования.
Интерфейс прикладного программирования ODBC API предоставляет общие методы доступа на основе языка баз данных SQL как к реляционным, так и к нереляционным (ISAM) источникам данных.
Наиболее распространенный стандарт ANSI SQL включает спецификацию интерфейса на уровне вызовов (CLI - Call-Level Interface), на которую опирается ODBC для обеспечения доступа и работы с данными во многих системах управления базами данных. Интерфейс CLI соответствует требованиям, установленным в 1996 году комитетом SQL Access Group и определяющим общий синтаксис SQL и интерфейса API. Иметь общий метод доступа к источникам данных удобно потому, что тогда база данных на сервере становится прозрачной для приложений, которые написаны в соответствии со специфицированным уровнем совместимости ODBC.
Интерфейс ODBC API реализован как набор расслоенных DLL-функций для Windows. Динамическая библиотека ODBC.DLL - это основная библиотека управления драйверами ODBC, которая содержит функции вызовов специализированных драйверов для разных поддерживаемых системой баз данных. Каждый драйвер совместим со своим уровнем CLI и относится к одной из двух категорий: одноуровневые или многоуровневые драйверы.
Одноуровневые драйверы предназначены для использования при работе с теми источниками данных, которые не могут быть прямо обработаны с использованием ANSI SQL. Обычно это локальные базы данных на персональных компьютерах, такие как dBase, Paradox, FoxPro и Excel. Драйверы, соответствующие этим базам данных, производят компиляцию ANSI SQL в наборы инструкций более низкого уровня, которые непосредственно обрабатывают составляющие базу данных файлы.
Многоуровневые драйверы используют сервер РСУБД для обработки SQL-предложений и предназначены для работы в среде клиент-сервер. Помимо обработки ANSI SQL, они также могут поддерживать и собственные конструкции конкретной РСУБД, поскольку ODBC может без трансляции передавать SQL-операторы источникам данных (механизм "passthrough"). Драйверы ODBC для баз данных, поддерживаемым в технологии клиент-сервер реализованы для Oracle V 6.0 и Oracle V 7, а также Informix, Microsoft и Sybase SQL Server, Rdb, DB2, Ingres, HP/Image и An SQL. Драйверы можно приобрести в фирмах Microsoft, Intersolv, Visigenic и Openlink, причем только Microsoft и Intersolv выпускают и 32-х, и 16-ти разрядные драйверы.
Необходимо осуществить 4 шага для осуществления запроса данных через ODBC API.
-
Шаг 1 - установление соединения. Первый шаг состоит в размещении указателей (handle) среды ODBC, которые выделяют оперативную память под ODBC драйверы и библиотеки. Затем происходит выделение памяти для указателей соединения, и соединение устанавливается.
-
Шаг 2 - выполнение оператора SQL. Выделяется указатель оператора, локальные переменные связываются со столбцами в SQL-выражении (это необязательное действие), и выражение представляется главному ODBC-драйверу для обработки.
-
Шаг 3 - извлечение данных. Перед извлечением данных возвращается информация о результирующем наборе, в частности, число столбцов в наборе. Исходя из этого числа, результирующий набор помещается в буфер записей, выполняется цикл его просмотра и содержимое каждого столбца помещается в соответствующую локальную переменную. Этот шаг необязателен, если используется связывание столбцов с локальными переменными.
-
Шаг 4 - освобождение ресурсов. После того, как данные получены, ресурсы освобождаются путем вызова функций освобождения указателей оператора, соединения и среды. Указатели оператора и соединения могут быть использованы в процессе обработки.
Чтобы настроить диспетчер соединений для подключения к Dbase или другой файл DBF
-
Добавить новый диспетчер соединений OLE DB для упаковки. Для получения дополнительной информации см Добавить, Удалить или Дайте диспетчер подключений в пакет.
-
На Подключение странице диспетчера подключений диалоговом окне выберите Родной OLE DB \ Microsoft Jet 4.0 OLE DB Provider как поставщика.
-
При работе с DBF файлов, папка представляет собой базу данных, и отдельные файлы DBF представляют таблицы. Поэтому имя файла базы данных текстовое поле должно содержать путь к папке, где находится файл DBF проживает, и не должна включать в себя саму имя файла. Вы можете ввести или вставить в пути к папке, или вы можете использовать Обзор кнопку, чтобы выбрать DBF файл, а затем удалить имя файла в конце пути к папке.
-
На странице диспетчера подключений диалоговом окне введите Dbase III, DBase IV, или Dbase5,0, в соответствующих случаях, в качестве значения расширенные свойства.
-
Нажмите Test Connection для проверки значения, которые вы ввели. Вы должны увидеть сообщение "Проверка соединения удалось." Нажмите OK, чтобы закрыть окно сообщения.
-
Нажмите OK, чтобы сохранить конфигурацию для диспетчера соединений.
-
Чтобы использовать диспетчер соединений в потоке данных пакета, выберите источник OLE DB или пункт назначения и настроить его на использование диспетчера соединений, созданный с помощью предыдущих этапов.
-