Форум » LetoDB, HbNetio. » Вопросы новичка... » Ответить

Вопросы новичка...

Andrey: Взял последнюю версию с "Новая страница с бинарниками", установил на Win2008 Server, чуток помучился с портом... Собрал на МиниГуи+BCC 551 - \MiniGui\batch\hbmk2.bat rddleto.hbp Получил rddleto.lib - 131072 байт - правильный ли размер ? И еще Warning-и лезут: lib\.hbmk\win\bcc\rddsys.c: source\client\letocl.c: source\client\leto1.c: source\client\letomgmn.c: source\common\blowfish.c: source\common\common_c.c: source\common\hbip.c: TLIB 4.5 Copyright (c) 1987, 1999 Inprise Corporation /P32 lib\rddleto.lib -+ lib\.hbmk\win\bcc\rddsys.obj -+ lib\.hbmk\win\bcc\letocl.obj -+ lib\.hbmk\win\bcc\leto1.obj -+ lib\.hbmk\win\bcc\letomgmn.obj -+ lib\.hbmk\win\bcc\blowfish.obj -+ lib\.hbmk\win\bcc\common_c.obj -+ lib\.hbmk\win\bcc\hbip.objWarning: 'rddsys' not found in library Warning: 'letocl' not found in library Warning: 'leto1' not found in library Warning: 'letomgmn' not found in library Warning: 'blowfish' not found in library Warning: 'common_c' not found in library Warning: 'hbip' not found in library Так должно быть или нет ? Вопрос сразу напрашивается с путями - как писать правильно "\" или "/" : Local cPathServer := "//127.0.0.1:2812/" cPathServer := cPathServer +"DATE_TEST_PATH\test.dbf" Помню что где то обсуждали, а результат не запомнил...

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

Andrey: Andrey пишет: Сделал копирование баз с LetoDB на локальную машину. 10 файлов общим размером 136 Мб копируются на локальную машину за 2 мин. 33 сек. Вот это скорость.... Сделал обратную процедуру копирование ОДНОЙ базы на LetoDB (сервер где-то в Москве). База с мемо полями, общий вес 2,5 Мб - кол-во полей 12, из них 3 мемо поля. Кол-во записей 5000. Время копирования на LetoDB - 8 мин. А если будет 15000 записей ? Блин... скорость не та... Пробовал делать через транзакции, программа виснет глухо, потом развисает. База копируется, только поведение программы у юзеров будет Что делать ? Выгрузка на LetoDB нужна один раз для первоначальной работы, ну может и с некоторой периодичностью. Не будешь же сидеть и ждать когда базы зальются у юзеров...

Dima: Andrey пишет: Время копирования на LetoDB - 8 мин что то долго. какова скорость инета ?

Andrey: Dima пишет: что то долго. какова скорость инета ? Хорошее ! Это в коде что-то не так сделано. Доделаю пример выложу.


PSP: Подключение не ADSL случаем?

Andrey: PSP пишет: Подключение не ADSL случаем? Обычное ! Быстрое... Скачивание с сайта на ура, а запись на сервер - тормоза. Что-то в коде не указываю наверное...

Pasha: Может там их на сервере zip-пом сжать (будет примерно 3 Мб), перетащить архив как файл, а уже на локальной машине распаковать и уже добавлять в локальные базы. Достаточно добавить в server.prg строку: Request __Run и можно будет добавить в letoudf.prg функцию, которая бы вызывала внешний архиватор, и возвращала бы клиенту тело упакованного файла. Но такой способ мне не нравится, так как у клиентов появится возможность с помощью letodb запускать на сервере что угодно.

Dima: Pasha пишет: Request __Run А нельзя разве добавить request hb_zipfile и пожать средствами Harbour минуя внешний архиватор ?

Andrey: Pasha пишет: Но такой способ мне не нравится, так как у клиентов появится возможность с помощью letodb запускать на сервере что угодно Сделать для админа, т.е. только для разработчика программ ! Клиентам такой возможности не давать. Т.е. создание архива и распаковка только программисту. Dima пишет: А нельзя разве добавить request hb_zipfile и пожать средствами Harbour минуя внешний архиватор ? Вот, вот внутренним архиватором - средствами Harbour !

