2012-04-23 2 views
0

Хорошо, мы разрабатываем приложение Multi Tenant с отдельными базами данных . Все схемы имеют одинаковую структуру для N отдельных баз данных. Мы используем MySql с aspx для создания веб-приложения. Теперь будет ситуация, когда могут быть такие же пользователи, которые находятся на N отдельных баз данных. Нам нужен подход к связыванию этих баз данных , где пользователь имеет свои данные и показывает его в выпадающем списке. После связывания базы данных при входе в систему пользователя он сможет посмотреть всю доступную базу данных в раскрывающемся списке, где находятся его данные . Когда пользователь меняет значения выпадающего списка, он/она должен иметь возможность мгновенно изменять базу данных и просматривать свои данные, относящиеся к связанным базам данных. Мы создали приложение Multi Tenant , и все идет хорошо. Проблема в том, что как отобразить всю эту базу данных из основной базы данных для конкретного пользователя . Каждый пользователь имеет отдельный уникальный идентификатор в отдельной базе данных. Таким образом, пользователь не имеет ничего общего в базе данных Multi Tenant , отличной от структуры данных. Мы попытались сохранить всех пользователей Уникальный идентификатор в основной базе данных и связать его с другим уникальным идентификатором, где пользователь находится, но решение не дает плодотворных результатов. Любой другой вариант приветствуется.Mapping Multi Tenant Database

+0

Пожалуйста, отформатируйте, чтобы текст был доступен для чтения. –

+0

Возможно, база данных с таблицей, которая связывает идентификаторы пользователей через различные базы данных? – Prescott

+0

мы попробовали это, но тогда мы не сможем получить первый идентификатор базы данных – Aaraadhana

ответ

0

Метода я пошел с для многопользовательского MySQL является:

  • основных база данных со всеми данными всех жильцов, но каждая таблица имеет tenantID столбец, который отделяет из данных арендатора
  • создавать несколько баз данных для каждого арендатора, но эта база данных заполняется представлениями mysql, которые ссылаются на основную базу данных. Например:

.

# ie. main database has tables: users, and invoices 
# if you have a new tenant named "acme", then: 
create database acme; 
create view acme.users as select * from maindb.users where entityID=2; 
create view acme.invoices as select * from maindb.invoices where entityID=2; 

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

Но сохранение фактических данных в одной базе данных, это упрощенное обслуживание.