2

現在、私はSolrのみに基づいたシステムを持っています。つまり、他のデータストアを使用せずに(SolrJを使用して)すべてのデータをSolrに保存します。問題は、パフォーマンスの問題が発生することです。MySQLに保存してから、 DataImportHandlerなどを使用してSolrとデータを同期するのが理にかなっているのではないかと思いました。そのため、Solrインデックスの読み取り操作と、MySQLの主な書き込み操作があり、Solrと同期するときにSolr書き込み操作のみが行われることもあります。

重要なのは、何億ものドキュメントを保存する必要があることを期待していることですが、MySQL / Solrが理にかなっているのであれば、今はそうは思いません。

別のより良い解決策はありますか?たぶん、Master-Solrは書き込み用で、Solr-slavesは読み取り用ですか?

更新:私が言い忘れたのは、schema.xmlが変更された場合でも、「MySQLにデータを保存する」ソリューションが役立つ可能性があるということです。そうすれば、Solrの自己を気にせずにすべてのデータを再コミットできるからです。 -保存されたデータ。

4

2 に答える 2

6

書き込み中の Solr でのアクティビティ (コミットと最適化を含む) が読み取り操作に大きな影響を与えるため、読み取りと書き込みの両方に同じ Solr インスタンスを使用することは好ましくありません。

マスター - スレーブ構成はより適切なアプローチであり、マスターは主に書き込み用であり、スレーブは読み取り専用です。
スレーブは、マスターからのコンテンツで定期的に更新されます。(そのため、多少の遅延が発生します)
複数のスレーブを追加することで、いつでもスケーリングできます。

マスター/スレーブ Solr で MySQL を永続ストアとして使用するのが最善の方法です。
MySQL は安定したデータ ストアを提供し、データの損失につながるインデックスの破損やその他の問題からユーザーを保護します。
dataimport ハンドラーを使用すると、増分更新で簡単に実行できますが、最新のデータがスレーブに表示されるまでの時間が長くなります。
これにより、フル リフレッシュにインデックス スワッピングを使用することもできます。

インデックスが維持可能になるまで大きくなり、パフォーマンスに影響を与える場合は、solr シャードを確認することをお勧めします。

于 2011-10-04T14:27:20.640 に答える
4

また、同じ問題についても考えました。mySql の solr または stor にすべてを保存し、Solr にインデックスを保存します。

私は 2 番目の方法に進むことにしました。MySQL に保存し、solr にインデックスを作成します。

理由: MySql でのデータの処理 (データの読み取りと書き込み) は、Solr よりもはるかに優れています。また、MySql との間のデータのインポート/エクスポートは、すぐに使用できる多くのツールでサポート/可能です。次のポイント: バックアップ。MySql DB をバックアップするには、Solr インデックスよりもはるかに確立された方法があります。

もちろん、全文検索に関しては、Solr は MySql よりもはるかに優れています。だから私は、誰もが自分が最もよく知っている場所で働かなければならないと決めました. 参考までに、私は中程度のインデックスについて話している:数百万のドキュメントに対して4GB。

//編集: ハイライトのように、いくつかの機能は lucene で (インデックス化されているだけでなく) データを監視する必要があることを忘れないでください。これが必要な場合は、ドキュメントを solr に保存する必要があります (追加)。別の方法は、クライアント側でこれらの機能を実装することです。(私はこの方法でやりました)

于 2011-10-04T16:07:11.417 に答える