Задать вопрос
@xaker01
Лень все лень.

Какая база данных подходит для частых UPDATE и сортировки?

В базе данных есть очень нагруженная таблица примерно с 1-3млн записями.
Для упрощения в ней есть данные
id|data|used_date

backend обращается к базе данных получает строку отсортированной по used_date ( получаем строку по самой старой дате)
и делает update для нее вставляя текущее время. (пока выполняет операция select + update запись блокируется чтоб другой не мог ее получить и обновить)

Какая база больше подходит для такой задачи,
в данный момент все крутится на postgresql и 16ядер CPU еле справляются с нагрузкой
  • Вопрос задан
  • 604 просмотра
Подписаться 4 Простой Комментировать
Решение пользователя Eugene Usachev К ответам на вопрос (5)
Eugene-Usachev
@Eugene-Usachev
Если я правильно понял суть вопроса, вам подойдёт любая KV СУБД. Вынесите только эту таблицу в какой-нибудь Tarantool или Redis (я имею в виду использовать хранимые процедуры для вашей задачи). 1-3 млн записей - относительно немного. Даже если одна запись весит 4 КБ, все данные займут 4-12 ГБ ОЗУ, что не так уж и много. Если использовать батчинг, что Redis, что Tarantool дадут вам на 16 ядрах свыше 100к RPS на такие сложные запросы.

Можете так же глянуть AerospikeDB (хранит данные на диске, но с индексами в памяти, где один индекс стоит 64 байт), но я не уверен, что вам хватит его функционала. Если вы дадите больше контекста, возможно, я смогу предложить вам другие идеи.

UPD: AerospikeDB тоже позволяет сохранить готовые процедуры, так что его функционала хватит для вышеуказанной задачи.
Ответ написан