Я опубликовал довольно общий вопрос о внедрении мультитенантного решения с использованием очень специфических технологий в прошлом. Теперь у меня гораздо более конкретный вопрос, на который я надеялся получить какую-то информацию.
Для нашего мультитенантного приложения у нас есть требование экспортировать данные одного арендатора из одной базы данных в другую. Например, наша БД может содержать данные 10 арендаторов, но один из этих 10 арендаторов хочет иметь свой собственный экземпляр приложения (по каким-либо причинам, например, они требуют очень специфических настроек).
Поэтому я хочу написать «инструмент», который будет брать только данные для арендатора X и перемещать их в свою собственную базу данных.
Мы используем базу данных MySQL, а также последнюю версию ядра и аннотаций Hibernate.
Способ, которым мы реализовали мультитенантность, заключается в добавлении идентификатора арендатора во все наши таблицы / базовый класс, из которого расширяются все наши сущности.
Первоначально я думал, что я мог бы просто использовать что-то вроде этого:
mysqldump -uusername -ppassword database_name -w "tenant_id=1" > dump.sql
но, к сожалению, все @JoinTables не имеют tenant_id, поэтому это не получается.
У меня вопрос: есть ли у кого-нибудь хорошие идеи о том, как экспортировать данные одного арендатора и затем импортировать их в новую базу данных (которую, я думаю, я могу создать с помощью стандартного Hibernate SchemaExport)?
У меня была одна идея, но для ее правильной реализации мне понадобился бы Hibernate для создания моей схемы БД без каких-либо ограничений на нее, а затем я мог бы закачать данные, и тогда мне нужно было бы наложить ограничения на пост-импорт БД , Я понятия не имею, как заставить Hibernate не добавлять ограничения сначала, а потом делать это позже, поэтому, если у кого-то есть идея, пожалуйста, дайте мне знать.
Спасибо