Форум » LetoDB, HbNetio. » Leto DB Server » Ответить

Leto DB Server

alkresin: Только что открыл на Sourceforge новый проект - Leto DB Server - https://sourceforge.net/projects/letodb Это мультиплатформенный ( Windows, Unix/Linux ) сервер баз данных, предоставляющий клиентским программам доступ к dbf/cdx файлам, находящимся на удаленном сервере ( можно и на локальном компьютере запускать - в отладочных целях ). В общем, как ADS :). Проект - на стадии разработки, не все даже базовые функции еще реализованы, до оптимизации дело еще не дошло. Но работает :). Крутится у меня на сервере несколько дней, подключал до 15 клиентов, пока не падает. Мои программы работают с ним нормально. Преимущества по сравнению с обычным файл-сервером: 1) Безопасность - базы могут быть в каталоге, недоступном для клиентских компьютеров - никто их случайно не удалит и не повредит. 2) Поскольку базы открываются серверной программой, а не клиентской, ее целостности ничего не грозит при случайном отключении клиентского компьютера. 3) значительное уменьшение сетевого траффика. 4) Должен быть, по идее, выигрыш в скорости. 5) Возможность контроля за пользователями с помощью утилиты manage ( можно придумать и другие формы контроля ). 6) Можно будет сделать транзакции, stored procedures на Харборе, ... и вообще все в наших руках :). Кто хочет участвовать в разработке, тестировании - пишите.

Ответов - 325, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 All

Pasha: Сейчас на сервере можно задать либо глобальную настройку - параметр DEFAULT_DRIVER, либо указать несколько БД (в разных каталогах), и для каждой указать параметры DATAPATH и DRIVER Пример: [DATABASE] DATAPATH=c:\data\b1 DRIVER = cdx [DATABASE] DATAPATH=c:\data\b2 DRIVER = ntx При открытии таблицы сервер по каталогу находит БД, и использует нужный драйвер

Pasha: Добавил функцию LETO_SUM(cField, [cFilter], [ScopeTop], [ScopeBottom]) Функция суммирует поле cField для записей, удовлетворяющих условию фильтра и scope

a_sidorov: Несколько офисов по Москве. Есть желание объединить. Запустил сервер на другой машине, внес изменения, но с ходу не очень получилось. На какие грабли наступаю: 1. При отсутствии файла letodb.ini (ну ошибся в имени, с кем не бывает) файл открывается по полному пути. Если поставить вызов leto_file(), то возвращает .f. (не работает), при этом все начинает глючить. Файл открывается с вероятностью 50%, выдавая случайным образом ошибку. Надо бы исправить. При открытии файла идет ошибка Error LETO/1021 Data type error: -002 2. Указываю в letodb.ini (уже делаю тест на локалке) EnableFileFunc = 1 DEFAULT_DRIVER = NTX DataPath = f:/ftest Оказавается, путь к dbf должен указываться с IP адресом, а к индексному файлу – без IP адреса. Но ведь, как правило, настройка путей прописывается в одном месте, кроме того, нужно проверять наличие файла на сервере. Придется после проверки наличия файла функцией leto_file(fname) удалять из fname IP адрес, например Stat func DelIPpath(fname) return if(Left(fname,2)=="//",substr(fname,at("/",substr(fname,3))+2),fname) Опять - почему это не делать на сервере? 3. Активно использую функцию XUPPER для поднятия русских букв в верхний регистр. Func XUpper( String ) Retu CharRepl( 'abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщьыъэюя',; String,; 'ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ' ) Приехали и встали. На сервере ее нет. Функция Upper() не поднимает русские буквы. Общее впечатление – сыровато с точки зрения – шаг влево, шаг вправо. Переделки сетевой задачи на NTX небольшие: в функции сетевого открытия проверяем наличие в имени файла “//“ и открываем файл VIA LETO. И убираем IP из имени файлов индексов для серверных файлов. Все остальные файлы, в имени которых нет “//” (в том числе локальные) открываются как NTX по умолчанию. В Нужно что-то делать с функциями в индексе. Как минимум пара функций есть своих кроме XUpper(). Пока стою и решаю, идти ли дальше.


Pasha: 1. При отсутствии letodb.ini применяются стандартные настройки, где параметр EnableFileFunc выключен Впрочем, я пересмотрю leto_file(). На SF форуме Leonardo Machado тоже на нее жалуется, хотя у меня его пример работает 2. Параметры соединения: IP:port необходимы только при открытии таблицы, при открытии индекса они не нужны. Так что логика в этом есть. Впрочем, это можно обсудить 3. Вопрос про UDF уже здесь обсуждался, и пришли к выводу, что такие функции, или request для стандартных Харбор-функций, пользователью надо включать в тело server.prg. Ведь процедура сборки сервера простейшая Кстати, русские кодовые страницы на сервере подликовываются, и upper должен работать корректно

a_sidorov: Фукция Indexkey() возвращает правильно только первые два индексных выражения (проверял на NTX), вместо третьего идет код. Сам индекс поддерживается. Пробовал переставлять второй и третий индекс, возвращает либо код 10 либо код 55, в зависимости от того, какой индекс стоит третьим.



полная версия страницы