Я ищу решение для сценария краевого случая, когда клиент постоянно спрашивает сервер о том, что нового не получится.
В этом примере я не использую временные метки из-за другой проблемы с регистром. Это связано с этим вопросом: Клиент выходит на сервер и спрашивает" Что нового? " - Проблемы с отметками времени
Предположим, что мы используем порядковые номера. Там один номер последовательности, который атомически обновляется каждый раз, когда таблица изменяется. Когда какая-либо строка обновляется, она записывает текущую последовательность. Тогда это просто вопрос клиента, спрашивающего о том, что нового со времени последней заданной им последовательности. Просто? Да, но...
Сбой сценария:
Sequence starts at 1
1) Client A starts update. Updates sequence to 2
2) Client B starts update. Updates sequence to 3
3) Client B updates rows with sequence 3
4) Client C requests changes >1. Gets B changes. Good.
5) Client A updates rows with sequence 2.
6) Client C requests changes >3. Gets nothing. Doesn’t get Client A’s changes.
Поскольку мы используем MongoDB, я не думаю, что мы можем легко заблокировать последовательность во время обновления. И, если можно, я беспокоюсь о производительности.
Когда клиенты спрашивают, "что нового" неоднократно кажется обычным случаем, и я нахожу удивительным, чтобы не находить лучшего богатства лучших практик в этом вопросе.
Любые идеи по решению этого сценария или рекомендации лучшего, желательно платформенного агностика, решения для запроса изменений?