в бд в зависимости от уровня прав к корневому объектк
Сейчас она реализована в виде скоупов к запросам к бд весьма большой вложенности (юзер в тиме, тима видит корневой объект, в корневом есть объект1, в нем объект2, в нем объект3, в нем объект 4…)
С ростом количества данных цена таких запросов растет в прогрессии настолько, что уже становится грустно
Зато есть плюс - юзер всегда видит только то, что ему положено без доп операций
На ум приходит альтернативный подход в виде таблицы, содержащей отсылку к объектк и предрасчитанного параметра для фильтрации (=отсылка на корневой объект)
Тут же получаем большой буст скорости, но ценой комплексной логики перерасчета прав при апдейтах на вложенные объекты (вложенность не ограничена)
Может есть какие-то подходы из индустрии на почитать?
ReBAC. Relationship Based Access Control. последние пару лет популярность на хайпе google zanzibar. есть имплементации готовые типа там spicedb, openfga и прочее и т.д. которые проблему которую ты описываешь формулируют как permission based filtering/search или чет такое
Кажется, что прям в точку. Спасибо, пошел читать
Поздравляю вы изобрели деревья и индексы к ним. Осталось немного до своей мини бд внутри бд 😀
Обсуждают сегодня