22 | 11 | 2017

LetoDb

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

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

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

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

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

Для помощи по работе с сервером – LetoDb обращайтесь на форум - clipper.borda.ru

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

  • Скачать нужный дистрибутив под нужную платформу (Windows/Linux)
  • Собрать сервер LetoDb+библиотеки, запустить сервер и настроить каталоги к вашим базам
  • Внести минимальные правки в вашу программу:

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

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

REQUESTLETO

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 – это современный, простой свободный программный продукт, который нужно использовать.

DBFdriverLetoDbforHarbour

Примеры работы с DBF-файлами по технологии

клиент-сервер.

Теги: Harbour MiniGui and LetoDB database

LetoDB_1a.7z

Пример работы для связки Harbour + LetoDB + MiniGui

Примеры алгоритмов тестирования клиент-сервера.

Теги: Harbour MiniGui and LetoDB database

LetoDB_2a.7z

(@) Верченко А.