2017-03-18 12 views
0

複数のテナントに対応し、非常に機密性の高いデータを格納するアプリケーションを構築しています。各テナントには複数のユーザーがいます。私のバックエンドスタックは、spring-boot + Hibernate5で構築されています。私はログイン時にテナントにユーザー名を関連付けるないか、スキーマごとのテナントパラダイムを使用しています提供Spring起動時のマルチテナント+ Hibernate5 - テナントごとのスキーマ

  1. :私はので、私は専門家のための2つの質問を持っているマルチテナントを処理するために冬眠したいですか?各テナントには独自のユーザーテーブルがありますので、どのテナントにユーザー名が属しているかをどのように知っていますか?
  2. 登録時に、 で新しいスキーマを作成する適切な方法は何ですか?
+0

IMHOテナントごとのスキーマはベストプラクティスではありません。代わりに、tenantId列を使用したスキーマの作成がより効果的になります。レコードがたくさんある場合、これは別の問題であり、パーティション分割、シャーディングまたはクラスタリングによって解決できます。 –

答えて

1

私が正しくあなたを理解していれば、私は次のように使用します。

  1. AbstractRoutingDataSource私は基本的にマルチテナントシステムのように同じことをするだろう、適切なデータソース
  2. を構築/発見します。スキーマの作成と進化を処理するには Liquibaseを使用してください。しかし、 liquibaseはターゲットスキーマを作成しません。テーブル などを作成するだけです。したがって、 の顧客プロビジョニングでJDBCを介していくつかのCREATE SCHEMAが必要になることがあります。
+0

答えをありがとう。最初の部分については、どのようにしてユーザー名をテナントIDに関連付けることができますか? –

+0

実際のデータソースを取得するには、decideCurrentLookupKeyメソッドとsetTargetDataSourcesメソッドを使用する必要があります。 – malejpavouk

関連する問題