Форум » 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 на Харборе, ... и вообще все в наших руках :). Кто хочет участвовать в разработке, тестировании - пишите.

Ответов - 55, стр: 1 2 3 All

Pasha: Какую версию letodb вы используете ? Свежую с CVS, или собранный резиз ?

a_sidorov: Вообще-то задачу запустил, пересобрав сервер. Indexkey() пока из функции открытия убрал. Ошибка в выражении третьего индекса идет и в своем и в Вашем варанте (сборка от 26.05). Попробую протестировать на других файлах.

a_sidorov: На другом файле идет то же самое, здесь Indexkey(3) возвращает пустую строку независимо от индексного выражения, сборка с CVS, сервер на локальном комьютере. Открытие индексов NTX через DBSETINDEX(ntxfile)


Pasha: a_sidorov пишет: 1. При отсутствии файла letodb.ini (ну ошибся в имени, с кем не бывает) файл открывается по полному пути. Если поставить вызов leto_file(), то возвращает .f. (не работает), при этом все начинает глючить Пофиксил

Pasha: Хотелось бы обсудить такой вопрос Для переменных SET DEFAULT или SET PATH устанавливается значение вида //ip_addr:port/... Множество функций харбора, таких как File(), используют эти переменные, в результате чего "лезут неизвестно куда", что приводит к задержке в работе при их вызове порядка 10-15 сек Как настроить LETO по-другому ? Предложения ?

Pasha: Например, возможен такой вариант: Использовать стандартные set-переменные SET_DEFAULT и SET_PATH только для локальных каталогов, и не устанавливать их для LETO В letodb добавить 2 переменные окружения: cLetoPath и cLetoDefault Если они заданы - использовать их в letodb, а если нет - тогда уже открывать файлы по переменным SET

Pasha: Решил добавить поле szPath в структуру LETOCONNECTION. В функции LETO_CONNECT заполнять его (если задан путь после //ip:port), и возвращать nConnection, начиная с 1, а не с 0 Затем в letoOpen и letoCreate добавить поддержку pOpenInfo->uiConnection, и, если он задан и задан pConnection->szPath, использовать его вместо hb_set.HB_SET_PATH

gfilatov: Выложил готовую к использованию полную сборку LetoDB CVS build 0.7 по адресу: http://minigui.mylivepage.ru/file/?fileid=5462 Эта сборка включает в себя последние изменения, сделанные Пашей: 2008-06-16 19:40 UTC+0300 Pavel Tsarenko (tpe2/at/mail.ru) * include/rddleto.h * added szPath into LETOCONNECTION structure * source/client/letomgmn.c - removed writelog() declaration * connection number in LETO_CONNECT, LETO_SETCURRENTCONNECTION and LETO_GETCURRENTCONNECTION now is beginning from 1 + added LETO_PATH(cPath) function. cPath can be used instead of path in SET PATH and SET DEFAULT command * source/client/leto1.c ! typos in letoIsBinaryField + added support for nConnection parameter in the dbUseArea() and dbCreate() functions + added letoRemoveIpFromPath function. Index bag name in OrdCreate and OrdListAdd can be passed with ip name and port 2008-06-09 20:00 UTC+0300 Pavel Tsarenko (tpe2/at/mail.ru) * source/server/letofunc.c ! fixed bug in leto_filef() 2008-06-04 20:30 UTC+0300 Pavel Tsarenko (tpe2/at/mail.ru) * source/client/leto1.c * source/server/server.prg ! small fix in hs_OpenIndex(), introduced in my previos commit ! fixed hs_OrderInfo() 2008-06-03 20:30 UTC+0300 Pavel Tsarenko (tpe2/at/mail.ru) * source/client/leto1.c + added support for _SET_AUTORDER flag * source/server/server.prg ! fixed hs_openindex() function if SET_AUTOPEN flag is disabled on a client * source/server/letofunc.c * added check into LETO_ADDTAG function if tag already opened 2008-06-03 00:20 UTC+0300 Pavel Tsarenko (tpe2/at/mail.ru) * source/client/leto1.c + added support for _SET_AUTOPEN flag 2008-06-01 21:30 UTC+0200 Pavel Tsarenko (tpe2/at/mail.ru) * source/common/common_c.c * source/client/leto1.c * source/server/letofunc.c * source/server/leto_lnx.c * source/server/leto_win.c * source/server/server.prg * source/include/funcleto.h * writelog() function moved to common_c.c + added function LETO_SUM(cField, [cFilter], [ScopeTop], [ScopeBottom])

sashaBG: У меня вот такой LETODB.INI Port = 2812 DataPath = c:\letodb\data Log = letodb.log EnableFileFunc = 1 EnableAnyExt = 1 По команде Leto_Frename( _Server + 'FILE.DBF' , 'TEMP.DBF' ) TEMP.DBF появляется в c:\letodb\ а не в c:\letodb\data\ LETODB.INI и letodb.exe находятса в c:\letodb

gfilatov: Выложил готовую к использованию полную сборку LetoDB CVS build 0.7 по адресу: http://minigui.mylivepage.ru/file/?fileid=5607 Эта сборка включает в себя последние изменения, сделанные Пашей: 2008-07-02 19:40 UTC+0300 Pavel Tsarenko (tpe2/at/mail.ru) * source/client/leto1.c * source/server/letofunc.c ! fixed FLOCK() implemetnation

Snake: Не работает: ========== FUNCTION MAIN LOCAL i,j,cPath := "//192.168.0.1:2812/test/" REQUEST LETO RDDSETDEFAULT( "LETO" ) DBCREATE(cPath+'pronto',{{'DOK','N',10,0}}) USE ( cPath+'pronto' ) NEW INDEX ON STR(Dok,10) TO ( cPath+'PRX' ) DBCLOSEALL() RETURN 0 ========= Если cPath := "//192.168.0.1:2812/" - работает. Проверял и старую и новую версии. Сообщение: Error LETO/1021 Data type error: -003:20-1006 Error at ...: ORDCREATE(0) in Module: Called from : DBCREATEINDEX(61) in Module: rddord.prg Called from : MAIN(9) in Module: test1.prg

Snake: Вдогонку: INDEX ON STR(pronto->Dok,10) TO ( cPath+'PRX' ) - тоже не работает: Error LETO/1021 Data type error: -003:15-1002 |

Pasha: Snake пишет: INDEX ON STR(pronto->Dok,10) TO ( cPath+'PRX' ) - тоже не работает: Алиас в индексном выражении работать не будет, поскольку оно вычисляется на сервере, а там алиасы открытых таблиц отличаются от локальных алиасов С ошибкой при создании индекса посмотрю. Это cdx или ntx ?

Snake: Это cdx и xharbour. Еще заметил - если я делаю index on str(Dok,10) TAG prx - все ок, если для каждого tag создаю свой .cdx - не работает. В принципе можно и так работать, просто к сведению.

Andrey: Snake пишет: если для каждого tag создаю свой .cdx - не работает. В принципе можно и так работать, просто к сведению. Я тоже создаю для каждого tag создаю свой .cdx ! Мне принципиально нужно чтоб работало.... Но это не срочно, я подожду ....

Pasha: sashaBG пишет: TEMP.DBF появляется в c:\letodb\ а не в c:\letodb\data\ поправил Snake пишет: Не работает: ========== FUNCTION MAIN LOCAL i,j,cPath := "//192.168.0.1:2812/test/" REQUEST LETO RDDSETDEFAULT( "LETO" ) DBCREATE(cPath+'pronto',{{'DOK','N',10,0}}) USE ( cPath+'pronto' ) NEW INDEX ON STR(Dok,10) TO ( cPath+'PRX' ) поправил

gfilatov: Выложил готовую к использованию полную сборку LetoDB CVS build 0.7 по адресу: http://minigui.mylivepage.ru/file/?fileid=5615 Эта сборка включает в себя следующие последние изменения: 2008-07-07 04:10 UTC+0700 Andi Jahja <harbour/AT/cbn/net/id> * source/server/letofunc.c ! type casts 2008-07-06 18:30 UTC+0300 Pavel Tsarenko (tpe2/at/mail.ru) * source/server/letofunc.c ! another fix for FLOCK() * added DataPath to the second parameter in leto_FRename() * source/server/server.prg * changes in hs_createindex() if index bagname has path 2008-07-06 12:00 UTC+0700 Andi Jahja <harbour/AT/cbn/net/id> * source/client/leto1.c ! some type casts ! line 1835 is typo (?), should be ulLen (was uiSize), pse re-check * source/common/hbhip.c * source/server/letofunc.c ! some type casts

Snake: Эх... привиредливый я ... Создаваться-то они создаются, но работают как-то странно: REQUEST DBFCDX REQUEST LETO FUNCTION MAIN LOCAL i,j,cPath:='//192.168.0.163:2812/test/' RDDSETDEFAULT( "LETO" ) DBCREATE(cPath+'pronto',{{'A1','N',10,0},{'A2','C',10,0}}) USE ( cPath+'pronto' ) NEW INDEX ON STR(A1) TO prx1 INDEX ON A2 TO prx2 FOR j=1 TO 1000 DBAPPEND() REPLACE a1 WITH 1001-j, A2 WITH STR(a1,10) NEXT USE // Кстати. Если убрать эти две строчки, USE ( cPath+'pronto' ) INDEX prx1, prx2 NEW // вылетает к MS матери ;) DBSETORDER(1) // иначе текущим будет 2! DBGOTOP() BROWSE() USE RETURN 0 - в Browse() показывает одну пустую строку. Если делать index ... tag ... - все ок. Кстати - не позволяет создать индекс в каталоге отличном от каталога с .dbf ( index on STR(A2) TO ( 'x/x/prx' ) ) Еще вопрос - правильно ли я понимаю, что вывод прогрессбара при индексации при открытии via leto невозможен?

Pasha: Snake пишет: - в Browse() показывает одну пустую строку. Если делать index ... tag ... - все ок. Кстати - не позволяет создать индекс в каталоге отличном от каталога с .dbf ( index on STR(A2) TO ( 'x/x/prx' ) ) Еще вопрос - правильно ли я понимаю, что вывод прогрессбара при индексации при открытии via leto невозможен? Поддержку нескольких bag надо пересмотреть Прогрессбар - да, невозможен. Обмена пакетами между клиентом и сервером во время индексации на сервере нет

Snake: Еще: Устанавливаем scope. затем Browse(), жмем Ctrl+PgDn (к концу таблицы) жмем PgUp... и ничего. Так и остаемся в конце таблицы. FUNCTION MAIN LOCAL i,j,cPath := "//192.168.0.111:2812/test/" REQUEST LETO RDDSETDEFAULT( "LETO" ) DBCREATE(cPath+'pronto.dbf',{{'DOK','N',10,0}}) USE ( cPath+'pronto' ) NEW INDEX ON STR(Dok,10) TAG PRX FOR j=1 TO 1000 DBAPPEND() REPLACE Dok WITH 1001-j NEXT DBSETORDER(1) ORDSCOPE(0,STR(200,10)) ORDSCOPE(1,STR(400,10)) DBGOTOP() BROWSE() DBCLOSEALL() RETURN 0



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