仅Solr与Solr / MySQL解决方案

时间:2011-10-04 13:29:45

标签: mysql database performance solr solrj

目前我有一个完全基于Solr的系统。这意味着,我将所有数据存储在Solr中(使用SolrJ),而不涉及其他数据存储。问题是,我遇到了一些性能问题。我想,它可能对MySQL中的存储有意义,然后将数据与Solr同步,例如DataImportHandler。因此,我对Solr索引和MySQL中的主要写入操作进行了读操作,有时在与Solr同步时只进行Solr-Writing操作。

问题是,我希望存储数亿个文档,如果MySQL / Solr有意义的话,我现在不知道。

还有其他更好的解决方案吗?也许Master-Solr用于写作和Solr-slaves用于阅读?

更新:我忘了说的是,即使在schema.xml更改的情况下,“在MySQL中存储数据”解决方案在我看来也很有用,因为我可以 - 在不关心Solr的自存数据的情况下提交所有数据。

2 个答案:

答案 0 :(得分:6)

使用相同的Solr实例进行读取和写入并不是优选的,因为写入期间Solr上的活动(使用提交和优化)会严重影响读取操作。

Master - Slave配置将是更好的方法,主要用于写入和从属为只读目的。
奴隶定期刷新Master的内容。 (所以会有一些延迟)
您始终可以通过添加多个从站进行缩放。

使用MySQL作为Master-Slave Solr的持久存储将是一种最佳方法 MySQL提供稳定的数据存储,可以防止索引损坏或更多会导致数据丢失的问题 使用dataimport处理程序,您可以使用增量更新轻松完成,但会有更多时间标记,以便在从属设备上显示最新数据。
使用此功能,您还可以使用索引交换进行完全刷新。

如果索引长大,可以维护并且对性能产生影响,您可能需要检查solr分片。

答案 1 :(得分:4)

我也考虑过同样的问题:将所有内容存储在mySql中的solr或stor中,并将索引存储在Solr中。

我决定采用第二种方式:在solr中存储MySQL和索引。

原因是:在MySql中处理数据(读写数据)要比Solr好得多。此外,许多工具都支持/可以从/向MySql导入/导出数据。 下一点:备份。备份MySql DB的方法比Solr索引要多得多。

当然,对于全文搜索,Solr比MySql好得多。所以我决定,每个人都应该在他最了解的地方工作。 对于您的信息:我在谈论一个中等指数:4GB的数百万份文件。

//编辑:不要忘记,有些功能需要在lucene(不仅仅是索引)中查看数据,例如突出显示。如果需要,您必须将文档存储在solr(附加)中。另一种方法是在客户端实现这些功能。 (我是这样做的)