2016-11-11 13 views
0

私は基本的に同じテーブルを持つ各アカウントのデータベースを持つSaaSで作業しています。すべてのデータベースを個別に索引付けする最良の方法は何ですか?私は同じサーバー内の各データベースに対して異なるsolrインスタンス(異なるポート)を設定することを考えていましたが、サーバー上では難しいかもしれません。だから、私は次に何をすべきか疑問に思っています。私はsolrのドキュメントには何の役に立つアイデアも見つけていません。皆さんが助けてくれますか?前もって感謝します。システム内の異なるアカウントのSolr

答えて

2

すべてのテナントのデータを1つのコレクションに保存すると、おそらくスキーマにいくつかの変更が加えられ、すべての顧客に対して一度だけ行うと簡単になるため、最初は簡単になります。 このシナリオのマイナス点として、関連性のない多数のデータがまとめられており、常にテナント(クライアント)IDのフィルタクエリを使用する必要があります。

最初に、同じSolrサーバー上の各テナントのコレクションを作成するとどうなりますか?テナントのデータを混在させないで、基本的に必要な機能を実現します。 このシナリオでは、リレーショナルデータベースインスタンスで発生するため、スキーマの変更を同期させておく必要があります。

リレーショナルデータベースの場合は、テナントデータベースごとに適用された変更をバージョン化するために使用できるflywayまたはliquibaseのようなツールがあります。

Solrの場合、AFAIKはこのようなツールではありませんが、Solr Schema APIからプログラムでスキーマの変更を適用できます。スキーマAPIを使用して実行できない詳細な変更が必要な場合は、各コレクションのschema.xmlファイルを更新バージョンに置き換えて、solrサーバーを再起動します。

覚えておく必要があるのは、下位互換性です。いずれかのデータベース(リレーショナルDBまたはソル)に変更を加えた場合は、リレーショナルデータベース/ソルスキーマ構造で実行する最新の更新プログラムで古いコードを引き続き使用する必要があることを考慮する必要があります。

+0

私は、テナントごとのコレクションを持っているのが実際には最良の方法だと思います。私はまた、フライウェイと液体ベースを見ていきます。助けを借りてありがとう@marius_neo。 – Supwr

関連する問題