Экспорт / импорт данных в спящем режиме для одного клиента

В прошлом я опубликовал довольно общий вопрос о реализации мультитенантного решения с использованием очень специфических технологий. Теперь у меня есть гораздо более конкретный вопрос, на который я надеялся получить некоторую информацию.

Для нашего мультитенантного приложения у нас есть требование экспортировать данные одного арендатора из одной базы данных в другую базу данных. Например, наша БД может содержать данные 10 арендаторов, но один из этих 10 арендаторов хочет иметь свой собственный экземпляр приложения (по каким-либо причинам, например, они требуют очень специфических настроек).

Поэтому я хочу написать "инструмент", который будет брать только данные для арендатора X и перемещать их в свою собственную базу данных.

Мы используем базу данных MySQL, а также последнюю версию ядра и аннотаций Hibernate.

Способ реализации мультитенантности заключается в добавлении идентификатора арендатора во все наши таблицы / базовый класс, из которого расширяются все наши сущности.

Первоначально я думал, что я мог бы просто использовать что-то вроде этого:

mysqldump -uusername -ppassword database_name -w "tenant_id=1" > dump.sql

но, к сожалению, все @JoinTables не имеют tenant_id, так что это не получается.

У меня вопрос: есть ли у кого-нибудь хорошие идеи о том, как экспортировать данные одного арендатора, а затем импортировать их в новую базу данных (которую, я думаю, я могу создать с помощью стандартного Hibernate SchemaExport)?

У меня была одна идея, но для того, чтобы реализовать ее должным образом, мне понадобится Hibernate для создания моей схемы БД без каких-либо ограничений на нее, а затем я смогу закачать данные, и тогда мне нужно будет наложить ограничения на пост-импорт БД. Я понятия не имею, как заставить Hibernate не добавлять ограничения сначала, а потом делать это позже, поэтому, если у кого-то есть идея, пожалуйста, дайте мне знать.

Спасибо

0 ответов

Другие вопросы по тегам