Работа с Dbf-файлами в архитектуре клиент-сервер
Эта статья позволит ознакомится как просто перенести программу на Harboure в архитектуру клиент-сервер. Если вам нужно чтобы старые программы (Клипер или Foxpro) работали по архитектуре клиент-сервер, то сначала нужно перенести программы на Harbour (такой перевод не особо сложен), а уже затем подключать базы (dbf-файлы) к Серверу Баз – LetoDb.
Cервер баз LetoDb является свободным программным обеспечением.
Порядок перехода не сложен. Примерно несколько шагов:
- Скачать нужный дистрибутив под нужную платформу (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 |
|
Пример работы для связки Harbour + LetoDB + MiniGui Примеры алгоритмов тестирования клиент-сервера. Теги: Harbour MiniGui and LetoDB database |
(@) Верченко А.