On-line: Andrey, Oskar_AAA, гостей 1. Всего: 3 [подробнее..]
АвторСообщение
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 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]


alkresin
moderator


Пост N: 420
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 11.09.10 21:26. Заголовок: Pasha пишет: Хочетс..


Pasha пишет:

 цитата:
Хочется добавить еще одну файловую функцию, которая возвращала бы информацию о файле: размер, дату и время создания и пр.
Тогда можно было бы написать утилиту, которая проверяла и скачивала бы с сервера обновления бинарников посредством leto_memoread.


Такой функции и leto_memoread недостаточно для реализации обновления клиентской программы. Я думал об этом пару лет назад и тоже хотел сначала сделать это через letodb. Но проблема в том, что информация о файлах, необходимых для работы клиента ( бинарник, ini, шаблоны отчетов и пр. ) должна лежать на сервере. Клиент может и не знать, какие файлы нужны - при первоначальной установке, или если вы добавили новые файлы ... Т.е. на сервере должен быть, скажем так, ini - файл со списком каталогов и файлов для каждого клиентского модуля, и сервер должен читать этот файл при запуске, а при запросе со стороны клиента отдавать ему список нужных файлов с датой/временем создания, чтобы клиентская утилита могла определить, какие файлы ей затребовать. Словом, на сервер возлагается ряд нетипичных для letodb задач, поэтому я и написал для этого другую серверную программу, которая все это делает. В принципе, я могу ее выложить куда-нибудь, только нету времени потом на вопросы по ней отвечать :)

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




Пост N: 1553
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.09.10 19:02. Заголовок: Pasha пишет: Тогда ..


Pasha пишет:

 цитата:
Тогда можно было бы написать утилиту, которая проверяла и скачивала бы с сервера обновления бинарников посредством leto_memoread.



Pasha пишет:

 цитата:
Собственно, такую фунцию можно реализовать с помощью механизма udf, но, мне кажется, она будет нелишней в ядре leto
Какие будут мнения ?



Полностью поддерживаю !
Эта просто НУЖНАЯ ВЕЩЬ для разработчика !!!

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




Пост N: 1554
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.09.10 19:08. Заголовок: alkresin пишет: Сло..


alkresin пишет:

 цитата:
Словом, на сервер возлагается ряд нетипичных для letodb задач, поэтому я и написал для этого другую серверную программу, которая все это делает. В принципе, я могу ее выложить куда-нибудь, только нету времени потом на вопросы по ней отвечать :)


Я и раньше просил про такую программу, но что-то вы не ответили !
Было бы неплохо всем желающим посмотреть, а все остальное потом ....

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


Пост N: 421
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 13.09.10 10:00. Заголовок: Andrey пишет: Я и р..

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




Пост N: 1555
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.09.10 15:12. Заголовок: alkresin пишет: alk..


alkresin пишет:

 цитата:
alkresin


Спасибо большое !

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




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


alkresin пишет:

 цитата:
Такой функции и leto_memoread недостаточно для реализации обновления клиентской программы. Я думал об этом пару лет назад и тоже хотел сначала сделать это через letodb. Но проблема в том, что информация о файлах, необходимых для работы клиента ( бинарник, ini, шаблоны отчетов и пр. ) должна лежать на сервере. Клиент может и не знать, какие файлы нужны - при первоначальной установке, или если вы добавили новые файлы ... Т.е. на сервере должен быть, скажем так, ini - файл со списком каталогов и файлов для каждого клиентского модуля, и сервер должен читать этот файл при запуске, а при запросе со стороны клиента отдавать ему список нужных файлов с датой/временем создания, чтобы клиентская утилита могла определить, какие файлы ей затребовать. Словом, на сервер возлагается ряд нетипичных для letodb задач, поэтому я и написал для этого другую серверную программу, которая все это делает.



Тогда лучше хранить информацию о бинарниках: размер, дату создания, может быть версию, или хэш-значение, или crc32 - в дбф. На сервере пусть запускается утилитка, которая обновляет эту информацию.
На клиенте другая утилитка пусть сканирует этот дбф, и, при необходимости, обновляет у себя бинарники посредством leto_memoread.
Тогда эту схему можно реализовать через letodb


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




Пост N: 1657
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 27.09.10 09:42. Заголовок: Как передавать от се..


Как передавать от сервера клиенту большие пакеты ?
Большие пакеты разбиваются на несколько маленьких, а в leto1.c - leto_Recv есть проверка:

if( ( lLen > 0 && lLen+iLenLen+1 <= ptr-szBuffer ) ||
( iLenLen >= 10 && *(ptr-1) == '\n' && *(ptr-2) == '\r' ) )
break;

При приеме может возникнуть случай, когда 1-й байт пакета, на который дробится большой пакет, больше 10, а два последних - перевод строки. При возникновении такой ситуации передача прерывается.
Как раз я наткнулся на такой случай в leto_Memoread. Александр, я вам отправил этот пример. Но как решить этот вопрос в общем случае ? Такая ситуация может возникнуть и при чтении memo-поля

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




Пост N: 1658
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 27.09.10 10:41. Заголовок: Уже разобрался, вопр..


Уже разобрался, вопрос снят

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




Пост N: 1664
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.10.10 12:59. Заголовок: Добавил поддержку дл..


Добавил поддержку для операции letoTrans. Теперь команды COPY TO/APPEND FROM будут выполняться сервером.
Поскольку в стандартных функциях __dbTrans(), __dbCopy(), __dbApp() условие для FOR/WHILE передается как блок кода, а для выполнения на сервере необходимо строковое представление, добавил в tests пример с аналогами этих функций.

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




