Я должен оценить конечную точку API PHP REST. Каждый запрос уже сделан с уникальным идентификатором клиента / клиента. Я должен быть в состоянии добавить следующие правила:
Также я должен регистрировать каждый тип запроса и некоторые метаданные. Конечно, это должно работать как можно быстрее, чтобы минимизировать дополнительные затраты на конечную точку API.
В Postgres это будет выглядеть так:
INSERT INTO requests (created_at, client_id)
SELECT now(), client_id
FROM clients c
WHERE
c.id = 123 -- client id is passed inside request
AND (
SELECT COUNT(*)
FROM requests r
WHERE r.client_id = c.id
AND r.created_at > now() - '5 minutes'::interval
) > c.limit_per_5min
AND (
SELECT COUNT(*)
FROM requests r
WHERE r.client_id = c.id
AND r.created_at > now() - '1 hour'::interval
) > c.limit_per_1hour
-- and other limits...
Но я не уверен, что это хорошая идея использовать Postgres здесь. Я думал также о MongoDB или Redis, но я также не уверен, что они могут обрабатывать так много правил (и как?).
Посоветуйте, пожалуйста, какую технологию мне здесь использовать?
Также мне придется запросить, например, сколько запросов какого-либо типа было передано клиенту с идентификатором ххх.
Задача ещё не решена.
Других решений пока нет …