On-line: SergKis, Aleksandr_D, гостей 0. Всего: 2 [подробнее..]
АвторСообщение
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 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]


Wolfv



Пост N: 10
Зарегистрирован: 03.09.09
ссылка на сообщение  Отправлено: 10.03.11 15:46. Заголовок: Спасибо попробую пер..


Спасибо попробую переписать.
Когда писал изначально было под DBFNTX, ну а когда перешел на LETO поленился изменять индексирование.
Ну и база наполняется (и индексы строятся) другим приложением которое стоит на сервере и работает на прямую.


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




Пост N: 1845
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.03.11 16:06. Заголовок: Так letodb можно исп..


Так letodb можно использовать и с dbfntx. тогда и менять ничего не прийдется

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



Пост N: 11
Зарегистрирован: 03.09.09
ссылка на сообщение  Отправлено: 11.03.11 15:00. Заголовок: Переписал создание и..


Переписал создание индексов через tag все заработало нормально.
Спасибо!

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




Пост N: 1704
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.03.11 18:13. Заголовок: Pasha пишет: А заче..


Pasha пишет:

 цитата:
А зачем Вы создаете 3 индексных файла ? Можно ведь обойтись одним с тремя тэгами



А я тоже использую отдельные индексные файлы...
У меня их много. Неужели придется переписывать ВСЕ это ???

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




Пост N: 1847
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.03.11 16:34. Заголовок: Andrey пишет: А я т..


Andrey пишет:

 цитата:
А я тоже использую отдельные индексные файлы...



Это что, для cdx, что ли ? Повторю, для cdx мне и в голову не приходило проверить leto в таком режиме.
cdx - это compound indexes. Какой смысл использовать cdx, если по прежнему механически создавать отдельный файл для каждого индекса ? Это просто непонимание инструмента, который используешь

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



Пост N: 15
Зарегистрирован: 18.02.11
ссылка на сообщение  Отправлено: 07.04.11 22:28. Заголовок: Всем привет. Столкн..


Всем привет.
Столкнулся с пробемой LetoDb: на localhost работает отлично. В локалке или интернет соединении
клиент валится (сервер ломается с crash... файлом или без):
Error LETO/1000 Data type error
LETO_COMMITTRANSACTION(0)
...
TestCdxToLeto.prg
....
cRdd := "LETO"
......
dbUseArea( lNew, cRdd, cFile, cAls, .F. ) // Exclusive
....
lDel := (inp)->( Deleted() )
FOR i := 1 TO k; aVal := (inp)->( FieldGet(aPos) )
NEXT
leto_BeginTransaction()
dbAppend()
FOR i := 1 TO k; FieldPut(aPou, aVal)
NEXT
IF lDel; dbDelete()
ENDIF
leto_CommitTransaction()
(inp)->( dbSkip(1) )
....

LetoDb rev.1.337 от 2011-02-23 18:00
Сборка клиента и сервера на Харбор 2.1.0rc1 для BCC 5.5.1 (от gfilatov2002 )http://minigui.mylivepage.ru/file/?fileid=8540.
В выходной файл может быть записано от 0 до 1000 записей и валится ...
Пробовал Харбор 2.1.0Rc2для BCC 5.5.1 (от gfilatov2002) ... то же самое.
Подскажите в какую сторону смотреть ...







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




Пост N: 1877
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.04.11 07:45. Заголовок: Так падает сервер, а..


Так падает сервер, а на клиенте возникает из-за этого ошибка, насколько я понял ?
Покажите, что в letodb_crash.log

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



Пост N: 16
Зарегистрирован: 18.02.11
ссылка на сообщение  Отправлено: 08.04.11 10:14. Заголовок: Pasha пишет:что в letodb_crash.log


letodb_crash.log:
-------------------
Breakdown at: 2011.04.08 10:04:36
Unrecoverable error 6005: Exception error: %s