Пост N: 1665
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.10.10 12:26. Заголовок: LETO IndexOrd(), Ord..


LETO IndexExt(), OrdBagExt() возвращает имя ".CDX" на верхнем регистре.
DBFCDX - на нижнем.
Думаю, стоит использовать нижний регистр и для LETO, тем более для unix регистр существенен. Изменить ? Ни у кого проблем с совместимостью с прежними версиями не возникнет ?


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



Пост N: 60
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 12.10.10 16:23. Заголовок: Pasha пишет: Думаю,..


Pasha пишет:

 цитата:
Думаю, стоит использовать нижний регистр и для LETO, тем более для unix регистр существенен. Изменить ?


+1

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


Пост N: 463
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 12.10.10 22:44. Заголовок: В letodb.ini есть па..


В letodb.ini есть параметр Lower_Path. Может нужно его установку учесть?

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



Пост N: 61
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 13.10.10 08:16. Заголовок: В readme_rus написан..


В readme_rus написано:

Lower_Path = 0 - если 1, преобразовать все пути к нижнему регистру;

т.е. распространяется только на пути.

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




Пост N: 1666
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.10.10 09:44. Заголовок: Судя по сырцам, это ..


Судя по сырцам, это установка только для сервера, она влияет только на
SET( _SET_FILECASE, 1 )
SET( _SET_DIRCASE, 1 )

_SET_FILECASE должен по идее действовать на файловые функции харбора. Но я смотрю, индекс все равно создается с расширением на верхнем регистре, по крайней мере для xHarbour (bagname я формирую на клиенте с использованием IndexBagExt() и передаю на сервер)
Так что думаю, на клиенте надо возвращать расширение все-таки на нижнем регистре, хотя бы для совместимости с DBFCDX
Еще заодно надо поменять RDDI_ORDBAGEXT, заодно и RDDI_TABLEEXT, да и прочие *EXT - надо возвращать расширение с точкой.

Спасибо: 0 
Профиль
Дигидроген монооксид



Не зарегистрирован
Зарегистрирован: 13.10.10
ссылка на сообщение  Отправлено: 13.10.10 20:43. Заголовок: Ставлю последний har..


Ставлю последний harbour из SVN, последние HwGUI и LetoDB из CVS.
Успешно собираю сервер.
Собираю Manager. Но при попытке его запустить, он только записывает в лог

 цитата:
Application Internal Error - (null)
Terminated at: 2010.10.13 16:37:04
Unrecoverable error 9000: Module 'manage.prg'
was compiled with unsupported PCODE version 0.3.
Please recompile.
------------------------------------------------


ЧЯДНТ?

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




Пост N: 1671
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.10.10 21:40. Заголовок: Дигидроген монооксид..


Дигидроген монооксид пишет:

 цитата:
ЧЯДНТ?



Возможно, letodb manager и hwgui собраны разными версиями harbour, об этом свидетельствует сообщение о неподдерживаемой версии пи-кода
Лучше пересобрать также и hwgui

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



Пост N: 7
Зарегистрирован: 14.01.09
ссылка на сообщение  Отправлено: 31.10.10 16:16. Заголовок: слетае сервер под линукс!


вот скачал последний тарбол и собрал последним Харбором. скомпилил тест - выполнился. пытаюсь сделать на базе теста свой пример - вылетает. Нашел ошибку - опять вылетает, но по "Error LETO/1 Open error: //127.0.0.1:2812/temp/Nakl1". смотрю процессы - нету letodb! запускаю сервер - лог пополняется сообщением, что он server already running. на предложение остановиться - никакой реакции!
Некоторое время назад тут было сообщение от мистера Snake : http://clipper.borda.ru/?1-4-200-00000322-000-20-0#018.001<\/u><\/a>, на которое не последовало реакции (ну или я не увидел). ТАк и должно быть?


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




Пост N: 1684
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 31.10.10 17:46. Заголовок: Проблема у snake был..


Проблема у snake была 2 года назад, и проблема непонятная. Сервер letodb падает, но падает как-то непонятно, не совсем, так что потом не запускается ?
Прежде всего надо выяснить, почему он упал. Сервер не должен падать, даже если с ним некорректно работает клиент. Что привело к падению сервера ? Какие ошибки в клиентской программе ? В логе что-нибудь есть ?


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



Пост N: 8
Зарегистрирован: 14.01.09
ссылка на сообщение  Отправлено: 01.11.10 14:13. Заголовок: в логе ничего нет, к..


в логе ничего нет, кроме сообщений о старте и том, что он уже выполняется. ps не выводит в списке процессов. воспроизвести ситуацию не могу пока, так как на радостях пользовал его по разному. так как за долгие годы подзабыл синтаксис - много раз вылетали проги. я не сразу насторожился при появлении Error LETO/1.
в сях и линуксях я не силен, не могу посмотреть, как он определяет наличие выполняющегося себя.
ладно, если еще появится трабла - попытаюсь сделать инструкцию по ее повторению.

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



Пост N: 9
Зарегистрирован: 14.01.09
ссылка на сообщение  Отправлено: 01.11.10 15:37. Заголовок: ну вот опять! со вче..


ну вот опять! со вчерашнего дня оставил сервер. Сегодня смотрю - нет в процессах, логов нет. на предложение запустить - говорит, что уже работает. на предложение остановить - никакой реакции. Где смотреть? как он видит, что уже запущен?

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