Автор | Сообщение |
alkresin
|
| moderator
|
Пост N: 31
Зарегистрирован: 06.07.06
|
|
Отправлено: 31.01.08 11:36. Заголовок: Leto DB Server (продолжение)
Только что открыл на 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
[только новые]
|
|
Oskar_A
|
| |
Пост N: 1
Зарегистрирован: 09.07.08
|
|
Отправлено: 09.07.08 15:00. Заголовок: Вопрос Pasha : Верси..
Вопрос Pasha : Версия xHarbour Compiler build 0.99.60 (SimpLex) и LetoDb 1. совместимы 2. при компиляции вылетают ошибки: Error: Unresolved external '_hb_vmProcessSymbolsEx' referenced from C:\XHARBOUR\LIB\RDDLETO.LIB|rddsys Error: Unresolved external '_hb_errFuncName' referenced from C:\XHARBOUR\LIB\RDDLETO.LIB|hbip Error: Unresolved external '_hb_dateTimeStampStr' referenced from C:\XHARBOUR\LIB\RDDLETO.LIB|leto1 Error: Unresolved external '_hb_numDecConv' referenced from C:\XHARBOUR\LIB\RDDLETO.LIB|leto1 Error: Unresolved external '_hb_dateTimeStampStrGet' referenced from C:\XHARBOUR\LIB\RDDLETO.LIB|leto1 RddLeto.Lib укзана в файле сборки Локальная прграмма - консольная версия (куча PRG собирается в один Exe модуль) Версия LETODB :Letidb-0-7-bin-w32-bcc-5-5.zip (скачал Сегодня с сайта Григоря Филатова) Спасибо
|
|
|
Петр
|
| постоянный участник
|
Пост N: 457
Зарегистрирован: 09.10.06
|
|
Отправлено: 09.07.08 15:43. Заголовок: Oskar_A пишет: Верс..
Oskar_A пишет: цитата: | Версия xHarbour Compiler build 0.99.60 (SimpLex) |
| какие причины заставляют вас использовать устаревшую сборку?
|
|
|
Pasha
|
| Администратор
|
Пост N: 945
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.07.08 19:59. Заголовок: Oskar_A пишет: Верс..
Oskar_A пишет: цитата: | Версия xHarbour Compiler build 0.99.60 (SimpLex) и LetoDb 1. совместимы 2. при компиляции вылетают ошибки: |
| rddleto.lib можно использовать только с той версией Harbour/xHarbour, с которой собрана сама rddleto. Если ипользуется другая сборка, то rddleto.lib надо пересобрать именно ей. Отсюда ошибка: Unresolved external '_hb_vmProcessSymbolsEx' Прочие ошибки связаны с изменением Hb api Я считаю разумной политику поддержки последних релизов Hb/xHb, и текущих версий с SVN/CVS Поддерживать остальные старые релизы сложно, их много, да и зачем ? К примеру, я уже и не помню, в каком году выходил 0.99.60
|
|
|
Pasha
|
| Администратор
|
Пост N: 946
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.07.08 22:17. Заголовок: Snake пишет: Еще: ..
Snake пишет: цитата: | Еще: Устанавливаем scope. затем Browse(), жмем Ctrl+PgDn (к концу таблицы) жмем PgUp... и ничего. Так и остаемся в конце таблицы. |
| Поправил
|
|
|
Oskar_A
|
| |
Пост N: 2
Зарегистрирован: 09.07.08
|
|
Отправлено: 10.07.08 09:27. Заголовок: Pasha & Петр, сп..
Pasha & Петр, спасибо за отзывы. Версия xHarbour Compiler build 0.99.60 (SimpLex) крутится и довольно успешно. Сегодня постараюсь скачать последнюю версию xHarbor. Можно ли выложить на почту или указать адрес откуда с минимальными проблемами можно получить одинаковую сборку LetoDB и хHarbour? E-Mai:l abdyvasiev_a@kcredit.kg - просьба порциями до 2МБ в виде RAR-архива...... Заранее спасибо....
|
|
|
Snake
|
| |
Пост N: 24
Зарегистрирован: 23.02.06
|
|
Отправлено: 10.07.08 12:06. Заголовок: // letodb.ini: Dat..
// letodb.ini: DataPath = d:\Leo\ok cPath := "//192.168.0.1:2812/test/" LETO_FRENAME(cPath+'pronto.cdx','pronto.old') - pronto.old появляется не в d:\Leo\ok\test, а в d:\Leo\ok (DataPath из letodb.ini) Еще: Если сразу после открытия базы, когда никакой scope еще не задан, выполняем ORDSCOPE(0,NIL) ORDSCOPE(1,NIL) - вылетает с ошибкой
|
|
|
Oskar_A
|
| |
Пост N: 3
Зарегистрирован: 09.07.08
|
|
Отправлено: 10.07.08 12:16. Заголовок: Скачал версию xHarbo..
Скачал версию xHarbour Compiler build 1.0.0 (SimpLex) ... 1. компиляция исходных Prg файлов - ошибок нет 2. сборка модулей в EXE файл - ошибки: Error: Unresolved external '_main' referenced from C:\BORLAND\BCC55\LIB\C0X32.OBJ Error: Unresolved external '_HB_FUN_HB_SETCODEPAGE' Error: Unresolved external '_HB_FUN_DISKNAME' Error: Unresolved external '_hb_fsDelete' referenced from C:\XHARBOUR\LIB\CT.LIB|disk Error: Unresolved external '_hb_fsMkDir' referenced from C:\XHARBOUR\LIB\CT.LIB|disk Error: Unresolved external '_hb_fsError' referenced from C:\XHARBOUR\LIB\CT.LIB|disk Error: Unresolved external '_hb_fsCurDrv' referenced from C:\XHARBOUR\LIB\CT.LIB|disk Error: Unresolved external '_hb_fsCurDirBuff' referenced from C:\XHARBOUR\LIB\CT.LIB|disk список большой..... Вопрос(ы): 1. Список библиотек необходимых для сборки консольного приложения (выполняемый Exe модуль). 2.Особенности перехода с версии 0.99.60 (Simplex) на версию xHarbour Compiler build 1.0.0 (SimpLex). 3. LetoDb для версии xHarbour Compiler build 1.0.0 (SimpLex). С уважением,
|
|
|
Snake
|
| |
Пост N: 25
Зарегистрирован: 23.02.06
|
|
Отправлено: 10.07.08 12:19. Заголовок: При этом слетает сер..
При этом слетает сервер, причем если под Win его можно перезапустить, то под Linux при попытке запуска выдает "Server already running", хотя на самом деле ничего он не running, и ps -ax его не показывает. Snake пишет: цитата: | Если сразу после открытия базы, когда никакой scope еще не задан, выполняем ORDSCOPE(0,NIL) ORDSCOPE(1,NIL) - вылетает с ошибкой |
|
|
|
|
Pasha
|
| Администратор
|
Пост N: 947
Зарегистрирован: 23.05.05
|
|
Отправлено: 10.07.08 22:24. Заголовок: Snake пишет: Если с..
Snake пишет: цитата: | Если сразу после открытия базы, когда никакой scope еще не задан, выполняем ORDSCOPE(0,NIL) ORDSCOPE(1,NIL) - вылетает с ошибкой |
| поправил
|
|
|
Pasha
|
| Администратор
|
Пост N: 948
Зарегистрирован: 23.05.05
|
|
Отправлено: 10.07.08 22:29. Заголовок: Oskar_A пишет: 2. с..
Oskar_A пишет: цитата: | 2. сборка модулей в EXE файл - ошибки: |
| Судя по ошибкам, неправильный скрипт для линкера, не подключаются основные библиотеки
|
|
|
Oskar_A
|
| |
Пост N: 4
Зарегистрирован: 09.07.08
|
|
Отправлено: 11.07.08 04:51. Заголовок: Pasha, получилось со..
Pasha, получилось собрать LetoDb & xHarbour 1.0, спасибо за подсказку.... Начну тестировать итд... База из 55 DBF объем 2.6 Гб. Количество записей в одном из DBF 103 млн. количество пользователей до 15 User'ов О результатах сообщу. Спасибо
|
|
|
|
Snake
|
| |
Пост N: 26
Зарегистрирован: 23.02.06
|
|
Отправлено: 11.07.08 09:43. Заголовок: Это баг или фича?
Snake пишет: цитата: | // letodb.ini: DataPath = d:\Leo\ok cPath := "//192.168.0.1:2812/test/" LETO_FRENAME(cPath+'pronto.cdx','pronto.old') - pronto.old появляется не в d:\Leo\ok\test, а в d:\Leo\ok (DataPath из letodb.ini) |
| Сейчас проверил: если делать так - LETO_FRENAME(cPath+'pronto.cdx','test/pronto.old') - то все ок, pronto.old появляется в d:\Leo\ok\test. Мб так и было задумано?
|
|
|
Snake
|
| |
Пост N: 27
Зарегистрирован: 23.02.06
|
|
Отправлено: 11.07.08 10:49. Заголовок: Увы...
...но под линуксовым сервером это не работает - LETO_FRENAME(cPath+'pronto.cdx','test/pronto.old') - не переименовывает LETO_FRENAME(cPath+'pronto.cdx','pronto.old') - pronto.old появляется в DataPath из letodb.ini, а не в cPath LETO_FRENAME(cPath+'pronto.cdx','.pronto.old') - pronto.old появляется в корневом каталоге
|
|
|
Pasha
|
| Администратор
|
Пост N: 949
Зарегистрирован: 23.05.05
|
|
Отправлено: 13.07.08 13:35. Заголовок: Snake пишет: Сейчас..
Snake пишет: цитата: | Сейчас проверил: если делать так - LETO_FRENAME(cPath+'pronto.cdx','test/pronto.old') - то все ок, pronto.old появляется в d:\Leo\ok\test. Мб так и было задумано? |
| Да. Так все логично. Для 2-го параметра cPath указывать необязательно Насчет линукса - сейчас проверить не могу Меня не будет в эфире 2 недели. В последнем коммите Александр по-видимому пропустил server.prg, и пока он его не обновит, рекомендую не брать leto1.c, так как не будет работать dbCreate()
|
|
|
gfilatov
|
| модератор
|
Пост N: 814
Зарегистрирован: 25.05.05
|
|
Отправлено: 25.07.08 11:06. Заголовок: Выложил готовую к ис..
Выложил готовую к использованию полную сборку LetoDB CVS build 0.7 по адресу: http://minigui.mylivepage.ru/file/?fileid=5676 Эта сборка включает в себя следующие последние изменения: 2008-07-15 12:35 UTC+0300 Alexander Kresin (alex/at/belacy.belgorod.su) * source/server/letofunc.c ! Fixed memory size, allocated for leto_rec() function - there were GPF's in some cases. 2008-07-14 11:30 UTC+0300 Alexander Kresin (alex/at/belacy.belgorod.su) * source/server/server.prg * re-committed 2008-07-11 13:00 UTC+0300 Alexander Kresin (alex/at/belacy.belgorod.su) * source/client/leto1.c * source/server/server.prg * The forth parameter od dbCreate ( lKeepOPen ) works now. * COPY TO command works now. 2008-07-10 22:25 UTC+0300 Pavel Tsarenko (tpe2/at/mail.ru) * source/server/letofunc.c ! fixed DBOI_SCOPETOPCLEAR and DBOI_SCOPEBOTTOMCLEAR evaluation with empty key item 2008-07-09 22:15 UTC+0300 Pavel Tsarenko (tpe2/at/mail.ru) * source/client/leto1.c * added bAppend parameter to letoSetBlankRecord() function, and ulRecNo is cleared only for dbAppend() * source/server/letofunc.c ! fixed scope operations in leto_Skip() 2008-07-09 19:45 UTC+0300 Pavel Tsarenko (tpe2/at/mail.ru) * source/server/letofunc.c ! fixed compilation for Harbour 2008-07-09 09:40 UTC+0300 Alexander Kresin (alex/at/belacy.belgorod.su) * source/server/letofunc.c ! Minor fix 2008-07-08 22:15 UTC+0300 Pavel Tsarenko (tpe2/at/mail.ru) * source/client/leto1.c ! fixed gpf in letoOrderListFocus() if incorrect order number is passed * added check for already opened index bagname in letoOrderListAdd() 2008-07-08 16:25 UTC+0300 Alexander Kresin (alex/at/belacy.belgorod.su) * source/client/leto1.c ! Fix in letoPutMemoValue() function * source/server/letofunc.c * source/common/hbip.c ! Fixes for hpux, provided by Luiz Rafael Culik Guimaraes
|
|
|
Snake
|
| |
Пост N: 28
Зарегистрирован: 23.02.06
|
|
Отправлено: 05.08.08 07:06. Заголовок: Pasha пишет: Насчет..
Pasha пишет: цитата: | Насчет линукса - сейчас проверить не могу |
| Я так понимаю, дело заглохло и надолго. Тогда подскажите плз, как из программы можно получить DataPath? Очень нужно - сервер уже крутится у клиентов, а переименование файлов, хоть и не часто, но иногда приходится выполнять.
|
|
|
Pasha
|
| Администратор
|
Пост N: 956
Зарегистрирован: 23.05.05
|
|
Отправлено: 05.08.08 09:09. Заголовок: Snake пишет: Тогда ..
Snake пишет: цитата: | Тогда подскажите плз, как из программы можно получить DataPath? |
| Сейчас такой команды нет Можно добавить в LETO_MGGETINFO еще один параметр - DataPath: letofunc.c, leto_Mgmt: sprintf( s,"+%d;%d;%d;%d;%lu;%lu;%lu;%lu;%lu;%lu;%s;", uiUsersCurr,uiUsersMax,uiTablesCurr,uiTablesMax, (leto_Date()-lStartDate)*86400+(long)(hb_dateSeconds()-dStartsec), ulOperations,ulBytesSent,ulBytesRead,uiIndexCurr,uiIndexMax, pDataPath ); и letomgmn.c, HB_FUNC( LETO_MGGETINFO ): for( i=1; i<=11; i++ )
|
|
|
Pasha
|
| Администратор
|
Пост N: 961
Зарегистрирован: 23.05.05
|
|
Отправлено: 05.08.08 14:34. Заголовок: Медленное обновление..
Медленное обновление данных. Тест см. ниже, выполняется по сети: REQUEST HB_GT_WIN REQUEST HB_GT_WIN_DEFAULT Field Mes func main Local cPath := '//Server:2812/' Local nSec, aRecs := {}, i, j REQUEST LETO RDDSETDEFAULT( "LETO" ) cls set autopen on if ! Leto_File(cPath+"leto2.dbf") dbCreate(cPath + 'leto2', {{'Mes','N',2,0},{'F1','C', 6, 0},{'F2','C', 6, 0},{'SUMMA','N', 12, 0}}) endif dbUseArea(.t.,, cPath + "leto2") if ! Leto_File(cPath+"leto2.cdx") index on mes to (cPath+"leto2") endif //OrdListClear() //OrdListAdd('leto2') dbSetOrder(1) for i := 1 to 12 for j := 1 to 1000 dbAppend() Field->Mes := i Field->Summa := j next next dbCommit() nSec := Seconds() dbSeek(10) while Mes == 10 AADD(aRecs, RecNo()) skip enddo // цикл выше выполняется быстро ? Seconds() - nSec nSec := Seconds() AEval(aRecs, {|n| dbGoto(n), RLock(),; dbDelete(),; Field->Mes := 0,; Field->Summa := 0,; dbUnlock(), dbCommit() }) // цикл выше выполняется мееееедленно, из-за dbCommit() ? Seconds() - nSec return Почему медленно ? По dbCommit() на сервер выдаются команды "upd" и "flush". Если dbCommit() вынести за цикл, то в цикле на сервер все равно передается команда "upd", а в конце цикла - "flush", и цикл выполняется быстро. Команду "flush" сервер отрабатывает, вызывая hb_rddFlushAll(). Если на сервере вызов hb_rddFlushAll() заменить на SELF_FLUSH( ( AREAP ) pArea ), то есть, flush только в текущей р.о., цикл все равно выполняется медленно, медленнее, чем при таких же условиях через DBFCDX по сети. Почему так ? Ведь должно быть наоборот. Отрабатывая flush, DBFCDX обновляет по сети и файл данных, и индексы, загружая при этом сетевой траффик. Сервер LETODB выполняет обновление файла данных и индекса локально. Причем файлы открыты монопольно, сервер работает в тепличных условиях. Почему наблюдается такой странный эффект ?
|
|
|
Pasha
|
| Администратор
|
Пост N: 962
Зарегистрирован: 23.05.05
|
|
Отправлено: 05.08.08 14:44. Заголовок: Вопрос снят Я забыл ..
Вопрос снят Я забыл "хакнуть" source\rtl\filesys.c, функцию fsCommit() Теперь все очень быстро :)
|
|
|
Pasha
|
| Администратор
|
Пост N: 963
Зарегистрирован: 23.05.05
|
|
Отправлено: 07.08.08 19:47. Заголовок: 2008-08-07 19:45 UTC..
2008-08-07 19:45 UTC+0300 Pavel Tsarenko (tpe2/at/mail.ru) * source/client/leto1.c * source/client/letomgmn.c * source/server/letofunc.c * include/rddleto.h * pCurrentConn moved from letofunc.c to leto1.c. The default connection now can be set by LETO_CONNECT() function for USE and CREATE command * If server name and port is skipped in file name in Leto_File() function, the default connection is used * LETO_MGGETINFO() function now return DataPath + added leto_InTransaction() function * skip buffer is used for dbSkip(-1) also * hb_rddFlushAll() replaced witn SELF_FLUSH( ( AREAP ) pArea ) in the flush command on server Теперь для соединения с сервером можно не задавать адрес //server:port/ в имени таблицы или в командах SET PATH/DEFAULT. Если имени сервера нет, то используется уже установленное соединение по умолчанию, заданное в LETO_CONNECT(). Алгоритм поиска сервера следующий: 1. Если задан параметр nConnection - он используется 2. Заданное имя сервера в командах use/create или set path/default 3. Соединение по умолчанию в LETO_CONNECT(). Путь к таблице на сервере может быть задан функцией LETO_PATH(). Также добавлена буферизация команды skip -1, что дает увеличение производительности для TBrowse и других гридов И еще небольшие изменения, см. выше
|
|
|
Ответов - 55
, стр:
1
2
3
All
[только новые]
|
|