Форум » LetoDB, HbNetio. » Leto DB Server (продолжение 8) » Ответить

Leto DB Server (продолжение 8)

Pasha: Немного доработал документацию к letodb

Ответов - 273, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 All

SergKis: Паша, в версии Changelog,v 1.350 2011/04/21 18:00:52 есть LETO_SETSKIPBUFFER( nSkip ), но в readme нет как использовать, что дает nSkip ? Если можно разъясните.

Pasha: В текущем readme есть описание: Skip-буфер предназначен для оптимизации множественных вызовов skip Эта функция задает размер в записях для skip-буфера для текущей рабочей области. По умолчанию размер skip-буфера 10 записей. Skip-буфер является двунаправленным. skip-буфер сбрасывается после BUFF_REFRESH_TIME (1 сек) Если параметр функции опущен, она возвращает статистику использования буфера (количество попаданий) Проще говоря, при выполнении команд skip(1), skip(-1) сервер передает клиенту не одну запись, а nSkip записей, и при последующих вызовах skip обращения к серверу не будет, клиент возьмет запись из буфера.

SergKis: Pasha пишет:Skip-буфер предназначен ... СПАСИБО за разъяснение. Pasha пишет:В текущем readme есть описание У меня версия: readme_rus.txt,v 1.12.2.16 2012/02/23 15:38:35. В ней только: LETO_SETSKIPBUFFER( nSkip ) --> nCount (статистика использования буфера) LETO_SETSEEKBUFFER( nRecsInBuf ) --> nCount (статистика использования буфера) Буду обновляться.


Dima: SergKis пишет: readme_rus.txt,v 1.12.2.16 2012/02/23 15:38:35 последняя вроде такая /* $Id: readme_rus.txt,v 1.12.2.29 2013/03/02 18:45:45 ptsarenko Exp $ */

Dima: Pasha А если в Leto юзать RDD DBFSIX или BMDBFCDX , Leto будет так же эффективно работать как и с DBFCDX ?

Pasha: В харборе функциональность six в основном включена в DBFCDX, так что она и сейчас в основном доступна через вызовы dbInfo и dbOrderInfo "В основном" я говорю потому, что не все команды DBI_* и DBOI_* реализованы в rdd leto. Каких не хватает - надо смотреть. А насчет BMDBFCDX - можно было бы сделать возможность сборки сервера letodb, в котором в качестве стандартных rdd вместо DBFCDX/DBFNTX использовались бы BMDBFCDX/BMDBFNTX, тем более они их наследники. Еще конечно нужно реализовать семейство функций BM_*, причем и на клиенте, и на сервере. Сделать это лучше через вызовы UDF-функций, чтобы не перегружать существующий низкоуровневый протокол передачи между клиентом и сервером. Думаю, как это лучше прикрутить.

Dima: В большей степени конечно интересен BMDBFCDX/BMDBFNTX , про SIX это я так просто спросил "паровозиком".

Dima: Как можно объяснить медленный SKIP по базе (чем то похож на медленный Skip в ADS) ? Для примера взял базу 700000 записей DBFCDX Скипал всю базу Время 0.23 сек Leto (локально 127.0.0.1) на том же тесте 75 секунд Соответственно если юзать бровс то с Leto заметны задержки Dima пишет: Соответственно если юзать бровс то с Leto заметны задержки Упс. LETO_SETSKIPBUFFER в какой то мере решает эту проблему.

Pasha: Еще tbrowse любит все время опрашивать RecCount(), на каждой записи, а это дополнительные обращения к серверу, причем много. Для буферизации этих вызовов надо после коннекта к серверу задать настройку: RddInfo( RDDI_REFRESHCOUNT, .F.,, 1 ) В ads тоже есть подобная настройка.

Dima: Pasha пишет: RddInfo( RDDI_REFRESHCOUNT, .F.,, 1 ) Помогло , спасибо !

Dima: Pasha пишет: В ads тоже есть подобная настройка В Harbour ? Не нашел. А в Clipper есть ?

Pasha: Она есть в самом Ads. Год назад я ее добавил для xHarbour: 2012-03-19 18:55 UTC+0200 Pavel Tsarenko (tpe2/at/mail.ru) * contrib/rdd_ads/ads.ch * contrib/rdd_ads/ads1.c * contrib/rdd_ads/rddads.h * added new flag for RddInfo: RDDI_REFRESHCOUNT. By default, this flag is set to true. This flag is used for management of ADS_REFRESHCOUNT flag in adsRecCount function. в Harbour ее действительно не перетянули. Для клиппера даже не знаю, как она используется, если используется вообще. Клиент то совсем другой, старый, закрытый.

Dima: Проверил работу Leto через инет. Leto База в одном городе , Leto клиент в другом. Относительно не плохо работает. В частности проверил удаленно BM фильтра , ставятся моментально. Установки на клиенте RddInfo( 101, .F.,, 1 ) LETO_SETSKIPBUFFER(10000) Бровс конечно подтормаживает. Будут какие то рекомендации ? ЗЫ Если LetoDB.ini нет в папке откуда стартовал LetoDB Server , разве LetoDB Server не должен сам его создать с установками по умолчанию ?

Pasha: Dima пишет: LETO_SETSKIPBUFFER(10000) Бровс конечно подтормаживает. Будут какие то рекомендации ? Не надо 10000 задавать. За раз передается 10000 записей, а это много, пакет большой. Да и не надо столько, ведь время актуальности буфера 1 секунда. Достаточно задать размер, равный к-ву строк в бровсе, ну или maxrow() Дополню. Это для ЛВС для времени актуальности буфера 1 сек достаточно. Для медленного соединения лучше задать побольше. Это или глобальная установка: 5-й параметр функции leto_Connect, или для конкретной рабочей области задается вызовом dbInfo( DBI_BUFREFRESHTIME[, nNewVal]) Значение задается в 0.01 сек. ЗЫ Если LetoDB.ini нет в папке откуда стартовал LetoDB Server , разве LetoDB Server не должен сам его создать с установками по умолчанию ? Файл ini не создается, просто задаются установки по умолчанию. Но ini файл нужен хотя бы для указания DataPath Мой стандартный letodb.ini: DataPath = <path> EnableFileFunc = 1 EnableAnyExt = 1 Optimize = 1 AutOrder = 1

Dima: Лето собран как сервис. Периодически падает прога на строке LETO_CONNECT("//127.0.0.1:2812/") В логе [pre2] DEBUG! new connect 127.0.0.1 (0 : 1 : 1) leto_errInternal!!!!!!!!!!!!!!!!!! [/pre2] А винда пишет [pre2] szAppName : letodb.exe szAppVer : 0.0.0.0 szModName : letodb.exe szModVer : 0.0.0.0 offset : 000b23dc [/pre2] После этого сервис лето падает. Как я это получил ? Остановил и удалил сервис Затем Letodb install , net start "LetoDB Service" Запустил свой примерчик пару тройку раз (все норм но только порой долго думает прога на строке LETO_CONNECT) и на 4 раз вот такое вылазит . PS еще наблюдение. если пересобрать клиентское приложение то в 30% после первого запуска LETO_CONNECT выдаст -1 Dima пишет: PS еще наблюдение. если пересобрать клиентское приложение то в 30% после первого запуска LETO_CONNECT выдаст -1 PS1 Интенсивно мучаю Leto уже 30 минут и такого больше не повторяется.....странно

Dima: А как быть с копированием файлов на Leto Server ? cserv:="//127.0.0.1:2812/" copy file test.txt to (cserv+"test1.txt") Получаю Dos error 1231 Среди лето функций что типа leto_copyfile в описании не увидел. Вполне устроила бы функция позволяющая копировать файлы "внутри" сервера , что то типа Leto_filecopy(cserv+"test.txt",cserv+"test1.txt")

Andrey: Dima пишет: А как быть с копированием файлов на Leto Server ? Я тоже на этом залетал... Я бы тоже не отказался от функций: Leto_filecopy(cServer+"test.txt",cServer+"test1.txt") Leto_filecopy(cLocal+"test.txt",cServer+"test1.txt") Leto_filecopy(cServer+"test.txt",cLocal+"test1.txt") AlexMyr пишет: в letodb.ini надо EnableFileFunc = 0 - если 1, разрешено использование файловых функций ( leto_file(), leto_ferase(), leto_frename(); читаем readme

Dima: Pasha А в чем разница между leto_RecLock() и RLock() если база открыта с RDD Leto и нужно залочить текущую запись ? ЗЫ Что то Пашу мы завалили вопросами , надо взять таймаут В свое время я был тестером Winpint и тоже заваливал автора вопросами и пожеланиями. В итоге продукт получился отличный

Pasha: Dima пишет: Периодически падает прога на строке LETO_CONNECT("//127.0.0.1:2812/") Чего-чего, а такой нестабильной работы с letodb у меня никогда не было, да еще на элементарном коннекте. Если бы сервер где-нибудь упал, шума было бы много. Но такого не было. Конечно, это версия letodb+bm, она только что появилась. Но все фичи bmdbf при коннекте еще не задействованы. Непонятно.

Pasha: Dima пишет: А как быть с копированием файлов на Leto Server ? Надо использовать функции leto_MemoWrite и leto_FileWrite



полная версия страницы