Работа с Dbf-файлами в архитектуре клиент-сервер

 

Эта статья позволит ознакомится как просто перенести программу на Harboure в архитектуру клиент-сервер. Если вам нужно чтобы старые программы (Клипер или Foxpro) работали по архитектуре клиент-сервер, то сначала нужно перенести программы на Harbour (такой перевод не особо сложен), а уже затем подключать базы (dbf-файлы) к Серверу Баз LetoDb.

Cервер баз LetoDb является свободным программным обеспечением.

Для начала ознакомтесь со статьёй разработчика - http://www.kresin.ru/letodb.html

Скачать дистрибутивы и ознакомиться с инструкциями установки, работы и настройкой можно там же, на странице автора.

Для помощи по работе с сервером LetoDb обращайтесь на форум - http://clipper.borda.ru/?0-7

Порядок перехода не сложен. Примерно несколько шагов:

1)      Скачать нужный дистрибутив под нужную платформу (Windows/Linux)

2)      Собрать сервер LetoDb+библиотеки, запустить сервер и настроить каталоги к вашим базам

3)      Внести минимальные правки в вашу программу:

А) прилинковать библиотеку rddleto к своему приложению

       Б) добавить в начале своей программы две строки:

       REQUEST LETO

       RDDSETDEFAULT( "LETO" )

      С) открытие баз в программе.

      Например, если необходимо открыть файл test.dbf, который расположен на сервере 192.168.5.22 в каталоге

      /data/mydir и значение параметра 'DataPath'  ( в файле конфигурации сервере letodb.ini ) '/data', синтаксис

      должен быть  таким:

    cAddress := "//192.168.5.22:2812/mydir/"

    If leto_Connect( cAddress ) = = -1

       Alert( "Can't connect to server ..." )

    Else

       USE (cAddress + "test.dbf") NEW

    Endif

 

И ВСЁ !!! Ваши программы получают все плюсы архитектуры клиент-сервер !

 

Для тестирования работы с сервером LetoDb были сделаны тестовые программы на MiniGui:

Алгоритм простой - выборка из базы по SEEK и суммирование по 7 полям и запись этих 7 полей в локальную базу на компе пользователя. Итого 13 раз нужно просчитать по базе.

 

База 1 000 000 записей с мемо-полями, примерно 1,2 Гб

Расчет по простому индексу 13 позиций:

Тип доступа к базе

Время (чч:мм:сс)

 

1) локальная DBFCDX

00:00:06

 

2) локальная LetoDB

00:00:09

 

3) интернет  LetoDB

00:11:32

в зависимости от скорости интернета

 

Посчитать таблицу в своей программе - миллион записей из базы DBF, которая находиться неизвестно где (на просторах интернета) за 11 мин. (без переделки алгоритма, т.е. используя старый код программы) - это просто отлично !

 

ВНИМАНИЕ ! На  сервере LetoDb можно делать выполнение своего кода программы, тогда скорость выполнения запросов/расчётов ускоряется в разы !

 

Сделал отдельный тест (см.пример LetoDB_2a.7z). Расчет такой же, но выполняется уже

на сервере Leto DB Server v.2.15b3m1 (модификация b3m1):

Тип доступа к базе

Время (чч:мм:сс)

 

4) интернет  LetoDB

00:00:08

в зависимости от скорости интернета

 

Т.е. за 8 сек сервер Leto DB обрабатывает 1 млн. записей по заданному алгоритму.

 

Вывод: связка Harbour + LetoDB + MiniGui - отличная платформа для переделки старых программ или написания новых программ.

 

 

Для сравнения работы сервера LetoDb и PostgreSql  были сделаны простые тестовые программы на MiniGui, отправка dbf-файла на сервера LetoDb и PostgreSql расположенные в интернете.

 

LetoDb - отправка по 1000 записей за 1 транзакцию,
размер буфера транзакции равен 1 660 000 байт.

 

PostgreSql - отправка всех записей за 1 транзакцию,
размер буфера транзакции равен размеру файла.



Система CentOS, 1Gb ОЗУ, 2Gb HDD


Файл: 16 Мб, 20 полей, 10 000 записей

LetoDb ver 2.15

15 транзакции

время копирования на сервер 00:04 (сек.)

PostgreSql ver 9.4.7

1 транзакция

время копирования на сервер 00:08 (сек.)

 

Файл: 158 Мб, 20 полей, 100 000 записей

LetoDb ver 2.15

143 транзакции

время копирования на сервер 00:25 (сек.)

PostgreSql ver 9.4.7

1 транзакция

Вылет по ошибке, не хватка памяти на сервере.



Система Windows 2008 R2, 8Gb ОЗУ, 500Gb HDD

Файл: 16 Мб, 20 полей, 10 000 записей

LetoDb ver 2.15

15 транзакции

время копирования на сервер 00:04 (сек.)

PostgreSql ver 9.4.7

1 транзакция

время копирования на сервер 00:08 (сек.)

 

Файл: 158 Мб, 20 полей, 100 000 записей

LetoDb ver 2.15

143 транзакции

время копирования на сервер 00:34 (сек.)

PostgreSql ver 9.4.7

1 транзакция

время копирования на сервер 01:22 (сек.)

 

Конечно простые тесты не дают полной картины сравнения, но эти тесты показывают, что сервер LetoDb – это современный, простой  свободный программный продукт, который нужно использовать.