Аннулирование кэша Postgres NOTIFY против опроса

1

У нас есть приложение Java, которое кэширует всю информацию (~ 5000 записей в 7 таблицах) из базы данных Postgres. Проблема в том, что база данных обновляется извне, и кеш должен знать, когда нужно признать недействительным. Следует отметить, что мы не ожидаем много вложений/обновлений.

Postgres предоставляет отличное решение для этого путем прослушивания/уведомления и триггера при вставке/обновлении; единственная проблема связана с драйвером JDBC для Postgres, который не знает асинхронно прослушивать уведомления и требует опроса и не нашел решения для асинхронного прослушивания с Java.

Вопрос заключается в том, как сконструировать триггер обновления кэша в этом случае, чтобы достичь максимальной производительности и ограничить время, в течение которого кеш является непоследовательным. Описан ли вышеописанный механизм (создайте триггеры для каждой таблицы, а затем отдельные каналы для прослушивания/уведомления и опроса для уведомлений), или было бы быстро создать такой запрос, как этот select * from table where update_timestamp >? и указанным параметром является дата последней отметки времени обновления кеша (предположим, что столбец проиндексирован).

Проще говоря, уведомляет/слушает с опросом, заслуживающим внимания, или запрашивает опрос быстрее?

Теги:
caching
jdbc

2 ответа

2
Лучший ответ

Это зависит от частоты уведомлений. Если вы получаете 100 уведомлений в секунду, это может быть "медленнее" (= требуется больше ресурсов ЦП), а затем опрос, поскольку у вас больше переключателей контекста ОС.

  • 0
    Там не так много уведомлений. Максимум 100 в час.
  • 0
    Тогда это зависит от вашей бизнес-потребности, насколько вы можете отставать. Если вам нужно мгновенно обновлять опрос каждые 1-5 секунд, это более затратно, чем метод уведомления (кстати, update_timestamp, конечно, нужен индекс btree)
Показать ещё 5 комментариев
1

Для асинхронных уведомлений обратитесь к драйверу pgjdbc-ng 0.6.

http://impossibl.github.io/pgjdbc-ng/

Он поддерживает асинхронные уведомления без опроса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню