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

Ответов - 316, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All

alkresin: Сейчас получается, что юзер с правами NNN в HBROWSE заходит в режим редакирования (может случайно или нет по enter или двойному клику) и этим блоктрует запись, Стоп. Заходя в режим редактирования в HBROWSE, пользователь не блокирует запись. Блокировка осуществляется только в момент записи в БД.

AlexMyr: Я извиняюсь, не проверял так щательно работу блокировок. Тогда хотелось бы для юзера с правами NNN как-то убрать возможность вообще зайти в режим редактирования. Это сейчас наверное невозможно сделать

Pasha: alkresin пишет: Ну есть же всякие process explorer'ы ... Или у администратора физически нет доступа к сереверу ? Тот же task manager возвращает другую информацию. А мне надо было глянуть, что на сервере происходит с памятью на уровне харбора. Да и операция это самая что ни есть безобидная: если работет fmstat, то hb_xquery возвращает static-переменную, ничего не расчитывая при этом


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

alkresin: Так такой фильтр на сервере не будет установлен. А в чем прояляется эта ошибка ? Ошибка в том, что seek возвращает запись без учета фильтра. Т.е. там надо написать дополнительный код в leto_Seek() leto1.c, который в том случае, если таблица фильтруется на стороне клиента, проверял бы соответствие найденной записи фильтру и при необходимости делал бы skip до достижения нужной записи.

Pasha: alkresin пишет: Т.е. там надо написать дополнительный код в leto_Seek() leto1.c т.е. в LetoSeek после ParseRec надо добавить: SELF_SKIPFILTER( ( AREAP ) pArea, ( bFindLast ? -1 : 1 ) ); вечером добавлю

alkresin: т.е. в LetoSeek после ParseRec надо добавить: SELF_SKIPFILTER( ( AREAP ) pArea, ( bFindLast ? -1 : 1 ) ); Этого недостаточно. Надо еще соответствие индексному ключу проверять - при softseek off если в найденной по skipfilter записи ключ не тот, надо идти на eof

Pasha: Действительно. Еще надо scope на клиенте проверять. Эту проверку лучше вставить прямо в letoSkipFilter, чтобы сработало и при go top, и при go bottom

Pasha: Нет, не надо, scope сервер проверит

Pasha: Поправил seek, проверьте пожалуйста

AlexMyr: Как узнать права юзера под которым зашел на сервер (ф-я leto_MgGetUsers() возвращает IP)? Идея такая: захожу юзером, проверяю права, допустим на запись, и потом в HBROWSE lEditable устанавливаю в .T. или .F.

alkresin: Как узнать права юзера под которым зашел на сервер (ф-я leto_MgGetUsers() возвращает IP)? В данный момент - никак. Надо будет добавить функцию.

alkresin: Поправил seek, проверьте пожалуйста У меня ошибка линковки - undefined hb_itemGetTD

AlexMyr: alkresin пишет: В данный момент - никак. Надо будет добавить функцию. Будем ждать

AlexMyr: alkresin пишет: У меня ошибка линковки - undefined hb_itemGetTD У меня собралось без ошибок.

alkresin: У меня Harbour старый - 1.0

Pasha: Вместо hb_itemGetTD( pValue ) поставьте hb_itemGetDL( pValue ) Все равно в индексном выражении время не встречается

alkresin: Проверил seek на фильтрованном наборе - теперь, вроде, все нормально. Спасибо.

alkresin: Коллеги, обязательно отмечайте в Changelog'е, что изменяется протокол передачи данных и надо перекомпилировать сервер, чтобы он нормально работал с вновь перекомпилированными клиентами. Я сегодня почти час искал почему не работает dbcreate() - оказалось, что введен новый параметр pCreateInfo->atomAlias ( а нужен ли он ?? ) посреди ( а почему не в конце - тогда бы не было проблемы ) команды creat; Пока мне пришлось его убрать у себя, чтобы перекомпилировать проблемный программный модуль, т.к. я не могу так просто остановить сервер, с которым работает куча людей...

Pasha: Хорошо А параметр этот нужен, поскольку dbCreate может вызываться в режиме KeepOpen



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