On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
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 на Харборе, ... и вообще все в наших руках :).

Кто хочет участвовать в разработке, тестировании - пишите.



Спасибо: 0 
Профиль
Ответов - 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 (скачал Сегодня с сайта Григоря Филатова)
Спасибо

Спасибо: 0 
Профиль
Петр
постоянный участник


Пост N: 457
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 09.07.08 15:43. Заголовок: Oskar_A пишет: Верс..


Oskar_A пишет:

 цитата:
Версия xHarbour Compiler build 0.99.60 (SimpLex)



какие причины заставляют вас использовать устаревшую сборку?

Спасибо: 0 
Профиль
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


Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 946
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.07.08 22:17. Заголовок: Snake пишет: Еще: ..


Snake пишет:

 цитата:
Еще:
Устанавливаем scope.
затем Browse(), жмем Ctrl+PgDn (к концу таблицы)
жмем PgUp... и ничего. Так и остаемся в конце таблицы.



Поправил

Спасибо: 0 
Профиль
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-архива......
Заранее спасибо....

Спасибо: 0 
Профиль
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)

- вылетает с ошибкой


Спасибо: 0 
Профиль
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).
С уважением,


Спасибо: 0 
Профиль
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)

- вылетает с ошибкой



Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 947
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.07.08 22:24. Заголовок: Snake пишет: Если с..


Snake пишет:

 цитата:
Если сразу после открытия базы, когда никакой scope еще не задан, выполняем

ORDSCOPE(0,NIL)
ORDSCOPE(1,NIL)

- вылетает с ошибкой



поправил

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 948
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.07.08 22:29. Заголовок: Oskar_A пишет: 2. с..


Oskar_A пишет:

 цитата:
2. сборка модулей в EXE файл - ошибки:



Судя по ошибкам, неправильный скрипт для линкера, не подключаются основные библиотеки


Спасибо: 0 
Профиль
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'ов
О результатах сообщу.
Спасибо

Спасибо: 0 
Профиль
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. Мб так и было задумано?



Спасибо: 0 
Профиль
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 появляется в корневом каталоге



Спасибо: 0 
Профиль
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()

Спасибо: 0 
Профиль
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



Спасибо: 0 
Профиль
Snake





Пост N: 28
Зарегистрирован: 23.02.06
ссылка на сообщение  Отправлено: 05.08.08 07:06. Заголовок: Pasha пишет: Насчет..


Pasha пишет:

 цитата:
Насчет линукса - сейчас проверить не могу


Я так понимаю, дело заглохло и надолго. Тогда подскажите плз, как из программы можно получить DataPath? Очень нужно - сервер уже крутится у клиентов, а переименование файлов, хоть и не часто, но иногда приходится выполнять.

Спасибо: 0 
Профиль
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++ )


Спасибо: 0 
Профиль
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 выполняет обновление файла данных и индекса локально.
Причем файлы открыты монопольно, сервер работает в тепличных условиях.
Почему наблюдается такой странный эффект ?


Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 962
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.08.08 14:44. Заголовок: Вопрос снят Я забыл ..


Вопрос снят
Я забыл "хакнуть" source\rtl\filesys.c, функцию fsCommit()
Теперь все очень быстро :)

Спасибо: 0 
Профиль
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 и других гридов
И еще небольшие изменения, см. выше


Спасибо: 0 
Профиль
Ответов - 55 , стр: 1 2 3 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 23
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет