Могу ли я запустить бесконечный цикл в моей java-программе, чтобы проверить, не сделали ли третьи лица какие-либо изменения в базе данных - PullRequest
0 голосов
/ 08 мая 2018

Я проектирую программу на Java и использую mysql в качестве БД. Программа позволяет нескольким пользователям подключаться к БД.

Важной частью программы является мгновенное обновление пользователей о том, что другой внес изменения в конкретную таблицу, в которой пользователь будет выполнять действие, и, следовательно, изменения будут отображаться с его стороны.

Я думал о прослушивании через сокет, но я не смог решить концепцию нескольких пользователей и то, как отправитель будет уведомлять конкретного пользователя, а не всю группу

это похоже на текстовое сообщение

Итак, я пытаюсь запустить цикл while, который запускается каждые 10 секунд, чтобы немного повысить производительность и проверить таблицу по имени пользователя, которое я использую для входа в систему. это даст мне то, что я хочу, но я знаю, что это не эффективно

Есть идеи ???

1 Ответ

0 голосов
/ 08 мая 2018

Использовать шаблон «контроль версий» в таблице базы данных. Добавьте числовой столбец, который увеличивается при каждом обновлении таблицы, например:

alter table users add version_number bigint:

Затем при каждом обновлении строки вы также должны увеличивать это значение:

update users
  set my_value = ...,
    version_number = version_number + 1 -- include this change
  where id = 1234

Таким образом, каждый клиент будет помнить последний номер версии, который он видел . Если они находят другой номер версии, то происходит изменение, поэтому необходимо выполнить действие.

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