Автор | Сообщение |
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
[только новые]
|
|
alkresin
|
| moderator
|
Пост N: 76
Зарегистрирован: 06.07.06
|
|
Отправлено: 06.02.08 10:34. Заголовок: Выложил на Sourcefor..
Выложил на Sourceforge build2 - поправлены все несовместимости с разными версиями Harbour/xHarbour, поисправлены некоторые ошибки, добавлены некоторые базовые функции.
|
|
|
Петр
|
| постоянный участник
|
Пост N: 394
Зарегистрирован: 09.10.06
|
|
Отправлено: 06.02.08 10:42. Заголовок: Andrey пишет: и сбо..
Andrey пишет: цитата: | и сборка сама для HARBOUR'a |
| Здесь можно поспорить По крайней мере названия библиотек не согласуются с Harbour SVN. Но это же не проблема - поменять название библиотеки, добавить или удалить что-то..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 469
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.02.08 15:20. Заголовок: Andrey пишет: Сам е..
Andrey пишет: цитата: | Сам ехе-ник letodb.exe собрался, а из папки "manager" не собирается, требует библиотеку 'HBCT.LIB' и сборка сама для HARBOUR'a ... |
| Так где ж ее взять ???
|
|
|
alkresin
|
| moderator
|
Пост N: 77
Зарегистрирован: 06.07.06
|
|
Отправлено: 06.02.08 15:26. Заголовок: В xHarbour она назыв..
В xHarbour она называется ct.lib - надо исправить в bld.bat
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 470
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.02.08 16:05. Заголовок: Понял, спасибо ! Тол..
Понял, спасибо ! Только я в Harbour'e не нашел HBCT. Хотя он у меня свежий.
|
|
|
Петр
|
| постоянный участник
|
Пост N: 395
Зарегистрирован: 09.10.06
|
|
Отправлено: 06.02.08 16:09. Заголовок: Andrey, я так думаю,..
Andrey, я так думаю, что тестировать нужно сервер, не manager. Тем более у тебя такие планы были..
|
|
|
Петр
|
| постоянный участник
|
Пост N: 396
Зарегистрирован: 09.10.06
|
|
Отправлено: 06.02.08 16:11. Заголовок: Harbour библиотека H..
Harbour библиотека HBCT находится в contrib.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 471
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.02.08 16:15. Заголовок: alkresin пишет: Log..
alkresin пишет: цитата: | Log = letodb.ini - путь и имя журнала |
| Поправочка ! Строка должна иметь вид: Log = letodb.log
|
|
|
alkresin
|
| moderator
|
Пост N: 78
Зарегистрирован: 06.07.06
|
|
Отправлено: 06.02.08 16:30. Заголовок: Понял, спасибо ! Тол..
цитата: | Понял, спасибо ! Только я в Harbour'e не нашел HBCT. Хотя он у меня свежий. |
| Свежий - это откуда ? C SVN ? Строил из исходников ? Тогда чтоб построить hbct.lib, надо зайти в contrib/hbct и там запустить make_32.bat
|
|
|
gfilatov
|
| модератор
|
Пост N: 704
Зарегистрирован: 25.05.05
|
|
Отправлено: 06.02.08 17:41. Заголовок: Andrey пишет: Так г..
Andrey пишет: Выложил готовую к использованию сборку LetoDB по адресу: http://minigui.mylivepage.ru/file/?fileid=4563 Тестировал в локальном варианте на простом консольном примере: //----------------------------------------------------------------------------// Function Main() REQUEST LETO RDDSETDEFAULT( "LETO" ) USE "//192.168.0.63:2812/data/test" Browse() USE Return nil //----------------------------------------------------------------------------// Программа работает, хотя и тормозит в Browse на Win98 Консольный manager также нормально работает при нажатии 1-2-3
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 472
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.02.08 21:02. Заголовок: Скачал билд2. Собра..
Скачал билд2. Собрал хХарбором letodb.exe и библиотеку. Сделал тестовый пример на Ххарборе, тот что Филатов выше выложил. только пути другие: USE "//127.0.0.1:2812/@/data/test" Запускаю сервер, далее тест получаю: Error LETO/1021 Data type error: -003:21-1001 | Останавливаю все. Беру сборку Филатова, запускаю свой пример на хХарборе, база открывается, броуз показывает. Что делать ??? И по ходу, а где хранится история открытия баз, когда и кем (с какой машины) она была открыта ? И еще у Филатова, сервер нигде не отображается, ни в трее, ни в окне, ни где. Это не есть ХОРОШО !
|
|
|
|
Pasha
|
| Администратор
|
Пост N: 800
Зарегистрирован: 23.05.05
|
|
Отправлено: 06.02.08 22:39. Заголовок: Еще бы сделать, чтоб..
Еще бы сделать, чтобы для seek передавался произвольный ключ. А сейчас, к примеру, ключ, содержащий символ ';', будет обрезан что-то вроде в letoSeek: if( ( bType = leto_ItemType( pKey ) ) != pArea->pTagCurrent->KeyType ) { sprintf( szData,"goto;%d;-3;%s;\r\n", pArea->hTable, (pArea->pTagCurrent)? pArea->pTagCurrent->TagName:"" ); if ( !leto_SendRecv( pArea, szData, 0, 1021 ) ) return FAILURE; } else { USHORT uiTemp; uiKeyLen = letoKeyToStr( pArea, szKey, bType, pKey ); sprintf( szData,"seek;%d;%s;%c%c;", pArea->hTable, (pArea->pTagCurrent)? pArea->pTagCurrent->TagName:"", (bSoftSeek)? 'T':'F', (bFindLast)? 'T':'F' ); uiTemp = strlen(szData); *(USHORT *) (szData + uiTemp) = uiKeyLen; memcpy(szData + uiTemp + 2, szKey, uiKeyLen); memcpy(szData + uiTemp + 2 + uiKeyLen, "\r\n", 2); szData[uiTemp + 4 + uiKeyLen] = '\0'; if ( !leto_SendRecv( pArea, szData, uiTemp + 4 + uiKeyLen, 1021 ) ) return FAILURE; } и в hs_seek IF Empty( nId := Val( GetCmdItem( cCommand,1,@nPos ) ) ) Return "-002" ENDIF IF Empty( cOrder := GetCmdItem( cCommand,nPos+1,@nPos ) ) Return "-002" ENDIF IF Empty( cFlags := GetCmdItem( cCommand,nPos+1,@nPos ) ) Return "-002" ENDIF nKeyLen := Bin2I(Substr( cCommand, nPos+1, 2)) xKey := Substr( cCommand, nPos+3, nKeyLen ) только в этом коде вываливается gpf на *(USHORT *) (szData + uiTemp) = uiKeyLen; не пойму почему
|
|
|
alkresin
|
| moderator
|
Пост N: 79
Зарегистрирован: 06.07.06
|
|
Отправлено: 07.02.08 09:45. Заголовок: Andrey пишет: тольк..
Andrey пишет: цитата: | только пути другие: USE "//127.0.0.1:2812/@/data/test" |
| А что такое /@ ?
|
|
|
alkresin
|
| moderator
|
Пост N: 80
Зарегистрирован: 06.07.06
|
|
Отправлено: 07.02.08 10:02. Заголовок: Pasha пишет: Еще бы..
Pasha пишет: цитата: | Еще бы сделать, чтобы для seek передавался произвольный ключ. А сейчас, к примеру, ключ, содержащий символ ';', будет обрезан |
| Надо. Ключ ведь теоретически и несимвольный может быть, и с 0 - как ты сам писал раньше. Поэтому тут для передачи надо использовать ту же схему, которая используется для передачи записи. Ты, наверное, уже заметил, что посылка ( в обоих направлениях ) сделана в двух форматах: 1) Простая символьная , признак конца - \r\n 2) Та, что может содержать несимвольную информацию - это когда запись передается с сервера или поля для записи в базу на сервер ( в char полях ведь что угодно может быть ) - в этом случае каждое символьное поле предваряется байтами с его длиной и в начале всей посылки стоит информация о ее длине ( \r\n могут ведь и char поле случайно встретиться ) в таком формате: 1 байт - N количество байтов с информацией о длине посылки (до 10) N байт - длина посылки в специальном формате - функция leto_n2b() ( и leto_b2n() - для обратного преобразования ). Я не использую здесь стандартные функции, потому что формат хранения числа на клиенте и на сервере может быть разным, в зависимости от железа/ОС.
|
|
|
Pasha
|
| Администратор
|
Пост N: 801
Зарегистрирован: 23.05.05
|
|
Отправлено: 07.02.08 11:01. Заголовок: Понятно Может, сдела..
Понятно Может, сделать для seek двоичную структуру пакета, когда на сервере процедура обработки seek будет переписана на C ?
|
|
|
alkresin
|
| moderator
|
Пост N: 81
Зарегистрирован: 06.07.06
|
|
Отправлено: 07.02.08 12:15. Заголовок: Да нет, я сегодня сд..
Да нет, я сегодня сделаю, наверное.
|
|
|
Pasha
|
| Администратор
|
Пост N: 803
Зарегистрирован: 23.05.05
|
|
Отправлено: 07.02.08 22:45. Заголовок: Немного поправил исп..
Немного поправил использование каталогов при открытии и создании файлов
|
|
|
Pasha
|
| Администратор
|
Пост N: 804
Зарегистрирован: 23.05.05
|
|
Отправлено: 08.02.08 11:08. Заголовок: У меня есть такая фу..
У меня есть такая функция - реструктуризация таблицы (выполняется, естественно, монопольно) Для ее работы необходимы файловые операции rename/delete Добавляем ? И как быть с безопасность данных ?
|
|
|
Петр
|
| постоянный участник
|
Пост N: 402
Зарегистрирован: 09.10.06
|
|
Отправлено: 08.02.08 12:27. Заголовок: Pasha пишет: Добавл..
Pasha пишет: цитата: | Добавляем ? И как быть с безопасность данных ? |
| Мое мнение, так же как и в случае со stored proc, сначала нужно разобраться с управлением пользователей. Т.е. перед выполнением любого запроса/действия нужно убедиться, уполномочен ли обьект установивший подключение на выполнение таких действий.
|
|
|
Pasha
|
| Администратор
|
Пост N: 806
Зарегистрирован: 23.05.05
|
|
Отправлено: 08.02.08 13:10. Заголовок: Петр пишет: Мое мне..
Петр пишет: цитата: | Мое мнение, так же как и в случае со stored proc, сначала нужно разобраться с управлением пользователей. |
| Есть предложения, как это реализовать ?
|
|
|
Ответов - 325
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
All
[только новые]
|
|