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 
Профиль
Ответов - 316 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]


Pasha
Администратор




Пост N: 1545
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.06.10 13:37. Заголовок: На сервере где-то ес..


На сервере где-то есть утечка памяти.
Если запустить letodb совместно с letodbtray, и понаблюдать над ним через диспетчер задач, то видно, что память, используемая letodb, увеличивается.
Т.е. утечка возникает при вызове leto_connect() - leto_disconnect()
Пересмотрел пары hb_xgrab - hb_xfree, malloc - free, утечки не нашел.
А она есть

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




Пост N: 1546
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.06.10 16:04. Заголовок: А уж какая утечка па..


А уж какая утечка памяти в letodbtray... если из letodb едва сочится по капелькам, то из letodbtray хлещет вовсю

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




Пост N: 67
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 29.06.10 20:34. Заголовок: А каким образом ее поймать


А каким образом ее поймать , где она
я к сожалению не очень знаком со средствами выделения памяти и ее освобождения в Харборе

Может ето потому что у меня Харбор не так собран , наверно надо с ключиками розобратся

P.S. надо подучится


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




Пост N: 1547
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.06.10 21:12. Заголовок: Возможно, проблема в..


Возможно, проблема в Leto_connect() - Leto_disconnect() в клиентской части leto. Во всяком случае, когда letodb не запущен, утечки в letodbtray нет.

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




Пост N: 1548
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.06.10 11:20. Заголовок: Мне кажется, что дис..


Мне кажется, что диспетчер задач windows врет, и врет сильно. На winxp sp1 память, используемая letodbtray, за 3 часа выросла с 8М до 70М. На winxp sp2 осталась почти такой же.
Я в сервере добавил для LETO_MGGETINFO() еще 2 элемента - обьем памяти, так что можно будет отслеживать утечки
А для letodbtray можно проверить память, вызывая

Memory(1001)

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




Пост N: 1779
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.06.10 12:01. Заголовок: Pasha пишет: Мне к..


Pasha пишет:

 цитата:

Мне кажется, что диспетчер задач windows врет


Нужно поюзать какую то альтернативную мерялку.

Например http://www.securitylab.ru/software/234095.php<\/u><\/a>

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




Пост N: 1549
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 30.06.10 12:40. Заголовок: Dima пишет: Нужно п..


Dima пишет:

 цитата:
Нужно поюзать какую то альтернативную мерялку.



Поставил. Результат практически такой же, как у task manager
Для xp sp1 у letodbtray память дошла уже почти до 100М, а для sp2 - почти тоже самое. Непонятно. это в самой windows трубы ржавые ?
Может быть конечно, еще minigui протекает
А использование Memory() показывает, что на клиенте при connect - disconnet утечки нет. На сервере при каких-то операциях есть утечка несколько сот байт, а в каких - надо выяснять

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




Пост N: 1780
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.06.10 14:11. Заголовок: Pasha пишет: Непоня..


Pasha пишет:

 цитата:
Непонятно. это в самой windows трубы ржавые ?


Возможно ;) Не зря ведь был SP2 а затем SP3


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



Пост N: 5
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 30.06.10 14:53. Заголовок: Сегодня локально зап..


Сегодня локально запускал и останавливал сервер. В letodb.log формат даты меняется:
06/30/10 08:28:14: Leto DB Server has been started.
06/30/10 08:34:24: Server has been closed.
06/30/10 09:16:34: Leto DB Server has been started.
30.06.2010 11:05:13: Server has been closed.
06/30/10 11:05:14: Leto DB Server has been started.
30.06.2010 12:54:07: Server has been closed.
06/30/10 12:54:14: Leto DB Server has been started.
06/30/10 12:54:35: Server has been closed.
06/30/10 12:54:39: Leto DB Server has been started.
06/30/10 12:55:27: Server has been closed.
06/30/10 12:55:36: Leto DB Server has been started.
30.06.2010 14:49:55: Server has been closed.
06/30/10 14:50:14: Leto DB Server has been started.
06/30/10 14:50:37: Server has been closed.
06/30/10 14:50:46: Leto DB Server has been started.

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



Пост N: 6
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 30.06.10 15:06. Заголовок: В letodb.ini Pass_fo..


В letodb.ini
Pass_for_Login = 1
Pass_for_Data = 1

Добавил пользователя с правами NNN

В программе через HBROWSE (HWGUI) при попытке изменить данные вылазит ошибка
Error LETO/1021 Помилка в тип? даних
Called from DBUNLOCK(0)
Called from HBROWSE:EDIT(3153)
Called from HBROWSE:ONEVENT(551)
Called from HWG_ACTIVATEMAINWINDOW(0)
Called from HMAINWINDOW:ACTIVATE(355)
Called from MAIN(107)

HwGUI 2.17 Harbour 2.1.0beta2 (Rev. 14944)
Date:30.06.2010
Time:14:56:39

При Pass_for_Data = 0 без ошибок т.к. права не проверяются.

Что делать? Проверять локально права пользователя и давать (не давать) добро на редактирование в HBROWSE?
Как правильно?

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


Пост N: 361
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 01.07.10 10:01. Заголовок: Pasha пишет: Я в се..


Pasha пишет:

 цитата:
