On-line: PSP, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
администратор




Пост N: 2445
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.07.12 17:14. Заголовок: Copy File to и работа с базой


Есть сетевая база работающая под ADS. Работа с базой идет весьма интенсивная с разных рабочих станций. Примерно раз в час программа на Harbour копирует эту базу командой copy file to для последующей архивации.
Пока база была не большая глюков не было. Сегодня в ряде баз кол-во записей перевалило
за полтора лимона.
Иногда происходят странные вещи и мне кажется что глюки появляются в тот момент
когда идет копирование базы. Так например может заглючить DBseek() , другого объяснения
не нашел. Есть промежуточный документ с кодами товара , на основании этого документа
создается накладная. Кол-во товарных позиций в промежуточном документе и накладной
должно совпадать. Как правило все нормально , но бывают случаи когда это не так.
Алгоритм переноса достаточно простой и глюков там нет.
Сумбурно как то я все обрисовал , но думаю мысль ясна ;)

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 27 , стр: 1 2 All [только новые]





Пост N: 286
Зарегистрирован: 11.10.11
ссылка на сообщение  Отправлено: 11.07.12 18:45. Заголовок: Я сомневаюсь, что db..


Я сомневаюсь, что dbseek может работать некорректно. Разве что программист может некорректно использовать эту функцию. например, работа зависит от второго параметра SoftSeek. Если параметр не задан, то действует текущая установка Set для SoftSeek.

А так трудно в общих чертах судить, что вызывает некорректное копирование. Может быть в конце копирования просто проверять, что число записей совпадает с числом записей, вычисленных на основе исходных позиций документов? И на основании этого уже делать какие-то выводы.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2447
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 11.07.12 20:27. Заголовок: Дима, непонятно, как..


Дима, непонятно, как команда copy file to может работать совместно с ads. copy file to aka __CopyFile это не функция rdd, она работает через файловые операции, а поскольку ads открывает файлы монопольно, работать не может. Может быть, ты делаешь как-то по-другому ?
В любом случае, копировать открытую ads таблицу лучше средствами ads, функцией AdsCopyTable()

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2447
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.07.12 16:32. Заголовок: Pasha Ты наверное и..


Pasha
Ты наверное имел в виду установку AdsLocking( .t. ) , но она ни коим образом не блочит работу
__CopyFile. При такой установке базу нельзя открыть с RDD отличным от ADSCDX в Clipper а
уже тем более в Foxpro или Excel

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2448
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.07.12 12:05. Заголовок: Pasha пишет: В любо..


Pasha пишет:

 цитата:
В любом случае, копировать открытую ads таблицу лучше средствами ads, функцией AdsCopyTable()


Поюзал эту функцию. Работает быстрее в 5 раз по сравнению с __CopyFile.
Это хорошо , но есть минус при таком подходе. Архив базы в этом случае останется
на сервере Netware а хотелось бы иметь на локальной станции.
Можно конечно этот архив скопировать на локальную станцию , но все мы знаем
что копирование жрет много ресурсов и порядком нагрузит винт сервера Netware
что приведет к заметным тормозам при работе с базами в программе.
Покопал Advantage CA-Clipper Guide Vers 5.0 и обнаружил команду COPY TO ARRAY ака функция aofCopyToArray, если предположить что она так же шустро работает как и AdsCopyTable()
то наверное это было нормальным решением.
Базу в массив (разумеется под Harbour ) а массив уже не дергая сервер Newtare
конвертнуть в локальную базу. НО в RDDADS (Harbour) такой функции
я не увидел.
Копнул HELP к ADS и там нет. Куда же она делась то ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2448
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.07.12 13:15. Заголовок: AdsCopyTable работае..


AdsCopyTable работает быстрее __CopyFile понятно почему. Первая копирует файл на сервере, а вторая - через сеть, поэтому получается медленнее.
Я давно не имел дела с Nwtware. Есть ли под нетварь какой-нибуть архиватор в виде nlm ? Если есть, то лучше всего было бы настроить архивацию копии Базы, полученной вызовами AdsCopyTable по времени прямо на сервере, и затем готовый архив забирать с клиента. DBF архивируется очень хорошо, процентов на 90, так что такое копирование займет немного ресурсов.
А с массивами лучше не связываться. Думаю, что харбор захлебнется на массивах размерностью в миллионы элементов.
Я и с Ads давно дело не имел. Мне почему-то по памяти казалось, что он хватает базу монопольно. В всяком случае, ads под windows вроде бы так работал. Но и остается непонятной первоначальная проблема, как простое копирование через файловые операции может привеодить к глюкам.
Скажем, при доступе чепез seek может быть блокировка индекса. Но при копировании индекс никак не затрагивается, да и блокировок никаких не выполняется, так что помешать работе ads ничто не может.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2449
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.07.12 13:22. Заголовок: Pasha пишет: AdsCop..


Pasha пишет:

 цитата:
AdsCopyTable работает быстрее __CopyFile понятно почему. Первая копирует файл на сервере, а вторая - через сеть, поэтому получается медленнее.


я не совсем верно выразился , в качестве эксперимента __CopyFile делал тоже на сервере , но AdsCopyTable все равно оказался в разы быстрее.
Пробовал так же средствами ADSCDX копировать базы , но все равно победил AdsCopyTable

PS
Еще игрался с RAM дисками и __CopyFile , по времени примерно тоже что AdsCopyTable получилось

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2449
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.07.12 18:36. Заголовок: Dima пишет: я не со..


Dima пишет:

 цитата:
я не совсем верно выразился , в качестве эксперимента __CopyFile делал тоже на сервере , но AdsCopyTable все равно оказался в разы быстрее.