Pasha: Наверное, так и сделаю. Добавлю к серверу letodb модуль letozip.prg Модуль будет необязательный, и, если его подключить при сборке сервера, будет добавлен соответствующий функционал.

Andrey: Pasha пишет: Наверное, так и сделаю. Добавлю к серверу letodb модуль letozip.prg Ура !!! Pasha пишет: Модуль будет необязательный, и, если его подключить при сборке сервера Обязательным ! Зачем подключать, добавка к коду небольшая. Всем нужно будет потом, все оценят.... Можно будет архивы (картинки, .doc, .xls ) zip-ованые пересылать ! И примерчик небольшой С БЕГУНКОМ как использовать ! Спасибо БОЛЬШОЕ !

Andrey: Всем привет ! Опять уперся в стену. Сделал программу на МиниГуи - скачивание баз с ЛетоДБ просто быстрый ! Делаю обратную программу загрузку ОДНОЙ базы на ЛетоДБ - тормоза. Ну думаю неправильно сделал, ан нет. Спасибо ОГРОМНОЕ SergKis за помощь, он сделал классную тестовую программу. Просто на Харборе - терминалка, считает мемо поля для размера буфера транзакции и моя база просто загружается ВЛЁТ ! Вот тесты: Transaction No //18.15.100.50:1234/test/TestCopy.dbf Recno:4283 Время загрузки базы - 00:04:52 Transaction Yes // расчет длины строки базы по мемо полям и по структуре базы: {8, 8, 4, 25, 129, 187, 362, 40, 45, 40, 1, 10} // длина записи - 860 //кол-во записей для расчета буфера транз. - 1000 // кол-во строк в буф. транз. - 700 // размер буфера транзакции - 860000 //18.15.100.50:1234/test/TestCopy.dbf Recno:4283 Время загрузки базы - 00:00:02 За 0,2 сек. база загружается на сервер.... Просто супер ! Делал и другие тесты, рабочая база 80 Мб с кучей мемо-полей загружается за 1 мин. 24 сек. Компилировал исходник Харбором из поставки МиниГуи - последним, Harbour 3.2.0dev (r1504082220), библиотеку LetoDB (letodb-2.15-b3.src.zip) тоже компилировал этим Харбором. Сервер поставил готовый как службу из letodb-2.15-b3.bcc.zip Переходим теперь к самой программе собранной на Harbour MiniGUI Extended Edition 2.4.6 - 2015.04.22 Она не особо большая, несколько менюшек, выгрузка для ЛетоДБ - ехе-ник размером 4 Мб. Выгрузка базы без транзакции на МиниГуи занимае 8 мин.12 сек., хотя у тестовой программы 04:52, алгоритм одинаков. Причем бегунок при загрузке замирает периодически... Но программа не вешается. Перетащил алгоритм загрузки с ТРАНЗАКЦИЯМИ к себе заново, думал - полетит.... Ага, обломись... С такими же параметрами как у тестовой программы база загружается... 5 минут ... и программа периодически просто вешается (выскакивает в поле окна Программа не отвечает)... Пробовал по совету SergKis уменьшать буфер транзакции, время выгрузки чуток увеличивается, и программа чуток меньше вешается... Короче полный облом.... Кто пробовал делать загрузку файлов на сервер LetoDB на МиниГуи ? Может дело в МиниГуи ? Поделитесь опытом, куда копать ?

Pasha: Добавил на сервере letodb 2 функции: leto_Zip и leto_UnZip Собирать сервер надо командой: hbmk2 -env:__ZIP=yes letodb.hbp Как использовать эти функции - я написал в инструкции. Андрей, а из-за чего весь сыр-бор ? Загрузка базы на сервер - это разовая операция, и какая разница, будет она выполняться очень быстро или просто быстро ? letodb - это все-таки прежде всего СУБД, и зачем его перегружать несвойственными СУБД действиями ?

Andrey: Pasha пишет: Андрей, а из-за чего весь сыр-бор ? Да большая непонятка, на голом Харборе ВСЁ быстро, как переделываем на МиниГуи становиться МЕДЛЕННО.... Что там влияет... Ну хоть бы не за 0,2 сек но не за 5 минут же... Это при базе всего в 5000 записей. А если будет 40000 то всё, можно идти обедать. Согласен, разовая операция загрузка базы, боюсь как бы в другом месте тормоза не вылезли потом. Нельзя там посмотреть, что такого в МиниГуи делается, что задача на транзакциях вешается ? Может я неправильно собрал саму либу ? Я про это уже спрашивал. Делал так \MiniGui\batch\hbmk2.bat rddleto.hbp Размер либы - 131072 Содержимое build.log lib\.hbmk\win\bcc\rddsys.c: source\client\letocl.c: source\client\leto1.c: source\client\letomgmn.c: source\common\blowfish.c: source\common\common_c.c: source\common\hbip.c: TLIB 4.5 Copyright (c) 1987, 1999 Inprise Corporation /P32 lib\rddleto.lib -+ lib\.hbmk\win\bcc\rddsys.obj -+ lib\.hbmk\win\bcc\letocl.obj -+ lib\.hbmk\win\bcc\leto1.obj -+ lib\.hbmk\win\bcc\letomgmn.obj -+ lib\.hbmk\win\bcc\blowfish.obj -+ lib\.hbmk\win\bcc\common_c.obj -+ lib\.hbmk\win\bcc\hbip.objWarning: 'rddsys' not found in library Warning: 'letocl' not found in library Warning: 'leto1' not found in library Warning: 'letomgmn' not found in library Warning: 'blowfish' not found in library Warning: 'common_c' not found in library Warning: 'hbip' not found in library Где можно взять готовую и проверенную rddleto.lib на тесты ?

Dima: Andrey пишет: Делал так \MiniGui\batch\hbmk2.bat rddleto.hbp Размер либы - 131072 Andrey пишет: на голом Харборе ВСЁ быстро Либа то та же если я верно понял !? Если так , то она тут не причем. Andrey пишет: Нельзя там посмотреть, что такого в МиниГуи делается Что то в GUI фейсе делаешь не так , коли тормоза. По идее скорость не должна сильно отличаться а в идеале должна быть одинакова что в консоли что в GUI. Andrey пишет: Нельзя там посмотреть, что такого в МиниГуи делается, что задача на транзакциях вешается ? Внутри транзакции надеюсь ты не воткнул обновление бегунка ?

Andrey: Dima пишет: Внутри транзакции надеюсь ты не воткнул обновление бегунка ? Нет конечно. Dima пишет: Либа то та же если я верно понял !? Да, собирал и консоль и МиниГуи с одной либой.

Pasha: Есть смысл переделать загрузку/выгрузку БД на сервер letodb через архивные операции, поскольку их поддержка уже сделана. Это будет самый быстрый способ.

alkresin: Андрей, убирать бегунок не пробовал ? Просто чтобы проверить, как он влияет на время ?

Andrey: alkresin пишет: Андрей, убирать бегунок не пробовал ? Совсем убирал. Так же подвисает и столько же времени проходит. Дело всё таки в МиниГуи наверно. Сейчас доделаю тест и выложу, может что-то я не так делаю. Pasha пишет: Есть смысл переделать загрузку/выгрузку БД на сервер letodb через архивные операции, поскольку их поддержка уже сделана. Это будет самый быстрый способ. Спасибо БОЛЬШОЕ !!!

Andrey: Пытаюсь пробовать TsBrowse из Минигуи со связкой LetoDb. Как лучше организовать просмотр базы на LetoDB по условию ? Допустим в базе есть числовое поле KOD, я построил индекс на локальном компе по этому полю (можно потом будет держать на сервере, это пока не важно). Как задать показ в TsBrowse записи допустим по KOD==1 ? Я всегда делал по условному индексу, было моментально. Хочу послушать как другие делают. Можно с помощью фильтра: cExp := "KOD==1" DbSetFilter( &("{||" + cExp + "}"), cExp ) Что посоветуете ?

Pasha: Как лучше организовать просмотр базы на LetoDB по условию ? Допустим в базе есть числовое поле KOD, я построил индекс на локальном компе по этому полю (можно потом будет держать на сервере, это пока не важно). Как задать показ в TsBrowse записи допустим по KOD==1 ? Надо использовать scope



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