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

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

Dima: Продолжаем тут

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

Dima: Блин еще косяк не понятный В цикле работает ordlistadd() C обычным DBFCDX после отработки цикла первым (управляющим) становится первый добавленный индекс А с LETO последний. Сколько таких не соответствий мне еще суждено поймать....... Что касается бровса. Если он голый (просто поля) без наворотов то работает нормально (нет тормоза). А вот если появляются вычисляемые поля да еще по другим базам то тормоз обеспечен. Локально без LETO этого тормоза нет , впрочем как и под ADS (там слегка заметное замедление)

Pasha: Dima пишет: остался вопрос с Set Autopen off рисую такой тест: #define _leto proc main #ifdef _leto local cPath := '//127.0.0.1:2812/' REQUEST LETO RDDSETDEFAULT( "LETO" ) #else local cPath := '' REQUEST DBFCDX RDDSETDEFAULT( "DBFCDX" ) #endif set autopen off #ifdef _leto leto_Connect(cPath) hb_rddinfo(101, .f.,, 1) #endif USE (cPath+'test') new ? rddname(), IndexOrd(), ordCount() set index to test ? rddname(), IndexOrd(), ordCount() wait retu Что leto, что dbfcdx ведут себя одинаково. Если индекс существует и autopen выключен, то индекс не открывается, надо принудительно выдать команду set index Если autopen включен, то индекс открывается автоматически. Дима, может быть ты что-то другое имеешь в ввиду ?

Pasha: Dima пишет: Что касается бровса. Если он голый (просто поля) без наворотов то работает нормально (нет тормоза). А вот если появляются вычисляемые поля да еще по другим базам то тормоз обеспечен. Локально без LETO этого тормоза нет , впрочем как и под ADS (там слегка заметное замедление) Если сравнить бровс с вычисляемыми полями по нескольким таблицам при работе в сети, то какой rdd быстрее: dbfcdx, ads или leto ? И какого вида вычисляемые поля ? Это seek по другой таблице и выборка из нее данных, или что-то сложнее ? Кстати, если это цикл с суммированием по другой таблице, то в leto для этого есть функция leto_sum, использование которой уберет тормоза, так как она выполняется одним запросом к серверу.


Dima: Pasha пишет: Дима, может быть ты что-то другое имеешь в ввиду ? НЕ LETO , ставлю set autopen off Открываю базу magaz3.dbf , в этой же папке есть magaz3.cdx и он к этой базе ни какого отношения не имеет. Тут он и не откроется. А в случае с LETO даже если установка set autopen off этот индекс будет открываться и понятное дело будет ошибка открытия базы так как индекс magaz3.cdx совсем из другой оперы.

Pasha: Dima пишет: НЕ LETO , ставлю set autopen off Открываю базу magaz3.dbf , в этой же папке есть magaz3.cdx и он к этой базе ни какого отношения не имеет. Тут он и не откроется. А в случае с LETO даже если установка set autopen off этот индекс будет открываться и понятное дело будет ошибка открытия базы так как индекс magaz3.cdx совсем из другой оперы. Понятно. На сервере set autopen всегда включен, и я думаю, это нельзя изменить. Представь ситуацию. Один клиент открыл таблицу с индексом, и другой без индекса, и оба обновляют таблицу. Что в таком случае будет с индексом ? Одно соединение его обновит, а другое нет. Получится битый индекс. Поэтому сервер всегда открывает индекс, даже если клиент это не просит.

Andrey: Pasha пишет: Поэтому сервер всегда открывает индекс, даже если клиент это не просит. Если не трудно - напишите это в доке ! А то потом забудешь про это и опять на те-же самые грабли наступишь...

alkresin: Павел, а можно виндовый letodb собрать не как службу ? Я его сегодня обновил с CVS, собрал, пытаюсь запустить - а он говорит, что "LetoDB service has had some problems: 1063". Мне служба совершенно не нужна...

AlexMyr: Александр, поправьте следующее #-prgflag={win}-D__WIN_DAEMON__ -prgflag={win}-D__WIN_SERVICE__ замениете на -prgflag={win}-D__WIN_DAEMON__ #-prgflag={win}-D__WIN_SERVICE__ Вот в reame Для ОС Windows сервер letodb может быть собран как служба Windows (должен быть инициализирован макрос __WIN_SERVICE__), или как демон (процесс), для чего надо установить макрос __WIN_DAEMON__.

alkresin: Спасибо. Не дочитал до этого места readme :)

Andrey: Pasha пишет в теме http://clipper.borda.ru/?1-6-0-00000001-000-10001-0: Я autoinc не использую, и насчет стабильности точно не скажу. Но мне кажется, что и без flock, т.е. по rlock, будет стабильнее, чем делать go bottom, выбирать последний ключ, и т.д, поскольку узких мест для autoinc меньше. В связи с переходом на LetoDb - как лучше реализовывать "счетчик" ID у себя в задачах ?

Панченко: В качестве пожелания. Паша, Александр что-то давненько не обновлялся архив на http://sourceforge.net/projects/letodb/. Ведь этот адрес заявлен в начале темы как адрес проекта. Густов в Вики тоже дает эту ссылку. Все, кто туда придут, скачают проект почти полугодичной давности.

Pasha: Andrey пишет: В связи с переходом на LetoDb - как лучше реализовывать "счетчик" ID у себя в задачах ? Только заметил этот вопрос. Можно использовать udf-функцию UDF_AppendRec( nUserStru, cFieldName, xOrder, xMin ) из модуля letoudf.prg она обеспечивает уникальность ключа с гарантией 100% Вызов с клиента: leto_ParseRec( leto_udf("UDF_AppendRec", <cFieldName>, <xOrder>[, <xMin>] ) ) Параметры: cFieldName - имя поля ключа xOrder - имя/номер индекса xMin - необязательное минимальное значение

Pasha: Панченко пишет: что-то давненько не обновлялся архив на http://sourceforge.net/projects/letodb/. Выложу сборку.

Andrey: Только не пинайте сильно.... Дайте адрес для обновления LetoDB через SVN. Заранее спасибо....

Dima: Andrey пишет: Дайте адрес для обновления LetoDB через SVN А его нет так как не переезжал туда если не ошибаюсь

AlexMyr: Dima пишет: А его нет так как не переезжал туда если не ошибаюсь правильно. Andrey пишет: Дайте адрес для обновления LetoDB cvs -d:pserver:anonymous@letodb.cvs.sourceforge.net:/cvsroot/letodb co -P -r rel-1-mt letodb

Sergy: Подскажите плиз новичку: 1) с чего начать, откуда качать, что читать (кроме readme, скинутого в соседней теме) 2) возможна ли одновременная работа letodb сервера на одной базе параллельно со "старым" способом работы через DBFNTX rdd ? Т.е. есть желание попробовать оптимизировать сначала наиболее "медленные" выборки - чтобы обкатать методы работы. А потом потихоньку менять шаг за шагом, чтобы не раскорячить неожиданно основной процесс работы предприятия?

SergKis: Sergy пишет: с чего начать 1. со сборки LetoDb, настройка letodb.ini,запуска на localhost 2. с мало используемого справочника, Use перенацеливаешь на localhost, RDD LETO в use, если в текстах было Shared, то по идее все должно зашевелиться, иначе Rlock обработки добавляешь 3. если зашевелилось, можно переползти на сервер с localhost и потестить 4. попробовать совместную работу LetoDb со "старым" способом работы Sergy пишет:работа letodb сервера на одной базе параллельно со "старым" способом работы letodb.ini[pre2] ... Default_Driver = NTX - RDD по умолчанию для открытия файлов на сервере ( CDX/NTX ); ... Share_Tables = 1 - если 0 (по умолчанию, этот режим существует с момента старта проекта letodb), letodb открывает все таблицы в монопольном режиме, что позволяет увеличить производительность. Если 1 (новый режим, добавлен после 11.06.2009), таблицы открываются в том режима, в каком их открывает клиентское приложение, монопольном или режиме разделения, что позволяет letodb работать совместно с другими приложениями. [/pre2]

SergKis: Sergy посмотреть server.prg в Source и примеры в tests, utils - это святое

AlexMyr: Sergy пишет: 1) с чего начать, откуда качать, что читать (кроме readme, скинутого в соседней теме) Лучше начинать с этого форума. Брать через cvs -d:pserver:anonymous@letodb.cvs.sourceforge.net:/cvsroot/letodb co -P -r rel-1-mt letodb По поводу почитать - поиск letodb по форуму. Sergy пишет: 2) возможна ли одновременная работа letodb сервера на одной базе параллельно со "старым" способом работы через DBFNTX rdd ? Т.е. есть желание попробовать оптимизировать сначала наиболее "медленные" выборки - чтобы обкатать методы работы. Смотреть опцию: [pre2]Share_Tables = 0 - если 0 (по умолчанию, этот режим существует с момента старта проекта letodb), letodb открывает все таблицы в монопольном режиме, что позволяет увеличить производительность. Если 1 (новый режим, добавлен после 11.06.2009), таблицы открываются в том режима, в каком их открывает клиентское приложение, монопольном или режиме разделения, что позволяет letodb работать совместно с другими приложениями.[/pre2] На практике можно поступить следующим образом (у меня так), взять базу, например справочник, и открывать его через letodb, т.е. use baza via rddleto, остальные базы как и открывали. Потом смотрите что получается, как работает прога и постепенно переносите оставшиеся базы на leto.



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