Так харбора для netware же не существует. Наверное, ты запускал программу с win-клиента ? Тогда __CopyFile два раза испозьзует передачу данных по сети: для чтения и записи файла, а AdsCopyTable работает локально на netware.
Ну да ладно, я не об этом. Раз уж ads под netware позволяет другим программам открывать открытые им файлы, то такой программой может быть и архиватор. Например, вот этот:
http://www.nwsoft.ru/ru/programs/nwzip/
А затем созданный им архив можно забирать с клиента.
Правда, при этом остается вопрос, не помешает ли чтение архиватором файла работе самого ads. Но этот вопрос будет стоять в любом случае, чем бы не копировать базу.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2450
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.07.12 18:47. Заголовок: Pasha пишет: Наверн..


Pasha пишет:

 цитата:
Наверное, ты запускал программу с win-клиента


Конечно ;)

Nwzip я конечно и сам нашел , только не понятно как его запускать в нужные моменты.
Ведь это можно сделать руками с консоли сервера только.

По ходу я говорил что игрался с RAM дисками для копирования. Скорость сопоставима с AdsCopyTable ,
и скорее всего именно на этом варианте и остановимся.
Создаем RAM диск гига на два и туда тулим архив базы с помощью __CopyFile , там же и архивируем.
Архив ложим локально куда нужно.
Как вариант можно копироваться на SSD носитель.
Прог для создания RAM дисков из оперативки , полно , в том числе и бесплатных.
Юзал пока 2 из них. Скорость копирования оказалась одинаковой. Остановился пока на
http://ramdisk.nm.ru/ramdiskent-rus.htm


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2450
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.07.12 18:58. Заголовок: Dima пишет: Nwzip я..


Dima пишет:

 цитата:
Nwzip я конечно и сам нашел , только не понятно как его запускать в нужные моменты.



Есть для этих целей cron: http://www.novell.com/coolsolutions/feature/7174.html


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2451
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.07.12 21:23. Заголовок: Pasha пишет: Есть д..


Pasha пишет:

 цитата:
Есть для этих целей cron


Спасибо

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2460
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.07.12 12:09. Заголовок: Pasha Как ты думаеш..


Pasha
Как ты думаешь что лучше использовать для архивации прямо на серере NWZIP (под Netware)
или HB_ZIPFILE (Harbour) ?
Удобнее конечно HB_ZIPFILE , но не будет ли он сильно грузить HDD сервера по сравнению с
NWZIP ?!

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2453
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 17.07.12 13:31. Заголовок: Если nwzip нормально..


Если nwzip нормально работает и его удастся настроить, то лучше использовать его. Думается, что hdd сервера оба варианта загрузят одинаково:
архивация (так должно быть) - это чтение исходного файла в один проход, собственно архивация и запись результата
Но hb_zip помимо всего этого нагружает сеть, так как исходный(е) файл(ы) считываются по сети. Локальный вариант (nwzip) всегда предпочтительнее.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2461
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.07.12 15:39. Заголовок: Pasha Спасибо , буд..


Pasha
Спасибо , буду думать дальше.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2483
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.08.12 21:31. Заголовок: Подумал и потестил. ..


Подумал и потестил.
AdsCopyTable и NWZIP вариант конечно идеальный да и сеть не грузит. Но проблема с CRON , он слишком прост и тупо запускает задачи по времени.
А на чем пишут NLM для Netware ?
Нужна простейшая программа , которая проверяет наличие в нужной папке нужного файла , если есть файлик то запускается NWZIP а дальше дело техники и ни чего сложного не вижу.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2466
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.08.12 09:16. Заголовок: Dima пишет: А на че..


Dima пишет:

 цитата:
А на чем пишут NLM для Netware ?
Нужна простейшая программа , которая проверяет наличие в нужной папке нужного файла , если есть файлик то запускается NWZIP а дальше дело техники и ни чего сложного не вижу.



Я под netware никогда не программировал, но по идее можно использовать такую простую программу на C:

 
#include <dir.h>
#include <stdlib.h>

main()
{
struct ffblk ffblk;

if( findfirst( "myarc.zip", &ffblk, 0 ) == 0 ) /* файл существует */
system( "nwzip.nlm param" );
}


Собрать ее можно попробовать с помощью OpenWatcom C compiler, который поддерживает netware:

http://www.openwatcom.org/index.php/Main_Page

Более того, там есть кроссплатформенная сборка, т.е. под windows можно собирать программы для netware
А вот как собирать - надо разбираться



Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2467
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.08.12 09:20. Заголовок: Можно поспрашивать н..


Можно поспрашивать на форумах netware, как это сделать попроще
Может быть, можно обойтись каким-то батником

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2484
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.08.12 15:34. Заголовок: Pasha Спасибо , буд..


Pasha
Спасибо , буду копать.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2485
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.08.12 16:41. Заголовок: Нашел тулзу счас чек..


Нашел тулзу счас чекану http://www.lenik.ru/netwarends/srvcontr/index.shtml

ЗЫ
Пашет однако !!!


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2487
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.08.12 21:15. Заголовок: Вот уж не думал что ..


Вот уж не думал что можно выполнить NLM на консоли сервера с рабочей станции минуя REMOTE CONSOLE. Однако nlmload.exe это позволяет. Завтра буду плотно переписывать процесс
копирования баз и архивирование.

План действий примерно таков:
AdsCopyTable
Затем с помощью nlmload.exe запускаю NWZIP с параметрами , после окончания его работы (это еще предстоит выяснить когда он окончит работу но думаю решаемо) копирую
архив на локальный диск и чищу папку на серваке с копией и архивом.

Pasha Спасибо за идеи и подсказки и просто за внимание !!!

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2488
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.08.12 11:34. Заголовок: Все сделал как надо...


Все сделал как надо.
Всем спасибо !

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 27 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 193
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет