On-line: гостей 2. Всего: 2 [подробнее..]
АвторСообщение
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 [только новые]


alkresin
moderator


Пост N: 367
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 01.07.10 12:36. Заголовок: Сейчас получается, ч..



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


Стоп. Заходя в режим редактирования в HBROWSE, пользователь не блокирует запись. Блокировка осуществляется только в момент записи в БД.

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



Пост N: 9
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 01.07.10 12:51. Заголовок: Я извиняюсь, не пров..


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

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




Пост N: 1552
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.07.10 13:37. Заголовок: alkresin пишет: Ну ..


alkresin пишет:

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



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

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




Пост N: 1553
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.07.10 13:38. Заголовок: alkresin пишет: Нат..


alkresin пишет:

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



Так такой фильтр на сервере не будет установлен. А в чем прояляется эта ошибка ?

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


Пост N: 368
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 01.07.10 14:33. Заголовок: Так такой фильтр на ..



 цитата:
Так такой фильтр на сервере не будет установлен. А в чем прояляется эта ошибка ?


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

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




Пост N: 1554
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.07.10 15:37. Заголовок: alkresin пишет: Т.е..


alkresin пишет:

 цитата:
Т.е. там надо написать дополнительный код в leto_Seek() leto1.c



т.е. в LetoSeek после ParseRec надо добавить:

SELF_SKIPFILTER( ( AREAP ) pArea, ( bFindLast ? -1 : 1 ) );

вечером добавлю

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


Пост N: 369
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 01.07.10 16:05. Заголовок: т.е. в LetoSeek посл..



 цитата:
т.е. в LetoSeek после ParseRec надо добавить:
SELF_SKIPFILTER( ( AREAP ) pArea, ( bFindLast ? -1 : 1 ) );


Этого недостаточно. Надо еще соответствие индексному ключу проверять - при softseek off если в найденной по skipfilter записи ключ не тот, надо идти на eof

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




Пост N: 1555
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.07.10 16:44. Заголовок: Действительно. Еще н..


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


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




Пост N: 1556
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.07.10 16:51. Заголовок: Нет, не надо, scope ..


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

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




Пост N: 1557
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.07.10 22:24. Заголовок: Поправил seek, прове..


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

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



Пост N: 10
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 02.07.10 13:06. Заголовок: Как узнать права юзе..


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

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


Пост N: 370
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.07.10 13:19. Заголовок: Как узнать права юзе..



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


В данный момент - никак. Надо будет добавить функцию.

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


Пост N: 371
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.07.10 13:20. Заголовок: Поправил seek, прове..



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


У меня ошибка линковки - undefined hb_itemGetTD

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



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


alkresin пишет:

 цитата:
В данный момент - никак. Надо будет добавить функцию.



Будем ждать

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



Пост N: 12
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 02.07.10 13:28. Заголовок: alkresin пишет: У м..


alkresin пишет:

 цитата:
У меня ошибка линковки - undefined hb_itemGetTD


У меня собралось без ошибок.

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


Пост N: 373
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.07.10 13:31. Заголовок: У меня Harbour стары..


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

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




Пост N: 1559
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 02.07.10 14:02. Заголовок: Вместо hb_itemGetTD(..


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

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


Пост N: 374
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 05.07.10 14:52. Заголовок: Проверил seek на фил..


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

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


Пост N: 375
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 06.07.10 09:19. Заголовок: Коллеги, обязательно..


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

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




Пост N: 1560
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.07.10 09:39. Заголовок: Хорошо А параметр эт..


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

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