On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
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: 776
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 04.02.08 21:42. Заголовок: Переделал scope, отп..


Переделал scope, отправил на CVS

Одну свою большую программу с letodb так и не смог запустить, не открывается 5-й по порядку открытия файл. Непонятно почему, имя задано правильно. 4 файла БД с индексом открылись успешно
Ошибка в лог:
02/04/08 19:14:46: Open error (12-1001): e:/db/test/com/people_
Если вместо people_.dbf путаюсь открыть другой файл, выдается ошибка с таким же кодом
Непонятно. Пока отставил, запустил другую программу. БД открылась успешно ! Большинство режимов работают, но не все
Иногда программа зависает, иногда выдает ошибку на различных операциях
Пока не локализовал, разбираюсь. Результат считаю хорошим, я на это так быстро и не расчитывал
Пока тестовые примеры c ошибками не даю, попытаюсь разобраться сам


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


Пост N: 57
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 04.02.08 22:43. Заголовок: 02/04/08 19:14:46: O..



 цитата:
02/04/08 19:14:46: Open error (12-1001): e:/db/test/com/people_


А точно 12-1001 ? Может, 21-1001 ? Ведь 12 == EG_NOFUNC, вроде ни при чем ?
А вообще странно. У меня никаких проблем нет, все программы, что скомпилил - работают, файлов по 10 открывают ( у меня больше не бывает обычно ).

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




Пост N: 777
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 04.02.08 23:28. Заголовок: Я скопировл из лога...


Я скопировл из лога. Покопаюсь сам, странная ситуация
У меня тоже другая программа всю БД без проблем открыла

Одну ошибку локализовал
dbSeek(space(n)) попадает в server.prg на

IF Empty( xKey := GetCmdItem( cCommand,nPos+1,@nPos ) )
Return "-002"
ENDIF

Надо вычислять длину ключа и передавать ее вместе с ключем. И учитывать, что сам ключ может содержать нулевой байт. Т.е в leto_SendRecv надо передавать размер пакета напрямую, а не вычислять по strlen()


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




Пост N: 778
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 04.02.08 23:54. Заголовок: Как правильно создав..


Как правильно создавать индекс в OrdCreate, если его надо создать в том же каталоге, что и dbf ? Передавать имя файла индекса без //ip-adr:port/... ?
Должна ли учитываться настройка DataPath в letodb.ini ?
Наверное, надо добавить oApp:DataPath в hs_createindex

ordCreate( oApp:DataPath+cBagName,cTagName,cKey,&("{||"+cKey+"}"),lUnique )


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


Пост N: 59
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 05.02.08 09:37. Заголовок: Надо вычислять длину..



 цитата:
Надо вычислять длину ключа и передавать ее вместе с ключем. И учитывать, что сам ключ может содержать нулевой байт. Т.е в leto_SendRecv надо передавать размер пакета напрямую, а не вычислять по strlen()



Сделаю.

Насчет OrdCreate:
//ip-adr:port/ и так на сервер не передается.
Если имя индекса передано с путем, то надо добавлять oApp:DataPath, если без, то нужна дополнительная проверка: если имя индекса совпадает с именем dbf, то не добавляем oApp:DataPath ( он автоматически размещается там же, где и dbf ), если другое имя - то добавляем.


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




Пост N: 780
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.02.08 10:20. Заголовок: Ясно Александр, а ка..


Ясно
Александр, а как насчет создания вычисляемых readonly полей ? CalcFields дали бы существенное сокращение траффика для случая, когда в основной таблице содержится код (например) справочника, и надо выбрать его наименование
Такое есть в sql-запросах, но до них еще далеко. Такие выборки эффективнее, чем relations, так как будет использоваться данные одной, а не 2-х РО, без лишних seek и выборки данных записи
Это были бы ф-ии вида:

AddCalcField(cFieldName, cFieldType, nLen, nDec, cAlias, cKeyExpr, cRelField)
динамически добавляет поле
DelCalcField(cFieldName)
удаляет

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


Пост N: 60
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 05.02.08 10:42. Заголовок: Хм... Виртуальное по..


Хм... Виртуальное поле, вычисляемое на сервере из логически связанных таблиц ? Очень интересная идея. Мне нравится.

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




Пост N: 781
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.02.08 11:19. Заголовок: Ну да Примерно такое..


Ну да
Примерно такое есть в Delphi-TDataset, правда там оно не вычисляется на сервере

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




Пост N: 782
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.02.08 11:36. Заголовок: Я смогу заниматься l..


Я смогу заниматься letodb до конца этой недели. Думаую повылавливать мелкие несовместимости. Затем примерно 2 недели меня не будет, и потом подключусь опять, где-то с конца февраля

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


Пост N: 61
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 05.02.08 12:13. Заголовок: http://www.letodb.or..


http://www.letodb.org/ - Спасибо Патрику ( Patrick Mast )

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


Пост N: 62
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 05.02.08 12:28. Заголовок: Предполагаемые напра..


Предполагаемые направления работы:

1) Тестирование, тестирование, тестирование ...
2) Проверить, что еще осталось не сделанным из базовых функций - и сделать. Первые претенденты - ordListAdd, ordListClear, ordListDelete - после них можно будет сделать поддержку ntx. Ну и relations, конечно.
3) Насколько это возможно и целесообразно, код сервера должен быть переписан на C, особенно вот это :

IF cItem == "skip"
...
ELSEIF cItem == "seek"
...
4) Процессы и, возможно, потоки. Я подумал, что можно было бы реализовать потоки на уровне С - это должно быть не сложным, и тогда можно будет разгрузить основной поток, передав туда, например, посылку ответов.
5) С использованием процессов и потоков - реализация транзакций, stored procedures, ...
6) Ну и расширения разные, типа вот этих виртуальных полей


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


Пост N: 388
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 05.02.08 13:08. Заголовок: Судя по всему автори..


Судя по всему авторизация, и все с ней связанное, в LetoDB не предполагается ?


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


Пост N: 63
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 05.02.08 13:33. Заголовок: Предполагается. В in..


Предполагается. В ini файл на сервере будет включена опция, в зависимости от значения которой сервер будет требовать авторизации или нет.
Я упустил это в своем списке, а, может, и не только это, потому что сейчас этим не озабочен - штука-то довольно простая в реализации

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


Пост N: 389
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 05.02.08 13:45. Заголовок: alkresin пишет: шту..


alkresin пишет:

 цитата:
штука-то довольно простая в реализации



Привилегии пользователей будут, т.е. вот это - администратор, ему можно все, это - простой юзер, ему даже редактировать данные нельзя, только просмотр ?
Если да, то мне кажется об этом заботиться нужно уже сейчас..



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


Пост N: 64
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 05.02.08 15:07. Заголовок: Честно говоря, я не ..


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

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




Пост N: 783
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.02.08 15:08. Заголовок: alkresin пишет: 4) ..


alkresin пишет:

 цитата:
4) Процессы и, возможно, потоки. Я подумал, что можно было бы реализовать потоки на уровне С - это должно быть не сложным, и тогда можно будет разгрузить основной поток, передав туда, например, посылку ответов.



А какими средствами, если не использовать mt xHb ?
Тем более, надо расчитывать и на unix, и на windows - сервер

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


Пост N: 65
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 05.02.08 15:10. Заголовок: Pasha, я скинул на C..


Pasha, я скинул на CVS изменения, чтоб работало со свежим xHarbour, не мог бы проверить ?

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




Пост N: 784
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.02.08 15:12. Заголовок: alkresin пишет: пос..


alkresin пишет:

 цитата:
после них можно будет сделать поддержку ntx.



Отдельные rdd выделять не будем ? Сделать что-то вроде LetoConnection(...), и в качестве параметра - используемый rdd ?

Еще необходимы Request на используемые кодовые страницы, но это еще на этапе сборки сервера

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


Пост N: 66
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 05.02.08 15:16. Заголовок: А какими средствами,..



 цитата:
А какими средствами, если не использовать mt xHb ?
Тем более, надо расчитывать и на unix, и на windows - сервер



Написать.
В xHarbour эти средства большие и сложные, потому что надо было обеспечить корректную работу vm, стека и пр. в условиях mt. Здесь же можно сделать запуск потока только на С уровне, чтобы функция, работающая в этом потоке, не трогала Харборовский стек. Мне кажется, что это не особенно трудоемкое дело.

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




Пост N: 785
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.02.08 15:17. Заголовок: alkresin пишет: Pas..


alkresin пишет:

 цитата:
Pasha, я скинул на CVS изменения, чтоб работало со свежим xHarbour, не мог бы проверить ?



Я с работы на CVS не достучусь. Разве что через browse cvs скачивать Вечером получу только.
Это для текущих сырцов, как я понимаю ?

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