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


Pasha
Администратор




Пост N: 845
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 04.03.08 17:52. Заголовок: По поводу memo-полей..


По поводу memo-полей возникла такая мысль
Значание memo-поля передается на сервер во время PutValue, а остальных
полей - во время выполнения Commit, что не очень хорошо
Может быть передавать значения memo-полей отдельными пакетами вместе с командой update ? А по putvaluе сохранять где-нибудь это значение на клиенте, без передачи на сервер ?

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




Пост N: 510
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.03.08 22:05. Заголовок: Портирую свою легкую..


Портирую свою легкую задачу на LetoDB и столкнулся с такой проблемой:
Шаблоны печати храню на сервере в папке FORM, это могут быть просто мои текстовые файлы *.ini *.frm, вордовские файлы *.doc и *.xls и отчеты FastReporta.
Вопрос такой - нужна функция копирования выбранного файла с сервера на клиентское место (и обратно, если юзер поменял или изменил шаблон !!!).
Хотелось бы иметь средства запрета изменения шаблонов, если пользователю нет доступа к такой операции.

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


Пост N: 126
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 04.03.08 22:48. Заголовок: Может быть передават..



 цитата:
Может быть передавать значения memo-полей отдельными пакетами вместе с командой update ? А по putvaluе сохранять где-нибудь это значение на клиенте, без передачи на сервер ?


Пожалуй, да. Можно добавить в LETOAREA массив BYTE * для хранения memo-полей. Количество элементов массива - по количеству полей, признак update - ненулевое значение элемента.

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


Пост N: 127
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 04.03.08 22:57. Заголовок: Шаблоны печати храню..



 цитата:
Шаблоны печати храню на сервере в папке FORM, это могут быть просто мои текстовые файлы *.ini *.frm, вордовские файлы *.doc и *.xls и отчеты FastReporta.


Вообще говоря, манипуляция текстовыми, а тем более must_die файлами :) не входит в компетенцию dbfcdx сервера. Файлы эти можно, как и сейчас, хранить в расшаренной папке и копировать их средствами ОС. "Средства запрета изменения шаблонов" - просто установка прав на эти файлы.

Кстати, добавил функцию leto_Connect( cPath ), возвращает -1 в случае неудачи.

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




Пост N: 511
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.03.08 23:48. Заголовок: alkresin пишет: Фай..


alkresin пишет:

 цитата:
Файлы эти можно, как и сейчас, хранить в расшаренной папке и копировать их средствами ОС.


Неэффективно тогда получается. Разговор шел о сервере который возьмет на себя защиту данных и чтоб для разработчика это было удобно. Попробуйте распространять сетевую программу по многим городам и чтоб была простая установка и обновление. Очень несовместимые вещи. Посмотрите на БЭСТ4+, БЭСТ5 - там тоже до ума не доведено. А 1С обновлять - целая религия, в БЭСТ5 даже лучше.

Так как распространяю свою сетевую программу по многим городам, набрался опыта и столкнулся с трудностями:
по установке сети, а затем обновления этих программ. Админы в городах как хотят так и ставят мою программу.
Заставит их "расшарить" папки - это просто ..... уму не постижимо, нет слов.
Юзера продвинутые (руки им поотрывать) додумываются ставить с дистрибутивов предназначенных для других городов. Базы за 2-3 года стирают за момент и еще удивленно говорят: я же думала там программа новее и решила обновить. И руководителю фиг объяснишь что таких людей нельзя допускать к компьютеру, он к тебе с претензией - а что разве нельзя было предусмотреть защиту.
ЗНАЧИТ ЗАЩИТУ от ДУРАКА (админа, пользователя) нужно ставить СРАЗУ !!! И даже бэкап не поможет.

Ваш сервер очень прост в сетевой настройке !!! Это большой плюс !

Если бы еще он поддерживал эти 2 функции, то для программиста было бы проще работать с формами.
Это же просто считать файл на сервере в память и передать клиенту. Туда и обрато .....
Не будем же эти формы запихивать в МЕМО-поля ?

alkresin пишет:

 цитата:
Кстати, добавил функцию leto_Connect( cPath ), возвращает -1 в случае неудачи.


Спасибо !

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



Пост N: 31
Зарегистрирован: 03.04.07
ссылка на сообщение  Отправлено: 05.03.08 00:42. Заголовок: Andrey пишет: Неэфф..


Andrey пишет:

 цитата:
Неэффективно тогда получается. Разговор шел о сервере который возьмет на себя защиту данных и чтоб для разработчика это было удобно. Попробуйте распространять сетевую программу по многим городам и чтоб была простая установка и обновление. Очень несовместимые вещи. Посмотрите на БЭСТ4+, БЭСТ5 - там тоже до ума не доведено. А 1С обновлять - целая религия, в БЭСТ5 даже лучше.

Так как распространяю свою сетевую программу по многим городам, набрался опыта и столкнулся с трудностями:
по установке сети, а затем обновления этих программ. Админы в городах как хотят так и ставят мою программу.
Заставит их "расшарить" папки - это просто ..... уму не постижимо, нет слов.
Юзера продвинутые (руки им поотрывать) додумываются ставить с дистрибутивов предназначенных для других городов. Базы за 2-3 года стирают за момент и еще удивленно говорят: я же думала там программа новее и решила обновить. И руководителю фиг объяснишь что таких людей нельзя допускать к компьютеру, он к тебе с претензией - а что разве нельзя было предусмотреть защиту.



Что-то типа «Золотая рыбка». А конец знаешь?

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


Пост N: 128
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 05.03.08 09:50. Заголовок: Это же просто считат..



 цитата:
Это же просто считать файл на сервере в память и передать клиенту. Туда и обрато .....
Не будем же эти формы запихивать в МЕМО-поля ?


А почему бы и нет ? С точки зрения безопасности и независимости от окружения очень даже неплохо.
Но две такие файловые функции, чтоб считывала файл целиком и целиком записывала я планирую добавить.

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




Пост N: 846
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.03.08 21:53. Заголовок: Взял на заметку, пос..


Взял на заметку, поскольку сейчас занимаюсь relations. Лучше всего пусть это будет массив PHB_ITEM, поскольку там могут быть не только null-terminated strings, да и этим я решу оставшуюся проблемку с VarField.
Еще одно рацпредложение. А что, если pArea->pTagCurrent->TagName передавать не с каждой командой навигации по таблице, а по OrdSetFocus, хранить cOrder на сервере в oArea и использовать при необходимости ?


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


Пост N: 129
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 07.03.08 13:16. Заголовок: А что, если pArea-&#..



 цитата:
А что, если pArea->pTagCurrent->TagName передавать не с каждой командой навигации по таблице, а по OrdSetFocus, хранить cOrder на сервере в oArea и использовать при необходимости ?


Черт его знает ... Не уверен, что это даст выигрыш в производительности. С одной стороны, уменьшение длины пакета на несколько байт, с другой - лишний пакет время от времени. Надо тестировать.

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


Пост N: 131
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 13.03.08 11:21. Заголовок: Добавил поддержку MT..


Добавил поддержку MT.
Теперь на сервере крутятся 2 потока.
Один принимает соединения, опрашивает сокеты и читает с них данные, а также отвечает на те запросы, которые не требуют обращения к RDD, он работает только на С уровне, не трогает Харборовский стек и VM.
Второй обрабатывает запросы, требующие обращения к RDD, т.е. основную массу запросов.
Это позволяет серверу, вне зависимости от загруженности работой с dbf, своевременно подключать и отключать пользователей, отвечать на management запросы ( надо будет этому первому потоку еще и файловые функции отдать ).

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




Пост N: 516
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.03.08 16:50. Заголовок: Классно !!! А когда..


Классно !!!
А когда можно будет попробывать ?

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


Пост N: 132
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 16.03.08 10:07. Заголовок: А когда можно будет ..



 цитата:
А когда можно будет попробывать ?


Пора CVS осваивать :). Это очень просто - скачать клиент, настроить - и у вас всегда, когда надо, свежайшие исходники.

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


Пост N: 133
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 17.03.08 13:01. Заголовок: Вот такой батник для..


Вот такой батник для консольного CVS:

@echo off
SET CVSROOT=:pserver:anonymous@letodb.cvs.sourceforge.net:/cvsroot/letodb
SET HOME=c:\cvs
c:\cvs\cvs login
c:\cvs\cvs checkout -P letodb


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


Пост N: 134
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 17.03.08 13:05. Заголовок: Паша, я сделал relat..


Паша, я сделал relations - в самом простом варианте: движение по дочерней базе инициируется при чтении поля из нее, если было движение в родительской - чтобы работало.
Будут желание и возможности оптимизировать это дело - делайте.

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




Пост N: 853
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 17.03.08 17:11. Заголовок: Замечательно А я еще..


Замечательно
А я еще неделю назад код написал, да все отладить не мог :(

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


Пост N: 135
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 20.03.08 13:16. Заголовок: Паша, я тут подумал ..


Паша, я тут подумал - стоит, наверное, передавать на сервер не имя тэга, а порядковый номер, ведь в структурах на клиенте и в LETOTAG на сервере порядок следования тот же.
Дело в том, что делать так, как в leto_Scope() - определять номер тэга и по нему брать элемент в LETOTAG - неправильно. В общем случае ( особенно это будет часто для ntx ) количество и порядок следования тэгов для общей таблицы ( определяемые по orderinfo ) и для конкретной workarea могут отличаться.
Я, наверное, это сделаю ближе к вечеру, если нет возражений.

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




Пост N: 855
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 20.03.08 14:08. Заголовок: Лучше конечно делать..


Лучше конечно делать все для общего случая, расчитывая сразу и на ntx
Может в LETOTAG добавить имя тэга и по нему выполнять поиск ?


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


Пост N: 136
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 20.03.08 14:44. Заголовок: Сначала я так и хоте..


Сначала я так и хотел сделать, но потом подумал:
сколько дублирования будет - по числу пользователей одного индекса, ну и затраты на сравнение строк/поиск.
А тут сразу номер готовый придет.

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




Пост N: 856
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 20.03.08 14:58. Заголовок: Хорошо, пусть будет ..


Хорошо, пусть будет номер

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


Пост N: 137
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 21.03.08 09:54. Заголовок: Не все так просто :)..


Не все так просто :) ...
Сервер-то получит от клиента номер ордера в текущей workarea, который может не совпадать с реальным, так что все-равно нужно или имена тэгов в LETOTAG хранить, или что-то другое

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