У меня есть приложение, в котором пользователи могут отслеживать посетителей своего сайта в реальном времени. Пользователь может создавать группы, которые в основном представляют собой массив объектов (фильтров) JSON, которые они могут использовать для фильтрации ресурса (здесь посетитель сайта).Пользовательские фильтры, отображаемые пользователем для каждого
Group(user_id:id, name:string, filters: JSONB[type, field, value])
Пример группы:
name: "my group"
filters: [
{field: "sessions", type: "greater_than", value: 5},
{field: "email", type: "contains", value: "@example.com}
]
Я отображение каждого из групп пользователя в интерфейсе, но я хотел бы также показать количество записей (посетителей) соответствие каждой группы.
Как можно видеть, посетители сайта могут динамически включаться/исключаться в группе пользователей в зависимости от их поведения.
Я думал о том, чтобы использовать материализованный вид, чтобы сохранить сопоставление всех групп и количество совпадений, которые будут обновляться каждые 30 секунд. Я боюсь, что это будет очень неэффективно.
Есть ли лучший подход?
Благодаря
Проблема с триггерным подходом заключается в том, что посетитель может перейти в другую группу без явного изменения данных с помощью временных меток, поскольку они основаны только на том, сколько времени прошло – Tarlen