Koc
Новичок
Есть мероприятия. Они привязаны к нескольким районам. Могут быть приватными - тогда их видит определенный круг лиц, приглашенных на эти мероприятия. Могут состоять в группе. Группы в свою очередь тоже могут быть открытыми и закрытыми. А также возможны комбинации - закрытое мероприятие в закрытой группе.
Выборки сейчас идут через MySQL и выглядят довольно кисло. Что-то типа
Вопрос: как и в чем это нужно хранить, что б обеспечить нормальную скорость доступа к данным с учетом приватности?
Выборки сейчас идут через MySQL и выглядят довольно кисло. Что-то типа
Код:
SELECT
e
FROM event e
LEFT JOIN e.invitee i WITH i.user = :current_user
LEFT JOIN e.group g
LEFT JOIN g.participants p WITH g.user = :current_user
WHERE ((e.is_private = false AND e.group IS NULL) OR (e.is_private = true AND i IS NOT NULL) OR (e.group IS NOT NULL AND g.is_open) /* ... */) AND /* прочие фильтры, например по районам */