@utsiye

Как сделать проверку базы данных, на наличие новых записей?

У меня есть база данных mariaDB, она взаимодействует с ботом на телеботе. Мне нужно раз в минуту, проверять, есть ли в базе данных, новые записи. Как это сделать?
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
@utsiye Автор вопроса
Ну вообщем, сделал глобальную ячейку памяти, после пишем всего бота, закидываем его в 1 функцию, а чекер в другую, через потоки запускаю 2 функции и все.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
mayton2019
@mayton2019
Bigdata Engineer
Обычно такие системы строят не на основе БД а на основе системы сообщений (messageMQ). Это - более современный и рациональный подход. Не бот долбит БД а MQ уведомляет бота о каком-то событии.
Ответ написан
shurshur
@shurshur
Сисадмин, просто сисадмин...
Заводим в базе поле навроде created_at, в которое вставляем NOW() для всех новых записей (или задаём значение по умолчанию CURRENT_TIMESTAMP, чтобы оно заполнялось автоматически). В ежеминутном запросе выбираем записи с created_at больше максимального created_at при прошлой проверке. Либо можно использовать монотонный идентификатор (auto_increment), помнить последний известный и выбирать новые записи больше последнего. Ещё иногда добавляют поле статуса события, в котором отмечают процесс обработки. Например, 0 - ещё не обработано, 1 - обрабатывается, 2 - обработано.

Идея из соседнего ответа использовать брокер очереди тоже неплоха, но ради такой простой задачи без высоких требований по скорости, надёжности, высоким объёмам, отказоустойчивости и масштабируемости это для простого бота будет чересчур. Можно иметь в виду и в какой-нибудь другой раз (когда это будет более осмысленно) воспользоваться советом.
Ответ написан
@Akina
Сетевой и системный админ, SQL-программист.
Если количество новых записей невелико (в пределах тысячи), то возможное решение - триггер на основной таблице, который копирует свежевставленные записи в дополнительную таблицу. Тупо один к одному. А процедура проверки на свежие записи столь же тупо выгребает из этой дополнительной таблицы всё туда упавшее, после чего чистит её.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы