Как создавать изолированные копии БД под разных пользователей?

Рейтинг: 0Ответов: 1Опубликовано: 03.08.2023

Помогите разобраться вот в таком вопросе. Предположим у нас есть CRM система и нам хочется что бы этой системой мог пользоваться любой зарегистрировавшийся пользователь. У этой CRM естественно есть база данных. Хочется сделать так что бы при регистрации пользователя создавалась копия базы данных под него, и данные разных пользователей не пересекались а лежали изолированно в своей копии БД. Подскажите как такое можно сделать на автомате и какие технологии могут потребоваться. Изначальный стек: сервер nest.js, ORM sequelize, БД postgresql.

Ответы

▲ 0Принят

Вы можете использовать Postgresql схемы.

При регистрации пользователя запускать скрипт, который будет создавать схему под пользователя и копировать туда начальные данные.

Например: в стандартной схеме public вы храните внутренние данные CMS: Зарегистрированные в ней пользователи, названия схем, и т.п. А во всех остальных схемах будет лежать база для каждого пользователя.

Остается лишь создать middleware (точный код на nestJS я привести не смогу, но думаю Вот эта статья будет очень полезной), который будет для каждого пользователя менять текущую схему на ту, которая принадлежит пользователю. А дальше весь код будет по умолчанию выполняться для каждого пользователя в его личной базе данных.