gpt4 book ai didi

mysql - Solr 与 MySQL 的自动完成性能对比

转载 作者:可可西里 更新时间:2023-11-01 07:46:29 25 4
gpt4 key购买 nike

在我们的一个应用程序中,我们需要保存一些普通的表格数据,并且我们需要能够对其中一列执行用户端自动完成。

我们提出的最初解决方案是将 MySQL 与 Solr 结合起来以实现此目的(MySQL 用于保存数据,而 Solr 仅用于保存标记化的列并返回 ID 作为结果)。但是最近发生了一些不愉快的事情(开发人员开始将一些数据存储在 Solr 中,因为 MySQL 表和对它所做的操作是 Solr 无法提供的)我们认为也许我们可以将它们合并在一起并消除两者之一。

所以我们必须:(1) 将所有数据移动到 Solr (2) 使用 MySQL 进行自动完成

(1) 听起来很糟糕,所以我尝试了 (2),我开始将单个列的数据加载到 MySQL 中,禁用 MySQL 和 Solr 上的所有缓存,编写了一个能够执行非常相似的小型 webapp在两个数据库上查询 [1],并在本地和类似环境中针对这两个数据库启动了一些 JMeter 场景。结果显示 Solr 有 2.5-3.5 倍的优势,但是,我认为结果可能完全错误并且容易出错。

那么,您有什么建议:

  1. 正确地对这两个系统进行基准测试,我相信你需要为 JVM 提供类似 [to MySQL] 的环境。
  2. 设计这个系统。

感谢任何线索。

[1] MySQL 上的 SELECT column FROM table WHERE column LIKE 'USER-INPUT%' 和 Solr 上的 column:"USER-INPUT"

最佳答案

我最近将一个网站从从数据库 (postgres) 获取数据改为从 Solr 获取所有数据。令人难以置信的速度差异。我们还有澳大利亚郊区(大约 15K)的自动完成功能,它会在几毫秒内找到它们,因此 ajax 自动完成功能(我们使用 jQuery)几乎可以立即使用react。

所有更新都是针对原始数据库完成的,但我们的网站是一个阅读量最大的网站。我们使用触发器在记录更新时触发事件,并在记录的 Solr 中生成重新索引。

另一个大的速度改进是预缓存呈现项目所需的数据 - 即我们对数据进行非规范化并在 Solr 索引时预先计算大量内容,因此呈现对于网络人员来说很容易并且超快。

另一个优势是,如果由于某种原因需要使数据库脱机,我们可以将我们的网站置于只读模式 - 我们只需回退到 Solr。至少网站没有完全崩溃。

为了速度和可扩展性,我建议尽可能多地使用 Solr。

关于mysql - Solr 与 MySQL 的自动完成性能对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7300378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com