весенняя партия: два раза считывание из базы данных - PullRequest
0 голосов
/ 21 ноября 2018

Мне нужно знать, каков наилучший подход для чтения данных из одной базы данных в чанке (100), и на основе этих данных мы читаем данные с другого сервера базы данных.пример: получение идентификатора с одного сервера базы данных и на основе этого идентификатора мы получаем данные с другого сервера базы данных.

Я искал в Google, но не нашел решения дважды прочитать и написать один раз в партии.

Один из подходов - чтение в чанке, и внутри процесса мы берем идентификатор и попадаем в базу данных.Но процесс будет обрабатывать отдельные данные за один раз, что занимает больше всего времени.

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

Нужно знать, как лучше всего читать дважды один за другим.

1 Ответ

0 голосов
/ 21 ноября 2018

Не существует лучшего подхода, так как он зависит от варианта использования.

Один из подходов - чтение в чанке, и внутри процесса мы берем id и попадаем в базу данных.Но процесс будет обрабатывать отдельные данные за один раз, который занимает больше всего времени.

Этот подход представляет собой общий шаблон, называемый «Шаблон запроса на вождение», подробно описанный в Типовые шаблоны раздел справочной документации.Идея состоит в том, что читатель читает только идентификаторы, а процессор обогащает элемент, запрашивая у второго сервера дополнительные данные для этого элемента.Конечно, это сгенерирует запрос для каждого элемента, но в любом случае это то, что вам нужно, если только вы не хотите, чтобы ваш второй запрос отправлял список всех идентификаторов в чанке.В этом случае вы можете сделать это в org.springframework.batch.core.ItemWriteListener#beforeWrite, где вы получите список всех записываемых элементов.

Второй подход - сделать два разных шага, но в этом мы не можем поделиться спискомid на другой шаг, потому что мы можем передавать только небольшой объем данных на другой шаг.

Да, совместное использование большого количества данных через контекст выполнения не рекомендуется, так как этот контекст выполнения будет сохраняться между этапами,Поэтому я думаю, что это не очень хороший вариант для вас.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...