Автор | Сообщение |
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 на Харборе, ... и вообще все в наших руках :). Кто хочет участвовать в разработке, тестировании - пишите.
|
|
|
Ответов - 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 стабильно работает! :)
|
|
|
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() не снимает предыдущие блокировки В итоге все блокировки остаются и плюс все операции начинают тормозить (список блокированных записей становится огромным) еще что то...
|
|
|
alx_on
|
| постоянный участник
|
Пост N: 11
Зарегистрирован: 07.07.09
|
|
Отправлено: 12.10.09 08:51. Заголовок: PSP Кстати, как вп..
PSP Кстати, как впечатления от работы?
|
|
|
PSP
|
| постоянный участник
|
Пост N: 173
Зарегистрирован: 27.01.07
|
|
Отправлено: 12.10.09 09:19. Заголовок: Серьезных багов я не..
Серьезных багов я не встретил. Меня устраивает. :) То, что Вы написали выше, я не использую. Может быть Александр или Паша прокомментируют.
|
|
|
alx_on
|
| постоянный участник
|
Пост N: 12
Зарегистрирован: 07.07.09
|
|
Отправлено: 12.10.09 09:51. Заголовок: PSP Сколько у Вас ..
PSP Сколько у Вас одновременных подключений? Как справляется с нагрузкой?
|
|
|
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
|
|
|
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
|
|
|
PSP
|
| постоянный участник
|
Пост N: 174
Зарегистрирован: 27.01.07
|
|
Отправлено: 12.10.09 10:20. Заголовок: alx_on пишет: Сколь..
alx_on пишет: цитата: | Сколько у Вас одновременных подключений? Как справляется с нагрузкой? |
| Проект пока маленький. Максимум 10 пользователей. Задержек не наблюдается.
|
|
|
alx_on
|
| постоянный участник
|
Пост N: 14
Зарегистрирован: 07.07.09
|
|
Отправлено: 12.10.09 12:08. Заголовок: Pasha пишет: Если м..
Pasha пишет: цитата: | Если можно, пришлите мне (на tpe2 (гав) mail . ru ) ваши исправления, я их сброшу на CVS |
| В каком виде отдать? (или включите в разработчики для самостоятельного выкладывания, раз никто проектом больше не занимается) PSP пишет: У нас 50 (доходит до 100 одновременно) :)
|
|
|
Pasha
|
| Администратор
|
Пост N: 1211
Зарегистрирован: 23.05.05
|
|
Отправлено: 12.10.09 14:21. Заголовок: alx_on пишет: В как..
alx_on пишет: цитата: | В каком виде отдать? (или включите в разработчики для самостоятельного выкладывания, раз никто проектом больше не занимается) |
| Администратор проекта - Александр, если есть желание поучавствовать - надо связяться с ним. Только он может добавить в список разработчиков и дать права на запись. Это только приветствуется. А так я просто обновлю исходники на CVS, и напишу, что это ваши правки
|
|
|
alx_on
|
| постоянный участник
|
Пост N: 15
Зарегистрирован: 07.07.09
|
|
Отправлено: 13.10.09 16:09. Заголовок: Pasha отправил пись..
Pasha отправил письмо
|
|
|
|
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 Александр Кресин забросил проект?
|
|
|
alx_on
|
| постоянный участник
|
Пост N: 17
Зарегистрирован: 07.07.09
|
|
Отправлено: 17.10.09 10:45. Заголовок: Pasha Добавил обра..
Pasha Добавил обработку OrdKeyGoto() Файлы выслал
|
|
|
Pasha
|
| Администратор
|
Пост N: 1212
Зарегистрирован: 23.05.05
|
|
Отправлено: 18.10.09 12:47. Заголовок: alx_on пишет: Добав..
alx_on пишет: цитата: | Добавил обработку OrdKeyGoto() Файлы выслал |
| Спасибо. Отправил все на CVS
|
|
|
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 команды, в то время как при старом варианте - одну.
|
|
|
Pasha
|
| Администратор
|
Пост N: 1213
Зарегистрирован: 23.05.05
|
|
Отправлено: 23.10.09 13:26. Заголовок: alkresin пишет: Я к..
alkresin пишет: цитата: | Я категорически не согласен с тем, что dbAppend() стал сразу выполняться на сервере. |
| Я верну этот изменение назад. Думаю, проверку FilLock надо делать при вызове neterr()
|
|
|
alkresin
|
| moderator
|
Пост N: 240
Зарегистрирован: 06.07.06
|
|
Отправлено: 23.10.09 14:26. Заголовок: Думаю, проверку FilL..
цитата: | Думаю, проверку FilLock надо делать при вызове neterr() |
| Не могу ничего пока сказать по этому поводу. Я не использую Flock() и поэтому не знаю нюансы, связанные с его использованием. До недавнего времени я полагал, что это то же, что открыть файл в exlusive mode, и был очень удивлен, когда узнал, что это не так :).
|
|
|
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()
|
|
|
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)
|
|
|
alx_on
|
| постоянный участник
|
Пост N: 19
Зарегистрирован: 07.07.09
|
|
Отправлено: 23.10.09 16:41. Заголовок: Pasha пишет: Но, ес..
Pasha пишет: цитата: | Но, если пользователь уверен, что FLock() не используется, он может не выдавать NetErr() |
| Существуют и другие ошибки при добавлении записи (например, место на диске кончилось, сеть тоже кончилась:) и т.д.)
|
|
|
Ответов - 193
, стр:
1
2
3
4
5
6
7
8
9
10
All
[только новые]
|
|