PavelUstyugov
@PavelUstyugov
Самозанятый веб-разработчик

Что думаете по решению задачи — каждые 5 минут считывать данные по api, раз в час отправлять суммарное исключить дубли?

Каждый 5 минут считываю данные по api, где дают по 100 последних записей. Получается так, что через 5 минут читаю порцию данных, но часть из записей у меня уже есть. А мне нужно потом раз в час отправлять обработку этих записей и потом снова копить в течении часа. У меня есть несколько решений в голове в плане алгоритмов. Хотелось бы услышать и другие мнения.

1)Решение в лоб.
В таблицу считываются каждые 5 минут все данные. Потом раз в час генерируется файл, который из накопившейся таблицы вытаскивает только не повторяющиеся записи типа select distinct...

А что можно поумнее придумать? Ведь при считывании очередной порции получаешь json массив. Добавлять только те, которые новые - это проблематично. Ведь в порции целая куча записей. Это что, нужно в цикле обработать весь массив, из него создать выборку уникальных записей, по Емейл, к примеру и потом инсертить их? Не легче ли просто как в первом способе - всех подряд добавлять в таблицу, ведь они одинаковые один фиг и потом свертку базы делать в запросе и ее уже отправлять?
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ответы на вопрос 1
@aleksejjjj
Чем вас в данном случае INSERT IGNORE не устраивает? Добавьте полю email параметр UNIQUE и лишние записи просто не попадут в таблицу. Никаких циклов. Можете при необходимости составной ключ использовать типа email+time. Не знаю что там вам API возвращает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
СиСорт Барнаул
от 40 000 до 90 000 руб.
AI Factory Санкт-Петербург
от 125 000 до 250 000 руб.