Автор | Сообщение |
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 на Харборе, ... и вообще все в наших руках :). Кто хочет участвовать в разработке, тестировании - пишите.
|
|
|
Ответов - 316
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|
alkresin
|
| moderator
|
Пост N: 275
Зарегистрирован: 06.07.06
|
|
Отправлено: 21.05.10 13:40. Заголовок: alx_on пишет: Т.е. ..
alx_on пишет: цитата: | Т.е. переставить местами SELF_SYNCCHILDREN и SELF_SKIPFILTER, то все работает Вопрос к alkresin: я правильно понял проблему или это просто так повезло в моем случае? |
| Думаю, что просто повезло. Чтобы решить проблему, надо во всех операциях перемещения вставить строку pArea->lpdbPendingRel = NULL; Дело в том, что когда в родительской области происходит перемещение этот элемент структуры child area устанавливается ( см. letoChildSync ) и когда мы читаем запись из child area, то при установленном pArea->lpdbPendingRel происходит перемещение в child области.
|
|
|
alx_on
|
| постоянный участник
|
Пост N: 34
Зарегистрирован: 07.07.09
|
|
Отправлено: 21.05.10 14:15. Заголовок: alkresin Примерно ..
alkresin Примерно так? Скрытый текст static ERRCODE letoGoTop( LETOAREAP pArea ) { char sData[32], * ptr; HB_TRACE(HB_TR_DEBUG, ("letoGoTop(%p)", pArea)); if( pArea->uiUpdated ) leto_PutRec( pArea ); sprintf( sData,"goto;%lu;-1;%s;%c;\r\n", pArea->hTable, (pArea->pTagCurrent)? pArea->pTagCurrent->TagName:"", (char)( (hb_setGetDeleted())? 0x41 : 0x40 ) ); if ( !leto_SendRecv( pArea, sData, 0, 1021 ) ) return FAILURE; ptr = leto_firstchar(); leto_ParseRec( pArea, ptr ); pArea->ptrBuf = NULL; SELF_SKIPFILTER( ( AREAP ) pArea, 1 ); if( pArea->area.lpdbRelations ) { if( SELF_SYNCCHILDREN( ( AREAP ) pArea ) != SUCCESS ) return FAILURE; } pArea->lpdbPendingRel = NULL; return SUCCESS; }
| PS Вставлять вообще ВЕЗДЕ или только после SELF_SYNCCHILDREN? PPS Сама функция letoChildSync() не сбрасывает lpdbPendingRel. Ее тоже необходимо поправить? PPPS Для текущей версии harbour вместо HB_LONG используется HB_MAXINT. У себя я поправил (иначе падало. Например в UpdateRec обработка числовых полей HB_FT_LONG и HB_FT_FLOAT)
|
|
|
alkresin
|
| moderator
|
Пост N: 276
Зарегистрирован: 06.07.06
|
|
Отправлено: 21.05.10 14:57. Заголовок: Примерно так? Лучш..
Лучше поставить в начале функции. цитата: | PS Вставлять вообще ВЕЗДЕ или только после SELF_SYNCCHILDREN? |
| Во всех функциях перемещения. SELF_SYNCCHILDREN тут ни при чем, так как она вызывается для синхронизации детей текущей area. цитата: | PPS Сама функция letoChildSync() не сбрасывает lpdbPendingRel. Ее тоже необходимо поправить? |
| Нет, letoChildSync() устанавливает lpdbRelations для себя, ее трогать не надо. Эта штука (lpdbRelations) обнуляется для того, чтобы area, где она установлена родителем, не перемещала текущую запись в соответствии с положением родителя.
|
|
|
alkresin
|
| moderator
|
Пост N: 277
Зарегистрирован: 06.07.06
|
|
Отправлено: 25.05.10 10:44. Заголовок: alkresin пишет: Что..
alkresin пишет: цитата: | Чтобы решить проблему, надо во всех операциях перемещения вставить строку pArea->lpdbPendingRel = NULL; |
| Выложил сегодня эти изменения на CVS
|
|
|
alx_on
|
| постоянный участник
|
Пост N: 35
Зарегистрирован: 07.07.09
|
|
Отправлено: 25.05.10 18:25. Заголовок: alkresin Выложил св..
alkresin Выложил свои изменения (в продолжение темы relations). 1. DBSKIP(0) ничего не делал (в принципе, нормально для родителя, но дитя должно перемещаться). 2. DbAppend() не синхронизировал записи 3. RECNO() возвращал значение до синхронизации с родителем (также блокировка) Поправлена установка фильтра с национальными символами Изменил HB_LONG на HB_MAXINT (вопрос: на xHarbour это компиляется?)
|
|
|
alkresin
|
| moderator
|
Пост N: 279
Зарегистрирован: 06.07.06
|
|
Отправлено: 25.05.10 21:10. Заголовок: alx_on пишет: Измен..
alx_on пишет: цитата: | Изменил HB_LONG на HB_MAXINT (вопрос: на xHarbour это компиляется?) |
| Не знаю, как на xHarbour, а на той версии Harbour, которой я пользуюсь, HB_MAXINT не определен ...
|
|
|
alkresin
|
| moderator
|
Пост N: 280
Зарегистрирован: 06.07.06
|
|
Отправлено: 25.05.10 21:29. Заголовок: Проверил xHarbour - ..
Проверил xHarbour - там тоже HB_MAXINT не определен.
|
|
|
alx_on
|
| постоянный участник
|
Пост N: 36
Зарегистрирован: 07.07.09
|
|
Отправлено: 25.05.10 21:40. Заголовок: alkresin пишет: Не ..
alkresin пишет: цитата: | Не знаю, как на xHarbour, а на той версии Harbour, которой я пользуюсь, HB_MAXINT не определен ... |
| я пользуюсь с SVN 2 варианта либо нет HB_MAXINT под определенную платформу (так уже было) либо придется проверять версию (начиная с какой?) под xHarbour могу поправить (только проверить не смогу) PS кстати, я запускаю letodb под MacOSX (10.6) - все работает
|
|
|
alkresin
|
| moderator
|
Пост N: 281
Зарегистрирован: 06.07.06
|
|
Отправлено: 26.05.10 08:02. Заголовок: alx_on пишет: я пол..
alx_on пишет: А я пользуюсь "Changelog 2008-09-17 18:04" :) и в ближайшее время переходить на более новую не планирую. Давайте вернем это дело назад. Думаю, я не один такой, кто еще не перешел на Harbour-2.
|
|
|
alx_on
|
| постоянный участник
|
Пост N: 37
Зарегистрирован: 07.07.09
|
|
Отправлено: 26.05.10 08:31. Заголовок: alkresin пишет: Дав..
alkresin пишет: цитата: | Давайте вернем это дело назад |
| Может, конечно, это совпадение, но у меня с HB_LONG падает Обрамим проверками на Harbour-2 По типу: #if defined (__XHARBOUR__) || !defined(__HARBOUR__) || ( (__HARBOUR__ - 0) < 0x020000 ) HB_LONG lVal #else HB_MAXINT lVal #endif или так (в самом начале): #if !defined (HB_MAXINT) #define HB_MAXINT HB_LONG #endif В течение часа выложу
|
|
|
alkresin
|
| moderator
|
Пост N: 282
Зарегистрирован: 06.07.06
|
|
Отправлено: 26.05.10 09:00. Заголовок: alx_on пишет: #if !..
alx_on пишет: цитата: | #if !defined (HB_MAXINT) #define HB_MAXINT HB_LONG #endif |
| Так не получится, потому что HB_MAXINT определен через typedef и defined (HB_MAXINT) всегда будет false.
|
|
|
|
alx_on
|
| постоянный участник
|
Пост N: 38
Зарегистрирован: 07.07.09
|
|
Отправлено: 26.05.10 09:03. Заголовок: alkresin пишет: Так..
alkresin пишет: да, я уже заметил :) значит первый вариант
|
|
|
alx_on
|
| постоянный участник
|
Пост N: 39
Зарегистрирован: 07.07.09
|
|
Отправлено: 26.05.10 09:28. Заголовок: alkresin выложил..
alkresin выложил
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 1310
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.05.10 12:41. Заголовок: alx_on пишет: PS кс..
alx_on пишет: цитата: | PS кстати, я запускаю letodb под MacOSX (10.6) - все работает |
| Круто ! Это просто фантастика ! Харбор на маке... А программа тоже под MacOSX работает ?
|
|
|
alx_on
|
| постоянный участник
|
Пост N: 40
Зарегистрирован: 07.07.09
|
|
Отправлено: 26.05.10 13:56. Заголовок: Andrey пишет: А про..
Andrey пишет: цитата: | А программа тоже под MacOSX работает ? |
| Да
|
|
|
alx_on
|
| постоянный участник
|
Пост N: 41
Зарегистрирован: 07.07.09
|
|
Отправлено: 27.05.10 13:28. Заголовок: alkresin выложил но..
alkresin выложил новые изменения... PS вопрос: в связи с чем индексы каждый раз переоткрываются для уже открытой базы (hs_openindex)? Можно ли это оптимизировать?
|
|
|
alkresin
|
| moderator
|
Пост N: 283
Зарегистрирован: 06.07.06
|
|
Отправлено: 27.05.10 21:00. Заголовок: alx_on пишет: PS во..
alx_on пишет: цитата: | PS вопрос: в связи с чем индексы каждый раз переоткрываются для уже открытой базы (hs_openindex)? |
| Хм... Я этого не замечал, наверное потому что дополнительные ( не compound ) индексы использую только как временные, для одного сеанса работы и не разделяю их с другими экземплярами программы. Надо как-то исправить, конечно.
|
|
|
Pasha
|
| Администратор
|
Пост N: 1460
Зарегистрирован: 23.05.05
|
|
Отправлено: 27.05.10 21:31. Заголовок: Перевел документацию..
Перевел документацию на русский язык См. readme_rus.txt
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 1316
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.05.10 22:29. Заголовок: Pasha пишет: Переве..
Pasha пишет: цитата: | Перевел документацию на русский язык |
| Спасибо Паша !
|
|
|
leo
|
| постоянный участник
|
Пост N: 29
Зарегистрирован: 13.09.07
|
|
Отправлено: 27.05.10 22:39. Заголовок: Реальные проекты с Leto DB Server
Использует ли кто-то в реальных проектах Leto DB Server? Насколько надежно он ведет себя в работе? Стоит ли на него переходить?
|
|
|
Ответов - 316
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|