#java #database #rest
Вопрос:
Я работаю над написанием службы, которая будет извлекать записи (данные учетной записи) из базы данных, получать из них идентификаторы учетных записей и с помощью идентификаторов учетных записей вызывать rest API. Этот rest API принимает только 100 идентификаторов учетных записей.
Допустим, я прочитал первые 100 записей из БД, вызвал rest API и выполнил обработку. Теперь, когда я получаю следующие 100 из БД, как я могу убедиться, что я не читаю с одного из последних 100, которые я уже использовал. В базе данных 1 миллион записей.
Спасибо
Комментарии:
1. храните идентификаторы, обработанные где-нибудь в таблице/файле
2. Возможно, вам нужно использовать сортировку по страницам, сортировку на уровне REST API.
Ответ №1:
Отсортируйте запрос базы данных по ключевому полю и используйте оператор TOP 100, например: ВЫБЕРИТЕ TOP 100 * ИЗ …. ПОРЯДОК ПО [ключевому полю] запомните последнее значение ключевого поля и используйте его для следующего запроса к базе данных, например: ВЫБЕРИТЕ ИЗ списка 100 ЛУЧШИХ*…. ПОРЯДОК ПО [ключевому полю], ГДЕ [ключевое поле] > последнее значение ключевого поля. и так далее..
Комментарии:
1. Похоже, что это решение может быть проблематичным, если база данных обновляется между этой «ручной» разбиением на страницы. Я бы лично сохранил результат миллиона и вызвал API столько типов, сколько потребуется. Если во время этого произойдет обновление, по крайней мере, оно будет согласованным.