Как разработать многопользовательскую базу данных MySQL

Забыв, что $ _ перезаписывается в блоках, я пару раз почесал голову в замешательстве, и аналогично для нескольких регулярных совпадений и массива $ match. .> & Л;

30
задан gaurav 6 April 2011 в 16:54
поделиться

3 ответа

Простой способ: для каждой разделяемой таблицы добавьте столбец с именем SEGMENT_ID. Назначенный правильный SEGMENT_ID для каждого клиента. Затем создайте представления для каждой клиентской базы по SEGMENT_ID. Эти представления будут хранить данные отдельно от каждого клиента. С помощью этого метода можно обмениваться информацией, что упрощает как операции, так и & amp; разработка (хранимая процедура также может быть разделена) проста.

5
ответ дан 28 November 2019 в 00:06
поделиться

Для конкретного пользователя БД вы можете предоставить членство в группах, указав компании, к которым им разрешен доступ.

Я предполагаю, что у вас будет таблица Companies, поэтому просто создайте отношение один-ко-многим между Companies и MySQLUsers или что-то подобное.

Затем, в качестве условия всех ваших запросов, просто сопоставьте CompanyID на основе UserID

1
ответ дан 28 November 2019 в 00:06
поделиться

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

Это можно сделать следующим образом:

  1. Добавить столбец tenant_id в каждую таблицу
  2. Использовать триггер, чтобы заполнить tenant_id текущим именем пользователя базы данных при вставке
  3. Создайте представление для каждой таблицы, где tenant_id = current_database_username
  4. Используйте только представления в вашем приложении
  5. Подключитесь к базе данных, используя имя пользователя для конкретного арендатора

I ' я полностью задокументировал это в своем блоге: https://opensource.io/it/mysql-multi-tenant/

2
ответ дан 28 November 2019 в 00:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: