1

過去に、非常に特殊なテクノロジーを使用したマルチテナント ソリューションの実装について、かなり一般的な質問を投稿しました。私は今、私が何らかの意見を得ることを望んでいた、より具体的な質問をしています。

このマルチテナント アプリケーションでは、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 に制約を追加せず、後でそれを行う方法がわかりません。誰かアイデアがあれば教えてください。

ありがとう

4

0 に答える 0