Автоматизация?
Теоретически, должна быть возможность создать инструмент, который сделает намного проще для выполнения этой пугающей операции (переход от одного арендатора)для нескольких арендаторов).Однако я не думаю, что такой инструмент существует, учитывая ограниченную аудиторию для такого продукта.Было бы очень хорошо, если бы один всплыл.
Идеи о ручном преобразовании
Начните с разработки новой схемы мультитенантной базы данных.(Это означает объединение всех схем однопользовательских баз данных с любыми общими схемами, которые у вас есть.) Я хотел бы сделать так, как было бы, если бы он был разработан без учета устаревших соображений.
Вам, очевидно, нужна таблица 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 может существенно сократить объем требуемой работы.
Ограничение на количество арендаторов
Я никогда не виделрекомендация ограничить количество арендаторов в мультитенантной структуре.Напротив, преимуществом мультитенантного подхода в является его масштабируемость.Сегодня вы можете легко создавать кластеры серверов баз данных или использовать облачные решения для беспрепятственного увеличения мощности оборудования при необходимости.
Интересующие ссылки