在我们的一个应用程序中,我们需要保存一些简单的表格数据,并且我们需要能够对其中一列执行用户端自动完成操作。
我们最初想到的解决方案是将MySQL与Solr相结合来实现这一点(MySQL用于保存数据,而Solr仅用于保存分词后的列并返回id作为结果)。但最近发生了一些不愉快的事情(开发人员开始将一些数据存储在Solr中,因为MySQL表和对其进行的操作都是Solr无法提供的),我们想也许我们可以将它们合并在一起并消除其中之一。
所以我们必须要么:(1)将所有数据移动到Solr中(2)使用MySQL进行自动补全
(1)听起来很糟糕,所以我尝试了(2),我从MySQL中加载了该列的数据,禁用了MySQL和Solr上的所有缓存,编写了一个微小的Web应用程序,能够在两个数据库上执行非常相似的查询[1],并在本地环境中启动了一些JMeter场景来测试两者。结果显示Solr具有2.5-3.5倍的优势,但我认为这些结果可能是完全错误的和容易出错的。
那么,您对以下问题有何建议:
1.正确地基准测试这两个系统,我认为您需要在JVM上提供与MySQL相似的环境。 2.设计这个系统。
感谢您提供任何线索。
[1] 在MySQL上使用
我们最初想到的解决方案是将MySQL与Solr相结合来实现这一点(MySQL用于保存数据,而Solr仅用于保存分词后的列并返回id作为结果)。但最近发生了一些不愉快的事情(开发人员开始将一些数据存储在Solr中,因为MySQL表和对其进行的操作都是Solr无法提供的),我们想也许我们可以将它们合并在一起并消除其中之一。
所以我们必须要么:(1)将所有数据移动到Solr中(2)使用MySQL进行自动补全
(1)听起来很糟糕,所以我尝试了(2),我从MySQL中加载了该列的数据,禁用了MySQL和Solr上的所有缓存,编写了一个微小的Web应用程序,能够在两个数据库上执行非常相似的查询[1],并在本地环境中启动了一些JMeter场景来测试两者。结果显示Solr具有2.5-3.5倍的优势,但我认为这些结果可能是完全错误的和容易出错的。
那么,您对以下问题有何建议:
1.正确地基准测试这两个系统,我认为您需要在JVM上提供与MySQL相似的环境。 2.设计这个系统。
感谢您提供任何线索。
[1] 在MySQL上使用
SELECT column FROM table WHERE column LIKE 'USER-INPUT%'
,在Solr上使用 column:"USER-INPUT"
。