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 [только новые]


alkresin
moderator


Пост N: 76
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 06.02.08 10:34. Заголовок: Выложил на Sourcefor..


Выложил на Sourceforge build2 - поправлены все несовместимости с разными версиями Harbour/xHarbour, поисправлены некоторые ошибки, добавлены некоторые базовые функции.

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


Пост N: 394
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 06.02.08 10:42. Заголовок: Andrey пишет: и сбо..


Andrey пишет:

 цитата:
и сборка сама для HARBOUR'a


Здесь можно поспорить
По крайней мере названия библиотек не согласуются с Harbour SVN.

Но это же не проблема - поменять название библиотеки, добавить или удалить что-то..



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




Пост N: 469
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.02.08 15:20. Заголовок: Andrey пишет: Сам е..


Andrey пишет:

 цитата:
Сам ехе-ник letodb.exe собрался, а из папки "manager" не собирается, требует библиотеку 'HBCT.LIB'
и сборка сама для HARBOUR'a ...


Так где ж ее взять ???

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


Пост N: 77
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 06.02.08 15:26. Заголовок: В xHarbour она назыв..


В xHarbour она называется ct.lib - надо исправить в bld.bat

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




Пост N: 470
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.02.08 16:05. Заголовок: Понял, спасибо ! Тол..


Понял, спасибо ! Только я в Harbour'e не нашел HBCT. Хотя он у меня свежий.

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


Пост N: 395
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 06.02.08 16:09. Заголовок: Andrey, я так думаю,..


Andrey, я так думаю, что тестировать нужно сервер, не manager. Тем более у тебя такие планы были..


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


Пост N: 396
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 06.02.08 16:11. Заголовок: Harbour библиотека H..


Harbour библиотека HBCT находится в contrib.

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




Пост N: 471
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.02.08 16:15. Заголовок: alkresin пишет: Log..


alkresin пишет:

 цитата:
Log = letodb.ini - путь и имя журнала



Поправочка ! Строка должна иметь вид:
Log = letodb.log


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


Пост N: 78
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 06.02.08 16:30. Заголовок: Понял, спасибо ! Тол..



 цитата:
Понял, спасибо ! Только я в Harbour'e не нашел HBCT. Хотя он у меня свежий.


Свежий - это откуда ? C SVN ? Строил из исходников ? Тогда чтоб построить hbct.lib, надо зайти в contrib/hbct и там запустить make_32.bat

Спасибо: 0 
Профиль
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

Спасибо: 0 
Профиль
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 |

Останавливаю все. Беру сборку Филатова, запускаю свой пример на хХарборе, база открывается, броуз показывает.
Что делать ???

И по ходу, а где хранится история открытия баз, когда и кем (с какой машины) она была открыта ?
И еще у Филатова, сервер нигде не отображается, ни в трее, ни в окне, ни где. Это не есть ХОРОШО !

Спасибо: 0 
Профиль
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;
не пойму почему


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


Пост N: 79
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 07.02.08 09:45. Заголовок: Andrey пишет: тольк..


Andrey пишет:

 цитата:
только пути другие: USE "//127.0.0.1:2812/@/data/test"



А что такое /@ ?

Спасибо: 0 
Профиль
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() - для обратного преобразования ). Я не использую здесь стандартные функции, потому что формат хранения числа на клиенте и на сервере может быть разным, в зависимости от железа/ОС.


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




Пост N: 801
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.02.08 11:01. Заголовок: Понятно Может, сдела..


Понятно
Может, сделать для seek двоичную структуру пакета, когда на сервере процедура обработки seek будет переписана на C ?

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


Пост N: 81
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 07.02.08 12:15. Заголовок: Да нет, я сегодня сд..


Да нет, я сегодня сделаю, наверное.

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




Пост N: 803
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.02.08 22:45. Заголовок: Немного поправил исп..


Немного поправил использование каталогов при открытии и создании файлов

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




Пост N: 804
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.02.08 11:08. Заголовок: У меня есть такая фу..


У меня есть такая функция - реструктуризация таблицы (выполняется, естественно, монопольно)
Для ее работы необходимы файловые операции rename/delete
Добавляем ? И как быть с безопасность данных ?

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


Пост N: 402
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 08.02.08 12:27. Заголовок: Pasha пишет: Добавл..


Pasha пишет:

 цитата:
Добавляем ? И как быть с безопасность данных ?



Мое мнение,
так же как и в случае со stored proc, сначала нужно разобраться с управлением пользователей.
Т.е. перед выполнением любого запроса/действия нужно убедиться, уполномочен ли обьект установивший подключение на выполнение таких действий.



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




Пост N: 806
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.02.08 13:10. Заголовок: Петр пишет: Мое мне..


Петр пишет:

 цитата:
Мое мнение,
так же как и в случае со stored proc, сначала нужно разобраться с управлением пользователей.



Есть предложения, как это реализовать ?

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