@neronru

Где хранить такого рода данные?

В общем, имеется система уведомлений на сайте. В данной системе есть поддержка группировки некоторых типов уведомлений в одно, если выполняются определенные условия:
  • Они должны быть соседями в списке (причем условие может изменится, на группировку по времени, или по положению (если есть в последних уведомлениях, в пределах скажем 10, такого же типа, то можно их сгруппировать) )
  • Количество уведомлений в группировке не превосходит определенного количество( ну например, в одной группировке, должно быть не больше 50 уведомлений)
  • У них должны быть одинаковые значения в группируемом поле
  • У них должна быть одинаковая дата (группировка происходит только, если они произошли в один день)

Причем группировка идет снизу в вверх, то есть сначала группируются более старые уведомления, потом новые.
Сейчас все это реализовано с помощью Redis, но как известно редис не является стабильным хранилищем, так как данные содержатся в памяти.
Понятно, что такую логику очень сложно обработать в реляционных СУБД.Особенно в MySQL без использования костылей.
Какую СУБД лучше использовать для такой структуры?
  • Вопрос задан
  • 363 просмотра
Пригласить эксперта
Ответы на вопрос 1
zoroda
@zoroda
Необычный Fullstack
PostgreSQL (и ORACLE) отлично справляются с подобными задачами.
Для вашего запроса скорее всего понадобятся стандартные функции:
- LAG() OVER() для определения соседа,
- COUNT() или COUNT() OVER () для определения количества
Одинаковые значения в указанном поле и дате умеют определять все, включая MySQL
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы