過去に、非常に特殊なテクノロジーを使用したマルチテナント ソリューションの実装について、かなり一般的な質問を投稿しました。私は今、私が何らかの意見を得ることを望んでいた、より具体的な質問をしています。
このマルチテナント アプリケーションでは、1 つのテナントのデータをあるデータベースから別のデータベースにエクスポートする必要があります。たとえば、DB に 10 テナントのデータが含まれているとしますが、これらの 10 テナントの 1 つがアプリケーションの独自のインスタンスを持ちたいと考えています (何らかの理由で、非常に具体的なカスタマイズが必要な場合など)。
したがって、基本的には、テナント X のデータのみを取得し、それを独自のデータベースに移動する「ツール」を記述できるようにしたいと考えています。
MySQL データベースと最新バージョンの Hibernate コアとアノテーションを使用しています。
マルチテナンシーを実装した方法は、基本的に、すべてのテーブル/すべてのエンティティが拡張される基本クラスにテナント ID を追加することです。
当初は、次のようなものを使用できると考えていました。
mysqldump -uusername -ppassword database_name -w "tenant_id=1" > dump.sql
残念ながら、すべての @JoinTables には tenant_id がないため、これは失敗します。
私の質問は次のとおりです。単一のテナントのデータをエクスポートしてから、これを新しいデータベースにインポートする方法について誰か良いアイデアがありますか (標準の Hibernate SchemaExport を使用して作成できると思います)。
私には1つのアイデアがありましたが、それを適切に実装するには、Hibernateに制約なしでdbスキーマを作成する必要があり、データを送り込むことができ、dbポストインポートに制約を加える必要があります。最初に Hibernate に制約を追加せず、後でそれを行う方法がわかりません。誰かアイデアがあれば教えてください。
ありがとう