Логический вопрос: REST-API кеширование ответов списка - PullRequest
0 голосов
/ 28 мая 2020

У меня логичный вопрос (логично правильное слово?) К общему кешированию ответов базы данных в среде API отдыха. Я использую для этого elasticsearch. Кэширование (сохранение и получение записей) не проблема. Также можно запросить c сущностей по идентификатору. Моя проблема в области ответов списка. Вот проблема:

Схема базы данных для лучшего понимания:

| ID | firstname | lastname |
-----------------------------
| 1  | John1     | Dow1     |
| 2  | John2     | Dow2     |
| 3  | John3     | Dow3     |
| 4  | John4     | Dow4     |

У вас есть 4 записи в базе данных и запрос 2 (последние две, смещение 2 с пределом 2. Здесь будет быть ID 3 и 4) из них (разбивка на страницы). Эти две сущности сохраняются в elasti c для быстрого второго запроса. В следующий раз вы запрашиваете список и выбираете первую страницу (смещение 0, предел 2. Здесь ID 1 и 2). Теперь elasti c проверяет, есть ли что-то в кеше, находит первые две выбранные записи (ID 3 и 4) и возвращает их. Но это неправильные записи, потому что мы запросили первую страницу, которая должна иметь ID 1 и 2.

Мое решение на данный момент состоит в том, чтобы выполнить запрос подсчета (база данных совпадений), чтобы проверить, сколько записей должно быть там ( в этом примере всего 4 записи), и если у elasti c меньше, я запрашиваю базу данных и обновляю кеш. Правильный порядок обеспечивается порядком по пункту и работает, если есть все записи. Но это всегда связано с обращением к базе данных и (немного) разрушает преимущества кеша.

Это общая проблема с результатами кеширования списков или есть какое-то решение, которое я мог бы использовать для этого? Может быть, мое решение хорошее (но я так не думаю :)). Я должен сказать, что этот сервис не используется миллионами пользователей ... он нацелен на базу пользователей в несколько тысяч. Может быть, всегда обращаться к базе данных в этом случае нормально?

Заранее спасибо за вашу помощь! Извините за возможные орфографические ошибки ... Я даже проверял орфографию :)

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