Автор | Сообщение |
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 на Харборе, ... и вообще все в наших руках :). Кто хочет участвовать в разработке, тестировании - пишите.
|
|
|
Ответов - 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 ошибками не даю, попытаюсь разобраться сам
|
|
|
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 открывают ( у меня больше не бывает обычно ).
|
|
|
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()
|
|
|
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 )
|
|
|
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 ), если другое имя - то добавляем.
|
|
|
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) удаляет
|
|
|
alkresin
|
| moderator
|
Пост N: 60
Зарегистрирован: 06.07.06
|
|
Отправлено: 05.02.08 10:42. Заголовок: Хм... Виртуальное по..
Хм... Виртуальное поле, вычисляемое на сервере из логически связанных таблиц ? Очень интересная идея. Мне нравится.
|
|
|
Pasha
|
| Администратор
|
Пост N: 781
Зарегистрирован: 23.05.05
|
|
Отправлено: 05.02.08 11:19. Заголовок: Ну да Примерно такое..
Ну да Примерно такое есть в Delphi-TDataset, правда там оно не вычисляется на сервере
|
|
|
Pasha
|
| Администратор
|
Пост N: 782
Зарегистрирован: 23.05.05
|
|
Отправлено: 05.02.08 11:36. Заголовок: Я смогу заниматься l..
Я смогу заниматься letodb до конца этой недели. Думаую повылавливать мелкие несовместимости. Затем примерно 2 недели меня не будет, и потом подключусь опять, где-то с конца февраля
|
|
|
alkresin
|
| moderator
|
Пост N: 61
Зарегистрирован: 06.07.06
|
|
Отправлено: 05.02.08 12:13. Заголовок: http://www.letodb.or..
|
|
|
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) Ну и расширения разные, типа вот этих виртуальных полей
|
|
|
|
Петр
|
| постоянный участник
|
Пост N: 388
Зарегистрирован: 09.10.06
|
|
Отправлено: 05.02.08 13:08. Заголовок: Судя по всему автори..
Судя по всему авторизация, и все с ней связанное, в LetoDB не предполагается ?
|
|
|
alkresin
|
| moderator
|
Пост N: 63
Зарегистрирован: 06.07.06
|
|
Отправлено: 05.02.08 13:33. Заголовок: Предполагается. В in..
Предполагается. В ini файл на сервере будет включена опция, в зависимости от значения которой сервер будет требовать авторизации или нет. Я упустил это в своем списке, а, может, и не только это, потому что сейчас этим не озабочен - штука-то довольно простая в реализации
|
|
|
Петр
|
| постоянный участник
|
Пост N: 389
Зарегистрирован: 09.10.06
|
|
Отправлено: 05.02.08 13:45. Заголовок: alkresin пишет: шту..
alkresin пишет: цитата: | штука-то довольно простая в реализации |
| Привилегии пользователей будут, т.е. вот это - администратор, ему можно все, это - простой юзер, ему даже редактировать данные нельзя, только просмотр ? Если да, то мне кажется об этом заботиться нужно уже сейчас..
|
|
|
alkresin
|
| moderator
|
Пост N: 64
Зарегистрирован: 06.07.06
|
|
Отправлено: 05.02.08 15:07. Заголовок: Честно говоря, я не ..
Честно говоря, я не думал о конкретной реализации, просто была в голове мысль, что надо такое сделать.
|
|
|
Pasha
|
| Администратор
|
Пост N: 783
Зарегистрирован: 23.05.05
|
|
Отправлено: 05.02.08 15:08. Заголовок: alkresin пишет: 4) ..
alkresin пишет: цитата: | 4) Процессы и, возможно, потоки. Я подумал, что можно было бы реализовать потоки на уровне С - это должно быть не сложным, и тогда можно будет разгрузить основной поток, передав туда, например, посылку ответов. |
| А какими средствами, если не использовать mt xHb ? Тем более, надо расчитывать и на unix, и на windows - сервер
|
|
|
alkresin
|
| moderator
|
Пост N: 65
Зарегистрирован: 06.07.06
|
|
Отправлено: 05.02.08 15:10. Заголовок: Pasha, я скинул на C..
Pasha, я скинул на CVS изменения, чтоб работало со свежим xHarbour, не мог бы проверить ?
|
|
|
Pasha
|
| Администратор
|
Пост N: 784
Зарегистрирован: 23.05.05
|
|
Отправлено: 05.02.08 15:12. Заголовок: alkresin пишет: пос..
alkresin пишет: цитата: | после них можно будет сделать поддержку ntx. |
| Отдельные rdd выделять не будем ? Сделать что-то вроде LetoConnection(...), и в качестве параметра - используемый rdd ? Еще необходимы Request на используемые кодовые страницы, но это еще на этапе сборки сервера
|
|
|
alkresin
|
| moderator
|
Пост N: 66
Зарегистрирован: 06.07.06
|
|
Отправлено: 05.02.08 15:16. Заголовок: А какими средствами,..
цитата: | А какими средствами, если не использовать mt xHb ? Тем более, надо расчитывать и на unix, и на windows - сервер |
| Написать. В xHarbour эти средства большие и сложные, потому что надо было обеспечить корректную работу vm, стека и пр. в условиях mt. Здесь же можно сделать запуск потока только на С уровне, чтобы функция, работающая в этом потоке, не трогала Харборовский стек. Мне кажется, что это не особенно трудоемкое дело.
|
|
|
Pasha
|
| Администратор
|
Пост N: 785
Зарегистрирован: 23.05.05
|
|
Отправлено: 05.02.08 15:17. Заголовок: alkresin пишет: Pas..
alkresin пишет: цитата: | Pasha, я скинул на CVS изменения, чтоб работало со свежим xHarbour, не мог бы проверить ? |
| Я с работы на CVS не достучусь. Разве что через browse cvs скачивать Вечером получу только. Это для текущих сырцов, как я понимаю ?
|
|
|
Ответов - 325
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
All
[только новые]
|
|