У нас есть архитектура базы данных с одним арендатором на данный момент, когда MySQL работает с 100 базами данных. Мы переключаем соединение с базой данных на субдомен, используя драгоценный камень Apartment, и все это денди!Rails multitenant architecture, обзор доступа к нескольким арендаторам
Однако у нас есть требование создать так называемые клиенты «Umbrella», которые могут получить доступ ко всем данным от группы наших существующих клиентов. Я не вижу в этом возможности сразу с нашей архитектурой базы данных с одним арендатором (я просмотрел ее, и запросы к нескольким базам данных MySQL просто казались адскими), поэтому я начинаю рассматривать различные реализации с помощью схем Postgres.
Я ищу несколько советов:
можно ли запросить несколько схем в Postgres и сверить результаты каким-то образом (ищет реализации Rails)? Я могу предвидеть проблемы с конфликтующими первичными ключами?
было бы лучше иметь новую схему, которая каким-то образом представляет/дублирует все данные в группе схем, которые должны быть доступны? Это должно быть в реальном времени.
Если да, может ли быть что-то подобное достигнуто в моей текущей базе данных DB с MySQL? (Для уменьшения боли)
Я осторожен с использованием поля базы данных для достижения Multitenancy в MySQL, как безопасность данных/конфиденциальность является огромной вещью для этого продукта, и есть такой большой потенциал для ошибки разработчиков, что путь ,
Возможно, связанные темы здесь: http://stackoverflow.com/questions/6641653/multiple-applications-using-a-single-code-base-in-ruby –
Tahnks. Я понимаю, как можно добиться многопользовательского приложения в Rails совершенно ясно, это концепция наличия «зонтичного» арендатора, который может получить доступ к нескольким другим арендаторам, в которых я боюсь. –
Несколько схем Postgres лучше, чем несколько баз данных MySQL. Вы должны иметь возможность запрашивать любую схему в базе данных, к которой у вас есть доступ, нет необходимости явно переключаться. Надеюсь, что у кого-то есть ответ с драгоценным камнем, который это делает. – tadman