Форум » 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

alkresin: Отдельные rdd выделять не будем ? Сделать что-то вроде LetoConnection(...), и в качестве параметра - используемый rdd ? Название rdd, думаю, должно передаваться при открытии файла. Может ведь программа работать и с ntx и с cdx, находящимися на одном сервере ( одном соединении ).

alkresin: Это для текущих сырцов, как я понимаю ? Да.

alkresin: К разговору о перспективах: очень заманчиво выглядит возможность использовать это дело для доступа к данным на сервере с мобильного устройства ( КПК, смартфона ). У ADS нет ведь клиентских библиотек для доступа с их серверу, а у нас теперь есть. Лежишь на пляже и проверяешь, сколько тебе зарплаты начислили :), или добавляшь запись в специальную таблицу, а stored proc ее обрабатывает и предпринимает соответствующие действия, например, сообщения рассылает.


Pasha: Сделать харбор для symbian, что ли ? :)

Петр: Выглядит очень заманчиво, но, наверное, путь не близкий. Поскольку, к примеру, stored proc - фактически полноценное приложение, я себе смутно представляю, как обеспечить безопасность данных на сервере. Поэтому и о авторизации с привилегиями спрашивал..

alkresin: Сделать харбор для symbian, что ли ? Харбор уже работает на мобильных устройствах под Windows Mobile. Просто прилинковать Leto RDD и - вперед. Хотя, конечно, надо еще проверить, как оно будет работать с Интернет - соединением.

alkresin: Поскольку, к примеру, stored proc - фактически полноценное приложение, я себе смутно представляю, как обеспечить безопасность данных на сервере. Вопрос, конечно, серьезный. Но, с другой стороны, stored proc ведь не любой пользователь помещает, а администратор, он должен знать, что делает.

Петр: alkresin пишет: о, с другой стороны, stored proc ведь не любой пользователь помещает, а администратор, он должен знать, что делает Да, но сервер должен знать, что он именно с администратором общается

alkresin: Это если помещать через клиентскую программу и RDD. А если их может разместить только администратор руками на сервере, а клиент может только запустить на исполнение по имени - это уже другая ситуация.

Pasha: alkresin пишет: Pasha, я скинул на CVS изменения, чтоб работало со свежим xHarbour, не мог бы проверить ? Все заработало

alkresin: Отлично! Значит, можно build2 делать.

Pasha: Какая-то проблема с блокировками select order dbAppend() Field->Type:='01' dbcommit() dbunlock() rlock() Field->Stock:='01' dbcommit() dbunlock() вываливается на 2-м коммите Ошибка LETO/1021 Data type error: -015 Алиас ORDER Вызов из DBCOMMIT(0)

Pasha: Разобрался я с мистическим 5-м файлом :) В индексном выражении было обращение к StrZero. А к серверу эта функция не подлинкована. Добавил Request С этим надо что-то делать. Нужен какой-то джентльменский набор функций. Можно хотя бы взять из описания Ads список поддерживаемых функций, да и еще добавить своих, харборовских :)

Pasha: Такой набор функций Request ; ABS,; ALLTRIM,; AT,; CHR,; CTOD,; DATE,; DAY,; DELETED,; DESCEND,; DTOC,; DTOS,; EMPTY,; I2BIN,; L2BIN,; LEFT,; LEN,; LOWER,; LTRIM,; MAX,; MIN,; MONTH,; PAD,; PADC,; PADL,; PADR,; RAT,; RECNO,; RIGHT,; ROUND,; RTRIM,; SPACE,; STOD,; STR,; STRZERO,; SUBSTR,; TIME,; TRANSFORM,; TRIM,; UPPER,; VAL,; YEAR И специфика Ads /* Ads-specific functions Request ; CONTAINS,; COLLATE,; CTOT,; CTOTS,; LOWERW,; NOW,; REVERSE,; STOTS,; TODAY,; TSTOD,; UPPERW */ Добавляем ?

alkresin: Какая-то проблема с блокировками Исправил. Добавляем ? Добавляем.

Pasha: Seek ведет себя по-другому Если тип ключа не совпадает с типом индекса, то dbfcdx просто возвращает .f., а letodb поднимает ошибку

Pasha: теперь с блокировками порядок

Pasha: На сегодня я иссяк :) Список багов исчерпан

Andrey: alkresin пишет: чтоб работало со свежим xHarbour, не мог бы проверить ? Я хочу проверить, но так и не собрал ничего на хХарборе ! Сам ехе-ник letodb.exe собрался, а из папки "manager" не собирается, требует библиотеку 'HBCT.LIB' и сборка сама для HARBOUR'a ...

alkresin: Небольшая инструкция по использованию ( по просьбе Андрея ). 1) Сервер предназначен для работы c dbf/cdx файлами ( ntx тоже добавим ), расположенными на севере в локальной сети или Интернете. На своем локальном компьютере его имеет смысл использовать только для проверки и отладки. 2) Чтобы запустить сервер, просто запустите letodb.exe ( letodb - в Linux ) из того каталога, который вы для него выберите. После запуска сервер не создает окна, а просто размещается в памяти, при этом создается запись в letodb.log, расположенном по умолчанию в каталоге, откуда сервер запущен. В этот же лог пишутся сообщения об остановке сервера, о проблемах при открытии/создании dbf, и аварийные сообщения, если сервер вдруг слетит ( не должен :) ). Останавливается сервер командой letodb.exe stop. 3) При необходимости можно создать файл letodb.ini в каталоге запуска сервера ( под Linux - можно еще в /etc ). В настоящее время поддерживаются следующие опции (указаны значения по умолчанию): Port = 2812 - номер порта DataPath = - каталог с базами Log = letodb.ini - путь и имя журнала Lower_Path = 0 - для Linux, 1 - если надо переводить пути и имена файлов в нижний регистр. Если указан DataPath, то он будет добавляться к пути при открытии файла. Например, DataPath = d:\data a открываете файл вы командой USE "192.168.3.5:2812/dbsklad/test" В этом случае сервер будет открывать файл d:\data\dbsklad\test.dbf 4) Чтобы скомпилировать вашу программу для работы с Leto db, надо: a) добавить в список библиотек rddleto.lib b) добавить в программу 2 строчки: REQUEST LETO RDDSETDEFAULT( "LETO" ) в) откорректировать пути к базам с учетом имени/ip сервера и порта. Если у вас в программах пути задаются где-то в одном месте, лучше - в ini файле или в параметрах, передаваемых программе, это сделать легко и просто. В идеальном случае после этого ваша программа должна заработать с Leto db сервером ( у меня почти сразу так и получилось ), в реальном - возможны проблемы, т.к. не все функции еще реализованы. 5) Если вы запустили сервер на локальном компьютере, то путь должен быть: //127.0.0.1:2812/... 6) По утилитам в каталоге utils/manage: bld.bat предназначен для компиляции manage.prg - GUI утилита, для сборки нужен HwGUI. Консольная утилита console.prg собирается вашими стандартными средствами, которыми вы собираете свои одно-файловые программы, надо только добавить rddleto.lib в список библиотек.



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