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