Что следует использовать, если нужно проверить данные на практически бесконечное количество условий?
Всем здравствуйте! В заголовке мог некорректно описать вопрос, но в голове даже не получается сформулировать проблему одним предложением, на примере наверно проще. Суть в том, что есть сущность, у которой есть данные, например (Д - данные, П - параметр)
сущность1 - П1 П2 П3 П4 и для них есть Д1, Д2, Д3, Д4
но есть сущность пользователь, которая хочет получить данные сущности1 только если ее данные подпадают под определенные условия, которые он задает
так например может быть
user1 сказал отдай мне сущность1 если П1 и Д1 = 1
user2: П1 и Д1 = 0 И П2 Д2 = 1 ИЛИ П3 и Д3 = 1
и таких пользователей может быть очень много как и условий, которые они могут задать. Мне подсказали, что это может быть задача из области Big data, но в какую сторону нужно смотреть?
Сейчас это реализовано через RoR и там просто берется сущность1 и user и данные этой сущности просто прогоняются по условиям юзера, что с увеличением пользователей/условий пользователя/количества сущностей1 происходит все медленнее и медленнее. Подскажите пожалуйста, как можно ускорить обработку данных и что можно использовать для этого?
Извиняюсь, но не совсем понимаю о чем Вы. Забыл уточнить это все реализовано на Postgresql и сущность1 с users получается связана как 1:M. Но вот не понятно откуда распутывать, решение в лоб как написал что скрипт идет по настройкам пользователя и проверяет подходят они по данным или нет
xmoonlight, в рамках Sql звучало бы как "получить всех пользователей, у которых данные сущностей1 соответствуют настройкам этих пользователей", но под запрос не получается подстроить, так как на одну сущность у 50 пользователей может быть разное количество настроек выборки и не получается построить один запрос.
xmoonlight, ну да, но ощущение что это нереально сделать для таких условий, попробую еще переформулировать задачу:
уведоми всех юзеров, когда для их настроек(которых может быть много с условиями И/ИЛИ) подойдет условие сущности1(юзер ставит настройку отдельную на каждую сущность)
Алексей Иванов, цепь проверок должна быть из связующих узлов (я в ответе про них написал).
По цепи - идёт проверка по некому событию (триггеру).
Цепь - состоит только id-шников узлов, поэтому проверка происходит вообще без поиска по базе.