Exception Code:C0000005
Exception Address:00431CFF
EAX:00000000 EBX:78000000 ECX:00000018 EDX:001EDC10
ESI:0000000E EDI:001EDD68 EBP:0012FB0C
CS:EIP:001B:00431CFF SS:ESP:0023:0012FAA8
DS:0023 ES:0023 FS:003B GS:0000
Flags:00010206
CS:EIP: 8B 48 04 83 E1 F8 3B 4D FC 74 3A 8B CB C1 E9 1F
SS:ESP: 0012FB68 001EDC1C 00608BD4 00000002 004C0ED8 00000950 00000000 0000000E 00000001 004C0ED0 001EDC10 004C0ED0 0043156F 00000120 00000158 0012FB68

C stack:
EIP: EBP: Frame: OldEBP, RetAddr, Params...
00431CFF 0012FB0C 0012FB18 00432107 001EDC18
00432107 0012FB18 0012FB2C 00498107 001EDC1C 001EDC1C 00608BD4
00498107 0012FB2C 0012FB40 00498056 00608BD4 001E47A4 0012FB94
00498056 0012FB40 0012FB5C 00440FF0 0012FB94 00000000 001E47A4 001E582C 00000000
00440FF0 0012FB5C 0012FB74 0040D330 0012FB94 00000018 00000000 40E1B680
0040D330 0012FB74 6F74004C 20424420 76726553 76207265 392E302E 3B4E3B35 00000000 0000000D 555C3A43 54454843


Modules:
0x00400000 0x000D1000 C:\UCHET\LETO\01\leto2011.exe
0x77680000 0x0013D000 C:\Windows\SYSTEM32\ntdll.dll
0x76050000 0x000D4000 C:\Windows\system32\kernel32.dll
0x75850000 0x0004A000 C:\Windows\system32\KERNELBASE.dll
0x723E0000 0x00007000 C:\Windows\system32\WSOCK32.DLL
0x75D30000 0x00035000 C:\Windows\system32\WS2_32.dll
0x764D0000 0x000AC000 C:\Windows\system32\msvcrt.dll
0x761C0000 0x000A1000 C:\Windows\system32\RPCRT4.dll
0x777E0000 0x00006000 C:\Windows\system32\NSI.dll
0x75AF0000 0x000C9000 C:\Windows\system32\USER32.DLL
0x77860000 0x0004E000 C:\Windows\system32\GDI32.dll
0x77850000 0x0000A000 C:\Windows\system32\LPK.dll
0x76620000 0x0009D000 C:\Windows\system32\USP10.dll
0x75AD0000 0x0001F000 C:\Windows\system32\IMM32.DLL
0x76750000 0x000CC000 C:\Windows\system32\MSCTF.dll
0x75210000 0x0003C000 C:\Windows\system32\mswsock.dll
0x74D60000 0x00005000 C:\Windows\System32\wshtcpip.dll

------------------------------------------------------------------------
User: 212.93.100.167 T43 tst_leto.exe
Command: ta;
Table: \test\u08.dbf

PC двухядерный с Win 7 32 Professional.
У меня был пример netio с hb 2.0.0 он отработал четко


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



Пост N: 17
Зарегистрирован: 18.02.11
ссылка на сообщение  Отправлено: 09.04.11 08:08. Заголовок: Ещё проблема. Крах с..


Ещё проблема.
Крах сервера вызывает обращение к отсутсвующим переменным сервера (что не должно было бы происходить).
Пример: test_var.prg после connect вызов:
lRes := leto_varDel( "main","var_int" )
? "var_int =" ,leto_varGet( "main","var_int" )

letodb_crash.log:
Скрытый текст


На мой взгляд, не хватает:
1. функции типа leto_CreateBase("//127.0.0.1:2812/MyBase/2011/") - создание катлога базы для таблиц
2. функций доступа и установки значения к переменным сервера на стороне сервера для работы с тригерами (HB_FUNC).




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




Пост N: 1878
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.04.11 10:39. Заголовок: leto_varGet пофиксил..


