Автор | Сообщение |
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 на Харборе, ... и вообще все в наших руках :). Кто хочет участвовать в разработке, тестировании - пишите.
|
|
|
Ответов - 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, пользователь не блокирует запись. Блокировка осуществляется только в момент записи в БД.
|
|
|
AlexMyr
|
| |
Пост N: 9
Зарегистрирован: 11.06.10
|
|
Отправлено: 01.07.10 12:51. Заголовок: Я извиняюсь, не пров..
Я извиняюсь, не проверял так щательно работу блокировок. Тогда хотелось бы для юзера с правами NNN как-то убрать возможность вообще зайти в режим редактирования. Это сейчас наверное невозможно сделать
|
|
|
Pasha
|
| Администратор
|
Пост N: 1552
Зарегистрирован: 23.05.05
|
|
Отправлено: 01.07.10 13:37. Заголовок: alkresin пишет: Ну ..
alkresin пишет: цитата: | Ну есть же всякие process explorer'ы ... Или у администратора физически нет доступа к сереверу ? |
| Тот же task manager возвращает другую информацию. А мне надо было глянуть, что на сервере происходит с памятью на уровне харбора. Да и операция это самая что ни есть безобидная: если работет fmstat, то hb_xquery возвращает static-переменную, ничего не расчитывая при этом
|
|
|
Pasha
|
| Администратор
|
Пост N: 1553
Зарегистрирован: 23.05.05
|
|
Отправлено: 01.07.10 13:38. Заголовок: alkresin пишет: Нат..
alkresin пишет: цитата: | Наткнулся на одну ошибку - seek по отфильтрованной базе неправильно работает, если фильтр выполняется на стороне клиента ( это когда в нем присутствуют переменные, user defined функции, алиасы ). Надо будет исправить, не знаю только когда - со временем туго. |
| Так такой фильтр на сервере не будет установлен. А в чем прояляется эта ошибка ?
|
|
|
alkresin
|
| moderator
|
Пост N: 368
Зарегистрирован: 06.07.06
|
|
Отправлено: 01.07.10 14:33. Заголовок: Так такой фильтр на ..
цитата: | Так такой фильтр на сервере не будет установлен. А в чем прояляется эта ошибка ? |
| Ошибка в том, что seek возвращает запись без учета фильтра. Т.е. там надо написать дополнительный код в leto_Seek() leto1.c, который в том случае, если таблица фильтруется на стороне клиента, проверял бы соответствие найденной записи фильтру и при необходимости делал бы skip до достижения нужной записи.
|
|
|
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 ) ); вечером добавлю
|
|
|
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
|
|
|
Pasha
|
| Администратор
|
Пост N: 1555
Зарегистрирован: 23.05.05
|
|
Отправлено: 01.07.10 16:44. Заголовок: Действительно. Еще н..
Действительно. Еще надо scope на клиенте проверять. Эту проверку лучше вставить прямо в letoSkipFilter, чтобы сработало и при go top, и при go bottom
|
|
|
Pasha
|
| Администратор
|
Пост N: 1556
Зарегистрирован: 23.05.05
|
|
Отправлено: 01.07.10 16:51. Заголовок: Нет, не надо, scope ..
Нет, не надо, scope сервер проверит
|
|
|
Pasha
|
| Администратор
|
Пост N: 1557
Зарегистрирован: 23.05.05
|
|
Отправлено: 01.07.10 22:24. Заголовок: Поправил seek, прове..
Поправил seek, проверьте пожалуйста
|
|
|
AlexMyr
|
| |
Пост N: 10
Зарегистрирован: 11.06.10
|
|
Отправлено: 02.07.10 13:06. Заголовок: Как узнать права юзе..
Как узнать права юзера под которым зашел на сервер (ф-я leto_MgGetUsers() возвращает IP)? Идея такая: захожу юзером, проверяю права, допустим на запись, и потом в HBROWSE lEditable устанавливаю в .T. или .F.
|
|
|
|
alkresin
|
| moderator
|
Пост N: 370
Зарегистрирован: 06.07.06
|
|
Отправлено: 02.07.10 13:19. Заголовок: Как узнать права юзе..
цитата: | Как узнать права юзера под которым зашел на сервер (ф-я leto_MgGetUsers() возвращает IP)? |
| В данный момент - никак. Надо будет добавить функцию.
|
|
|
alkresin
|
| moderator
|
Пост N: 371
Зарегистрирован: 06.07.06
|
|
Отправлено: 02.07.10 13:20. Заголовок: Поправил seek, прове..
цитата: | Поправил seek, проверьте пожалуйста |
| У меня ошибка линковки - undefined hb_itemGetTD
|
|
|
AlexMyr
|
| |
Пост N: 11
Зарегистрирован: 11.06.10
|
|
Отправлено: 02.07.10 13:23. Заголовок: alkresin пишет: В д..
alkresin пишет: цитата: | В данный момент - никак. Надо будет добавить функцию. |
| Будем ждать
|
|
|
AlexMyr
|
| |
Пост N: 12
Зарегистрирован: 11.06.10
|
|
Отправлено: 02.07.10 13:28. Заголовок: alkresin пишет: У м..
alkresin пишет: цитата: | У меня ошибка линковки - undefined hb_itemGetTD |
| У меня собралось без ошибок.
|
|
|
alkresin
|
| moderator
|
Пост N: 373
Зарегистрирован: 06.07.06
|
|
Отправлено: 02.07.10 13:31. Заголовок: У меня Harbour стары..
У меня Harbour старый - 1.0
|
|
|
Pasha
|
| Администратор
|
Пост N: 1559
Зарегистрирован: 23.05.05
|
|
Отправлено: 02.07.10 14:02. Заголовок: Вместо hb_itemGetTD(..
Вместо hb_itemGetTD( pValue ) поставьте hb_itemGetDL( pValue ) Все равно в индексном выражении время не встречается
|
|
|
alkresin
|
| moderator
|
Пост N: 374
Зарегистрирован: 06.07.06
|
|
Отправлено: 05.07.10 14:52. Заголовок: Проверил seek на фил..
Проверил seek на фильтрованном наборе - теперь, вроде, все нормально. Спасибо.
|
|
|
alkresin
|
| moderator
|
Пост N: 375
Зарегистрирован: 06.07.06
|
|
Отправлено: 06.07.10 09:19. Заголовок: Коллеги, обязательно..
Коллеги, обязательно отмечайте в Changelog'е, что изменяется протокол передачи данных и надо перекомпилировать сервер, чтобы он нормально работал с вновь перекомпилированными клиентами. Я сегодня почти час искал почему не работает dbcreate() - оказалось, что введен новый параметр pCreateInfo->atomAlias ( а нужен ли он ?? ) посреди ( а почему не в конце - тогда бы не было проблемы ) команды creat; Пока мне пришлось его убрать у себя, чтобы перекомпилировать проблемный программный модуль, т.к. я не могу так просто остановить сервер, с которым работает куча людей...
|
|
|
Pasha
|
| Администратор
|
Пост N: 1560
Зарегистрирован: 23.05.05
|
|
Отправлено: 06.07.10 09:39. Заголовок: Хорошо А параметр эт..
Хорошо А параметр этот нужен, поскольку dbCreate может вызываться в режиме KeepOpen
|
|
|
Ответов - 316
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|