Каков наилучший способ одновременного доступа к файлам на AS400? - PullRequest
0 голосов
/ 30 ноября 2011

Я пытаюсь написать программу, которая будет запускаться в пакетном режиме на AS400.Эта программа собирается записать запись в файл, чтобы отразить его статус обработки, скажем, когда она только что отправлена, она добавляет запись о том, что работает в данный момент, и когда она завершена, она обновляет ту же запись, говоря, что она завершилась.Если я хочу отправить эту программу в пакет несколько раз, как лучше всего справиться с этим типом одновременного доступа к файлам для повышения эффективности?Я не хочу, чтобы работа блокировала весь файл и не позволяла другим обновлять его одновременно.Он может заблокировать нужную запись и оставить остальное другим.Как этого добиться?RPGLE или QMQRY?Или любые другие методы?

Ответы [ 2 ]

4 голосов
/ 30 ноября 2011

RPG не заблокирует весь файл, только запись.

0 голосов
/ 30 ноября 2011

Лично я бы порекомендовал SQL для (в значительной степени) всех доступа к файлам, даже через RPG.IBM некоторое время не обновляла свои собственные операции ввода-вывода, просто концентрируясь на стороне SQL.

Поскольку при обычном использовании блокировки записи в RPG снимаются после выполнения записи или обновления, вы, вероятно, должны просто запустить SQL WITH NC (без коммита).Вам нужен способ связать задание обработки с данными, которые он обрабатывает в любом случае (при условии, что данные достаточно продолжительны, чтобы они находились в файлах за пределами QTEMP) - вы хотите иметь возможность выбрать, гдевы остановились, если ваша работа умирает (так что вы не можете полагаться на удержание замка в качестве механизма управления).Так что не забывайте, что вам понадобится какая-то работа монитора (которая может по крайней мере сообщать о состоянии, если не повторять отправку - посмотрите на QUSRJOBI API).

Если выДелая это, потому что вы используете все собственные операции ввода-вывода и обрабатывает огромные наборы данных (а не огромные, требующие большого объема вычислений), рассмотрите возможность переписать все в SQL.Шутки в сторону.Вы можете добиться гораздо более высокой производительности - мы взяли процесс, который работал более 25 часов, до того, что работает в 2.5ish.

...