Автоматизация?
В теории, это должно быть возможно изготовить инструмент, который делает его гораздо проще для выполнения этой сложной операции (идущей от одного-арендатора множественным арендатора). Однако я не думаю, что такой инструмент существует, учитывая ограниченную аудиторию такого продукта. Было бы очень приятно, если бы вы всплыли.
Идея о ручном преобразовании
Start путем разработки новой схемы базы данных многопользовательской. (Это означает объединение всех схем баз данных с одним арендатором с любыми разделяемыми схемами, которые у вас есть). Я хотел бы сделать это так, как если бы он был разработан без каких-либо устаревших соображений.
Вам, очевидно, нужна таблица Tenant
, на которую должны ссылаться многие ваши существующие таблицы с одним арендатором с колонкой Tenant_id
. Например, таблица с пользователями потребует, чтобы это уникально связывало пользователей с арендатором.
В случае простой Products
таблицы (с Product_id
в качестве первичного ключа), это должно быть возможным, чтобы добавить Tenant_id
колонки, получая таблицу с составным ключом (Tenant_id
и Product_id
). Но если вы написали приложение с нуля, я считаю, что таблица Product
без ссылки на арендатора является правильным способом. Это также позволяет арендаторам делиться продуктами, а не добавлять дубликаты. Поскольку один арендатор может иметь продукты с Product_id
1,2,3 и еще 1,2, вы не можете просто объединить таблицы, потому что вы не можете использовать один и тот же идентификатор дважды - вам нужны уникальные значения первичного ключа. Один из способов решения этой проблемы - написать программу (на Java или другом языке высокого уровня), которая считывает все данные из базы данных арендатора в объекты в памяти, а затем записывает данные в схему с несколькими арендаторами. Процесс повторяется для следующей базы данных арендатора и т. Д. Таким образом, вы имели бы Product_id
значения 1,2,3,4,5. Быстрый и грязный способ состоит в том, чтобы добавить число, скажем 1000, 2000 и так далее, ко всем значениям идентификатора в каждой схеме и просто пересечь пальцы, чтобы не возникало конфликтов.
код, который взаимодействует с базой данных
Вам нужно будет переписать большинство запросов к базе данных, чтобы учесть тот факт, что база данных в настоящее время многопользовательский. Это сложная задача, особенно учитывая последствия введения ошибки, которая позволяет одному арендатору возиться с данными другого арендатора. Однако некоторые методы могут облегчить эту задачу. Например, Tenant View Filter может значительно сократить объем требуемой работы.
ограничение на количество жильцов
Я никогда не видел рекомендацию, чтобы ограничить число жильцов в структуре с несколькими арендаторами. Напротив, strength of the multi-tenant approach - его масштабируемость. Сегодня вы можете легко создавать кластеры серверов баз данных или использовать облачные решения, чтобы при необходимости добавлять дополнительную аппаратную мощность.
Звенья интерес