Я не могу доработать, применима ли рамка Spring Batch для нижеследующего требования. Мне нужны эксперты.Spring Batch Framework
Ниже мое требование:
Считывание нескольких таблиц Oracle (по крайней мере, 10 таблиц, включая как сделки и мастер), сделать сложный расчет на основе бизнес-правил, Insert/Update/Delete записи в транзакции столы.
я определил следующие два проекта:
Design # 1:
ItemReader: Выбор подходящих записей из ключей таблицы транзакций.
ItemProcessor:. Fetch дополнительные данные из БД с помощью клавиши доступны в записи, возвращаемые ItemReader (Это потребовало бы multipble транзакций DB) Выполните проверку и вычисление и добавить детали должны быть записаны в БД как объекты список.
ItemWriter: Написать детали доступны в объектах с использованием CustomItemWriter (вставка/обновление/удаление операции)
С помощью этой конструкции, мы можем достичь параллельной обработки но увеличить количество DB сделок.
Дизайн # 2:
Шаг № 1
ItemReader: Использование Composite Item Reader (Группа ItemReaders) читать все необходимые таблицы.
ItemWriter: Сохранить результирующие наборы как списки объектов (один список в таблице) в контексте выполнения
Шаг № 2
ItemReader: Получить списки объектов, доступных в контексте выполнения и группировать их в один список объектов на основе бизнес-обработки, чтобы процессор мог их обрабатывать.
IremProcessor: Обработать кусок объектов, возвращаемых ItemReader. Сделайте проверку и вычисление и добавьте детали, которые будут записаны в DB как объекты в списке.
ItemWriter: Написать детали, доступные в объектах с использованием CustomItemWriter (вставка/обновление/удаление операции)
С помощью этой конструкции, мы можем сократить число DB сделок но задерживают обработку, пока все записи таблицы извлекаются и сохраняются в контексте выполнения, т. е. мы не используем параллельную обработку , предоставленную SpringBatch.
Просьба сообщить, возможно ли это, используя SpringBatch, или нам нужно использовать обычную программу Java.
Не храните все в контексте выполнения, поскольку оно сериализуется в хранилище, используемое для хранения деталей выполнения. Рядом с тем, что чтение всего в памяти не очень умное, поскольку вы в конечном итоге столкнетесь с проблемами памяти. Что не так с большим количеством tranactions, поскольку это дает вам еще больший контроль и возможность перезапуска с определенной точки (т.е. там, где она не удалась). –
У нас будет база данных OLTP, которая будет использоваться веб-приложениями (приложениями) и такими партиями. Эти партии должны обновлять таблицы транзакций, используемые веб-приложениями (приложениями) чаще. Поскольку мы не можем контролировать транзакции в Интернете, мы планируем сократить количество пакетных транзакций, чтобы избежать перегрузки OLTP DB. – Vijay
Операции должны быть достаточно маленькими, чтобы не вызывать (что сильно) проблемы для вашего OLTP. Если вы выполняете длительную транзакцию, вы получаете блокировку в течение очень большого количества времени, что гарантированно затруднит ваш онлайн-процесс. –