Я занимаюсь разработкой мультитенантной хостовой системы Azure ASP.NET Core 2.1 Web Api с полевым уровнем безопасности. В этой системе каждому полю (столбцу базы данных) соответствует строка в другой таблице, в которой указывается разрешение на чтение / запись для этого поля.
Проблема, которую я сейчас рассматриваю, заключается в способе кэширования и доступа к этим разрешениям в режиме реального времени. Поскольку почти каждый запрос должен проверяться этими разрешениями, мне нужно извлечь их из некоторого кэша, потому что я не думаю, что я должен извлекать их из базы данных (дополнительная поездка в базу данных для каждого запроса может замедлить работу всей системы).
Система размещена в нескольких центрах Azure (каждый для нескольких клиентов) и нескольких экземплярах базы данных (каждый для одного клиента). Каждый клиент представляет группу пользователей со своими учетными записями и ролями. Количество клиентов невелико (около дюжины на центр), а количество ролей может достигать десятка. Поэтому я должен где-то кешировать клиентов * роли клиентов * сущности разрешений ролей (возможно, две сотни) для доступа в реальном времени.
Поскольку я делаю все это впервые, мне нужен совет. Является ли Azure Redis Cache единственным надежным вариантом (если да, то хорошо) или есть какой-то другой способ?