Проверить, изменился ли результат запроса, чтобы не повторять запрос на все? - PullRequest
0 голосов
/ 28 февраля 2019

Я разрабатываю Java-приложение, которое загружает определенные вещи из базы данных, такие как записи клиента и информация о продукте.Когда пользователь перемещается, чтобы сказать вкладку «продукты», я запрашиваю продукты в базе данных и обновляю таблицу с этой информацией.Мне интересно, есть ли способ узнать, изменились ли результаты запроса со времени последней проверки, чтобы не запрашивать и не загружать всю информацию из базы данных, а вместо этого просто загружать обновления.Есть ли способ сделать это, или, возможно, просто загрузить изменения только из запроса в мой список таблиц?Моя цель - ускорить работу программы при переключении между вкладками.

1 Ответ

0 голосов
/ 28 февраля 2019

Мне интересно, есть ли способ узнать, изменились ли результаты запроса с момента последней проверки

По-другому, вам нужен способ автоматического ответа на вопрос «этотот же результат? »без извлечения всего результата.

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

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


Например, вы можете сказать, что «хэш SHA-256 полей lorem, ipsum и dolorЭто ваш прокси.Теперь вы можете:

  • Реализовать это вычисление внутри базы данных как функцию, может быть products_hash.

  • Создать таблицу latest_products_hash,в котором хранятся created отметка времени и products_hash, которые были вычислены в то время.

  • В вашем приложении извлеките самую последнюю запись из latest_products_hash и сохраните ее для справки.

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

  • Чтобы определить, были ли обновления, приложение снова запросит таблицу latest_products_hash и сравнит свою самую последнюю запись с той, которую приложение сохранило для справки.

  • Только если последнее значение latest_products_hash отличается, запросите таблицу products и получите полный набор результатов.

Таким образомприложение опрашивает намного более быстрый запрос (наиболее-recent запись в latest_products_hash) часто и избегая полного запроса products, пока он не узнает, что набор результатов будет новым.

...