leto_varGet пофиксил
Против функции создания папки и функций для доступа к переменным на сервере возоржений нет, могу их сделать
С транзакциями пока непонятно. Локальный и удаленный сервер работает совершенно одинаково, и если валится второй, то должен падать и первый. Надо разбираться. Может выложите файлик, на котором сервер спотыкается ?

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



Пост N: 18
Зарегистрирован: 18.02.11
ссылка на сообщение  Отправлено: 09.04.11 17:05. Заголовок: Pasha пишет:выложите файлик...

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



Пост N: 19
Зарегистрирован: 18.02.11
ссылка на сообщение  Отправлено: 09.04.11 19:18. Заголовок: Для Pasha


Попобовал такой пример:
Скрытый текст


Сервер ломается причем без letodb_crash.log с MsgStop("Abnormal ... canceled ....") в разных местах:
1. запуск первый. на клиенте error :
---------- 09.04.2011 18:54:57 Harbour 2.1.0rc1 (Rev. 16300) ------------
Program : C:\BK8\LETO\KLIENT\INF\tst_leto.exe 09.04.2011 18:47:32, 1140.224Kb
Memory : 0Kb (Win32) CPU - x86, Windows XP 5.1.2600 Service Pack 2
DiskSpace: 23924Mb
Error LETO/1000 Data type error
= DBCREATE(0)
...
2. запуск второй. на клиенте error :
---------- 09.04.2011 19:00:43 Harbour 2.1.0rc1 (Rev. 16300) ------------
Program : C:\BK8\LETO\KLIENT\INF\tst_leto.exe 09.04.2011 18:47:32, 1140.224Kb
Memory : 0Kb (Win32) CPU - x86, Windows XP 5.1.2600 Service Pack 2
DiskSpace: 23923Mb
Error LETO/1000 Data type error
= DBCOMMIT(0)
....
в выходном файле на сервере (u08.dbf) 243 записи.

В localhost все работает ok! Есть у меня файл на 100000 записей, он тоже ok!.



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




Пост N: 1879
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.04.11 21:23. Заголовок: Насколько я понял, р..


Насколько я понял, речь идет о двух разных ошибках.
1. Ошибка dbCreate
На массив со структурой грешить нечего, так что речь идет о строке-имени файла с параметрами коннекта.
Покажите, как Вы создаете файл, то есть первый параметр dbCreate.
Эта ошибка клиента, или на ней падает сервер ? Если ошибка клиента, тогда должна быть запись в letodb.log на сервере. Там что-то есть ?
Если падает сервер, то этого просто не может быть.
Ошибка возникает всегда, или эпизодически ?

2. Как видно, это простое копирование одного файла во второй в цикле по всем записям. Так ошибка возникает и с использованием транзакций, и без транзакций, и простым dbCommit() ?
Причем падает именно сервер ?
У меня такие операции работают на сотнях тысячах - миллионах записей, dbCommit, без транзакций.
Причем исключительно в локалке. Правда, сервер собран под xHarbour.
Со сборкой сервера в zip-архиве я смогу проверить только на следующей неделе, дома у меня локалки нет.

По поводу файловых операций. Leto_file и еще пару функций - переименование и удаление таблиц - сделал я, 3 года назад. Причем сделал неправильно: надо было делать их тогда средствами rdd:
letoDrop, letoExists, letoRename. Но тогда эти операции rdd я не знал (не попалась на глаза эта специфика харбора), и у меня сработал клипперовский стереотип, я сделал их по аналогии с известными функциями.
Что сделано - то сделано, и большой крамолы в этом нет.
Тогда у нас было обсуждение, как при этом обеспечить безопасность сервера. Сошлись на флаге EnableFileFunc, который на сервере устанавливает админ, и на работе файловых функций только в папке, где находится БД.
В свете этого я не вижу никаких возражений против создания каталога, если у пользователя есть соответствующие права. Если можно создать таблицу БД, то почему нельзя создать каталог ?
Поскольку в rdd нет операции создания каталога, то надо ее делать отдельной функцией


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




Пост N: 1880
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.04.11 10:36. Заголовок: Добавил функции ..


Добавил функции

LETO_VARSET( nUserStru, cGroupName, cVarName, xValue[, nFlags )
--> lSuccess
LETO_VARGET( nUserStru, cGroupName, cVarName ) --> xValue
LETO_VARINCR( nUserStru, cGroupName, cVarName ) --> nValue
LETO_VARDECR( nUserStru, cGroupName, cVarName ) --> nValue
LETO_VARDEL( nUserStru, cGroupName, cVarName )

на сервере


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



Пост N: 20
Зарегистрирован: 18.02.11
ссылка на сообщение  Отправлено: 10.04.11 12:24. Заголовок: Для Pasha


1.Первый параметр dbCreate://80.232.248.196:2120/test/u08
но дело где то не в этом, то что я описал про запуски это действительно было два запуска в такой последовательности,
т.е. ошибка плавает, раньше у меня было и на dbUseArea(0) (log file на сохранил). Сейчас запускал - переписалось 281 запись
в файл на сервере и снятие опять на dbCommit(0).
letodb.log имеет вид:
Скрытый текст

Сообщение: Abnormal canceled ... - это сообщение аналога letotray на AutuIt3 (ловит появление окна с сообщением,
убирает его и перезапускает server letodb)
Локалки и у меня дома нет вся работа через мобильный интернет 3G (сейчас я на даче).

2.Спасибо БОЛЬШОЕ за функции и обьяснения по истории файловых операций в letodb.

3. Кто вперед падает сервер или клиент - наверно клиент, не получив или получив от сервера что-то с ошибкой и не повторив
получение или передачу ..., но точно сказать не могу не знаю. Подскажите что попробовать, попробую.
Зашлите со своего клиента по указанному адресу файл (желательно имя файла другое для отличия),



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




Пост N: 1881
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.04.11 14:15. Заголовок: Запустил тест на коп..


Запустил тест на копирование полмиллиона записей, пока скопировалась 1000 записей, процесс идет, посмотрим, дойдет ли до конца
Кстати, Вы можете запустить свой тест на моем сервере, adsl Укртелеком
Сейчас строка коннекта: //95.135.104.42:2812/test
LetoDb запущен
Я могу попробовать у себя и 3g-соединение, но это не сегодня. Возможно, проблема в нестабильности 3g-соединения, но это пока только предположение


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




Пост N: 1882
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.04.11 14:33. Заголовок: Обрыв на 2119 записе..


Обрыв на 2119 записей. Падал ли сервер ? Я вижу, что коннект с ним сейчас есть, но может быть его поднял letotray ?
Сейчас коннект с сервером есть, но таблицу я открыть не могу

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




Пост N: 1883
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.04.11 14:41. Заголовок: Вроде бы Ваш сервер ..


Вроде бы Ваш сервер не падал, в параметрах соединения - запущен 1 час с минутами назад. Но сейчас с ним коннекта уже нет

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



Пост N: 21
Зарегистрирован: 18.02.11
ссылка на сообщение  Отправлено: 10.04.11 15:04. Заголовок: Для Pasha


Сервер упал, причем завис с ~ 25% занятости процессора и занятым testU08.dbf, снял процесс и перезапустился сервер.
letodb.log:
Скрытый текст


letodb_crash.log:
Скрытый текст



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




Пост N: 1884
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.04.11 15:17. Заголовок: Ясно, что ничего не ..


Ясно, что ничего не ясно. Что такое ошибка 6005 - такого кода в харборе нет.
Пока подозрения или на особенности сборки с текущей версией харбора, или неправильной обработки ошибок в сети в letodb
Я поиграюсь у себя с удаленным соединением. но это будет на неделе
Ну а мой сервер видно ? manage.exe с ним коннектится ? Можете запустить свой тест ?

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