Я в сервере добавил для LETO_MGGETINFO() еще 2 элемента - обьем памяти, так что можно будет отслеживать утечки


Вот это, IMHO, зря. Зачем нагружать сервер сбором и пересылкой не имеющей отношения к letodb информацией, зачем клиенту знать, что там с памятью на сервере ? У администратора есть и другие средства для этого.

Что касается утечки при connect / disconnect ... В кодах leto вроде все чисто. Может, проблема, действительно, в недрах реализации ip в SP1. У меня серверы под Линуксом работают, там я такого не наблюдал.

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




Пост N: 1550
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.07.10 10:02. Заголовок: По поводу утечки в l..


По поводу утечки в letodbtray, или подобной утилиты, в winxp sp1
Вызов Memory(1001) показывает, что память не увеличивается, остается постоянной, байт в байт.
Сначала я попробовал вызывать hb_gcAll(.t.), результата это не дало
Затем применил другую схему: вместо вызова connect - disconnect при старте соединяюсь с сервером, затем по таймеру опрашиваю его вызовом Leto_MgGetInfo(). Такой чопик помог, утечка практически прекратилась. Вернее, память в task manager увеличивается, но на самую малось

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


Пост N: 362
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 01.07.10 10:05. Заголовок: AlexMyr пишет: Сего..


AlexMyr пишет:

 цитата:
Сегодня локально запускал и останавливал сервер. В letodb.log формат даты меняется:


В промежутке между стартом /остановом, наверное, программы какие-то запускались. При подсоединении пользователя формат даты передается на сервер, хотя, конечно, он должен только для этого пользователя работать. Надо будет посмотреть ...

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




Пост N: 1551
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.07.10 10:07. Заголовок: alkresin пишет: Вот..


alkresin пишет:

 цитата:
Вот это, IMHO, зря. Зачем нагружать сервер сбором и пересылкой не имеющей отношения к letodb информацией, зачем клиенту знать, что там с памятью на сервере ? У администратора есть и другие средства для этого.



Так у администратора сейчас единственное средство пощупать letodb - это утилита manage. Туда я и добавил этот вызов. Если сервер собирать без fmstat, то эта добавка на работу сервера никак не скажется, разве что клиенту будет пересылаться дополнительно 2 нуля, то есть 4 байта: "0;0;"

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


Пост N: 363
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 01.07.10 10:19. Заголовок: AlexMyr пишет: Что ..


AlexMyr пишет:

 цитата:
Что делать? Проверять локально права пользователя и давать (не давать) добро на редактирование в HBROWSE?


Тут подумать надо. Локально права пользователя вы так просто не проверите - ведь если у него админ прав нет, то он их не прочитает с сервера. Можно, конечно, не возвращать ошибку в такой ситуации, а, не изменяя данные, сказать что все Ок - но это, наверное, неправильно. Так что предлагайте варианты.

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


Пост N: 364
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 01.07.10 10:22. Заголовок: Так у администратора..



 цитата:
Так у администратора сейчас единственное средство пощупать letodb - это утилита manage


Ну есть же всякие process explorer'ы ... Или у администратора физически нет доступа к сереверу ?

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


Пост N: 365
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 01.07.10 10:49. Заголовок: alkresin пишет: В п..


alkresin пишет:

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


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

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


Пост N: 366
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 01.07.10 11:03. Заголовок: Наткнулся на одну ош..


Наткнулся на одну ошибку - seek по отфильтрованной базе неправильно работает, если фильтр выполняется на стороне клиента ( это когда в нем присутствуют переменные, user defined функции, алиасы ). Надо будет исправить, не знаю только когда - со временем туго.

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



Пост N: 7
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 01.07.10 11:13. Заголовок: alkresin пишет: В п..


alkresin пишет:

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



Я игрался только с editable в HBROWSE и менял Pass_for_Data в letodb.ini, больше ничего не трогал в программе. Сервер не пересобирал, тоько останавливал и запускал. Как по мне то в letodb.log должно записываться с теми установками с какими собирался сервер, а юзеру то что хочет юзер (мое ИМХО).

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



Пост N: 8
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 01.07.10 12:17. Заголовок: alkresin пишет: Тут..


alkresin пишет:

 цитата:
Тут подумать надо. Локально права пользователя вы так просто не проверите - ведь если у него админ прав нет, то он их не прочитает с сервера. Можно, конечно, не возвращать ошибку в такой ситуации, а, не изменяя данные, сказать что все Ок - но это, наверное, неправильно. Так что предлагайте варианты.



Сейчас получается, что юзер с правами NNN в HBROWSE заходит в режим редакирования (может случайно или нет по enter или двойному клику) и этим блоктрует запись, уходит пить кофе, чем не дает возможность править данные другим с правами NNY, что не есть правильно. И сервер не знает в каком режиме клиентская сторона с HBROWSE:acolumns:leditable равна true или false, и в других режимах редактирования данных. Получается, что юзера с правами NNN нужно сначала проверить, что он хочет делать (добавить, изменить, удалить), а потом серверу решить, что делать.
На первых порах предлагается молча оставить данные как есть и не возвращать ошибки.

Спасибо: 0 
Профиль
Ответов - 316 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет