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


PSP
постоянный участник


Пост N: 171
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 10.10.09 20:19. Заголовок: alx_on пишет: В нас..


alx_on пишет:

 цитата:
В настоящий момент LetoDB развивается или уже заброшен?

В настоящий момент LetoDB стабильно работает! :)

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


Пост N: 10
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 11.10.09 10:00. Заголовок: PSP пишет: В настоя..


PSP пишет:

 цитата:
В настоящий момент LetoDB стабильно работает! :)



Если использовать минимум функционала и для небольшого проекта, то да
Я за два дня УЖЕ исправил несколько ошибок
1. SEEK, GO TOP (как и GO BOTTOM) не учитывает SCOPE (нижнюю или верхнюю)
2. DbAppend, DbRLock() не учитывают FLOCK
3. DbRLock() не снимает предыдущие блокировки В итоге все блокировки остаются и плюс все операции начинают тормозить (список блокированных записей становится огромным)

еще что то...

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


Пост N: 11
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 12.10.09 08:51. Заголовок: PSP Кстати, как вп..


PSP

Кстати, как впечатления от работы?

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


Пост N: 173
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 12.10.09 09:19. Заголовок: Серьезных багов я не..


Серьезных багов я не встретил. Меня устраивает. :)
То, что Вы написали выше, я не использую.
Может быть Александр или Паша прокомментируют.

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


Пост N: 12
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 12.10.09 09:51. Заголовок: PSP Сколько у Вас ..


PSP

Сколько у Вас одновременных подключений? Как справляется с нагрузкой?

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


Пост N: 13
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 12.10.09 10:00. Заголовок: Вот мой список испра..


Вот мой список исправлений:

LetoDB (доработки и исправления)
1. DbAppend() сразу исполняется на сервере (плюс проверка на FLock)
2. DbRecordInfo(DBRI_LOCKED,nRecNo) - обрабатывается номер записи (ранее игнорировалось)
3. DbOrderInfo() - падало в отсутствии индекса
4. OrdCount() - теперь работает
5. Блокировки (dbrlock, flock) теперь учитывают FLock() другого пользователя
6. SEEK, DbGOTOP, DbGoBottom учитывают установленные scope

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




Пост N: 1210
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.10.09 10:14. Заголовок: alx_on пишет: Вот м..


alx_on пишет:

 цитата:
Вот мой список исправлений:

LetoDB (доработки и исправления)
1. DbAppend() сразу исполняется на сервере (плюс проверка на FLock)
2. DbRecordInfo(DBRI_LOCKED,nRecNo) - обрабатывается номер записи (ранее игнорировалось)
3. DbOrderInfo() - падало в отсутствии индекса
4. OrdCount() - теперь работает
5. Блокировки (dbrlock, flock) теперь учитывают FLock() другого пользователя
6. SEEK, DbGOTOP, DbGoBottom учитывают установленные scope



Если можно, пришлите мне (на tpe2 (гав) mail . ru ) ваши исправления, я их сброшу на CVS
И напишите, как вас назвать в Changelog

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


Пост N: 174
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 12.10.09 10:20. Заголовок: alx_on пишет: Сколь..


alx_on пишет:

 цитата:
Сколько у Вас одновременных подключений? Как справляется с нагрузкой?


Проект пока маленький. Максимум 10 пользователей. Задержек не наблюдается.

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


Пост N: 14
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 12.10.09 12:08. Заголовок: Pasha пишет: Если м..


Pasha пишет:

 цитата:
Если можно, пришлите мне (на tpe2 (гав) mail . ru ) ваши исправления, я их сброшу на CVS



В каком виде отдать? (или включите в разработчики для самостоятельного выкладывания, раз никто проектом больше не занимается)

PSP пишет:

 цитата:
Максимум 10 пользователе



У нас 50 (доходит до 100 одновременно) :)


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




Пост N: 1211
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.10.09 14:21. Заголовок: alx_on пишет: В как..


alx_on пишет:

 цитата:
В каком виде отдать? (или включите в разработчики для самостоятельного выкладывания, раз никто проектом больше не занимается)



Администратор проекта - Александр, если есть желание поучавствовать - надо связяться с ним. Только он может добавить в список разработчиков и дать права на запись. Это только приветствуется.
А так я просто обновлю исходники на CVS, и напишу, что это ваши правки

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


Пост N: 15
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 13.10.09 16:09. Заголовок: Pasha отправил пись..


Pasha
отправил письмо

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


Пост N: 16
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 15.10.09 10:59. Заголовок: Меня сейчас смущают ..


Меня сейчас смущают несколько моментов
1. Realtions - в подчиненной базе не обновляется RECNO() (при этом OrdKeyNo правильный и запись позиционируется тоже вроде бы верно)
2. Долгие операции (на сервере), например, оптимизированный фильтр на большой базе, блокируют остальные операции (для пользователя складывается ощущение, что все зависло). Я даже думаю - не сделать ли опцию в letodb.ini для выключения оптимизации фильтров
3. DbRLockList - не работает (в принципе, не сильно важно)
4. DbRLock() - не снимает предыдущие блокировки (может поправлю сам)
5. Если индексы открываются автоматически (SET_AUTOPEN==.T.) - то установка SCOPE игнорируется (клиентская часть не информируется об открытии индексов?)

PS Александр Кресин забросил проект?

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


Пост N: 17
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 17.10.09 10:45. Заголовок: Pasha Добавил обра..


Pasha

Добавил обработку OrdKeyGoto()
Файлы выслал

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




Пост N: 1212
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 18.10.09 12:47. Заголовок: alx_on пишет: Добав..


alx_on пишет:

 цитата:
Добавил обработку OrdKeyGoto()
Файлы выслал



Спасибо. Отправил все на CVS

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


Пост N: 239
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 23.10.09 10:35. Заголовок: alx_on пишет: 2. До..


alx_on пишет:

 цитата:
2. Долгие операции (на сервере), например, оптимизированный фильтр на большой базе, блокируют остальные операции (для пользователя складывается ощущение, что все зависло). Я даже думаю - не сделать ли опцию в letodb.ini для выключения оптимизации фильтров


А что такое оптимизированный фильтр и как он реализован в letodb ?

 цитата:
PS Александр Кресин забросил проект?


Нет, не забросил. Просто иногда резко ограничиваю Интернет-активность, последнее время, к сожалению, все чаще и чаще.

По поводу ваших изменений. Я категорически не согласен с тем, что dbAppend() стал сразу выполняться на сервере. Задержка его исполнения была сделана специально, чтобы ускорить добавление записи. В вашем варианте при обычной процедуре добавления:

append blank
replace ...
commit ( , или unlock, или следующий append blank )

требуется отправить 2 команды, в то время как при старом варианте - одну.


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




Пост N: 1213
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.10.09 13:26. Заголовок: alkresin пишет: Я к..


alkresin пишет:

 цитата:
Я категорически не согласен с тем, что dbAppend() стал сразу выполняться на сервере.



Я верну этот изменение назад. Думаю, проверку FilLock надо делать при вызове neterr()

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


Пост N: 240
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 23.10.09 14:26. Заголовок: Думаю, проверку FilL..



 цитата:
Думаю, проверку FilLock надо делать при вызове neterr()


Не могу ничего пока сказать по этому поводу. Я не использую Flock() и поэтому не знаю нюансы, связанные с его использованием. До недавнего времени я полагал, что это то же, что открыть файл в exlusive mode, и был очень удивлен, когда узнал, что это не так :).

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




Пост N: 1214
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.10.09 16:04. Заголовок: Смотрим NG. NetErr()..


Смотрим NG. NetErr() возвращает .t. в таких ситуациях:

USE USE EXCLUSIVE by another process
USE...EXCLUSIVE USE EXCLUSIVE or USE by another process
APPEND BLANK FLOCK() or RLOCK() of LASTREC() + 1 by another user

т.е., для letodb neterr() должен посылать запрос на сервер на предмет блокировок. В этом случае все равно получится 2 запроса при dbAppend: на neterr и commit. Но, если пользователь уверен, что FLock() не используется, он может не выдавать NetErr()

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


Пост N: 18
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 23.10.09 16:31. Заголовок: alkresin пишет: А ..


alkresin пишет:


 цитата:
А что такое оптимизированный фильтр и как он реализован в letodb ?


Интересный вопрос :)
Есть несложная проверка фильтра, по результату letoDB может сама на сервере отфильтровывать записи (по типу ADS), например:
Простой фильтр - клиент сам проверяет выражение фильтра на каждой записи
Оптимизированный - фильтр ставится на сервере


 цитата:
требуется отправить 2 команды, в то время как при старом варианте - одну


Возьмем самый простой пример:
1. (1) клиент вызвал FLock()
2. (2) клиент сделал dbappend() (успешно, ему ничего не помешало, на сервер ничего не ушло, запись НЕ заблокировалась, ошибки не произошло)
теперь оба клиента уверены, что у них все хорошо
чем это кончится в итоге я предсказать не берусь (в сложных вариантах непредсказуемые глюки в данных)

Pasha пишет:

 цитата:
Думаю, проверку FilLock надо делать при вызове neterr()


Поменяем пример выше: первым было сделан dbappend(). Та же проблема в профиль

Я считаю, что если необходимы быстрые dbappend (не используется FLock) - можно сделать некую настройку (при компиляции или в рантайме)
Или блокировать FLock'ом (в этом случае, например, можно сделать быстрые dbappend)

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


Пост N: 19
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 23.10.09 16:41. Заголовок: Pasha пишет: Но, ес..


Pasha пишет:

 цитата:
Но, если пользователь уверен, что FLock() не используется, он может не выдавать NetErr()


Существуют и другие ошибки при добавлении записи (например, место на диске кончилось, сеть тоже кончилась:) и т.д.)

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