SpringBlock 1.3.3アプリケーションは、SpringデータMongoDB 1.8.4を使用してMongoDB(2.6 ou 3.2)のデータを維持します。SpringデータMongoDBを使用したコレクションベースのマルチテナンシー
マルチテナントをサポートする必要があります。私たちは、「コレクションベース」のマルチテナントを使用することを選択しました。つまり、各テナントには独自のコレクションセットがあります。たとえば、Articleエンティティの場合、コレクションは "{tenantName} _articles"です。
オリバーギールケは親切例えば使用Making spring-data-mongodb multi-tenantで実装を説明した:
@Document(collectionName = "#{tenantProvider.getTenantId()}_articles")
これは紙の上で非常にいいですが、私は二つの問題、1が主要なもの見られるような現実のアプリケーションに適用できていないようだ。
をIssue 1:私はそれを生きることができました。アプリケーションの起動時にSpringブートはデータベースにカスタムインデックス(@Indexed属性など)を持つエンティティのインデックスを作成させます。しかし、スタートアップ時には、 "現在のテナント"は存在しないため、Spring Dataは "_articles"などの無関係なコレクションを作成します。どうしたらこれを防ぐことができますか?
問題2(ここでは主要なprobleme):実行時のようなマルチテナントコレクションに作成されている「{tenantNameは} _articles」とカスタムインデックスなしを使用(別に「_id」でデフォルトのMongoDBインデックスから)。私は実行時に既に起動時に仕事をしたと考えているので、Springはインデックスを無視していると思われます。これは大きなパフォーマンス上の問題です。どうすればこの問題を解決できますか?
ありがとうございます。特定のテナントのインデックス再作成する方法が見つかり
このコードを書く場所は?または、このコードを書き込む場所を指定します。 – kamlesh0606
テナントを登録することができれば、このコードは登録プロセスに入れることができます。 –