0

我正在开发一个每天可以满足大约 100,000 次搜索的应用程序。我们可以安全地假设每天数据库中的更新/插入/删除数量大致相同。当前应用程序使用原生 SQL,我们打算将其迁移到 Hibernate 并使用 Hibernate Search。

由于数据库记录不断变化,我们需要启用自动索引。管理层担心自动索引可能导致的性能影响。

不可能有计划的批量索引,因为记录中的更改必须在更改后立即可供搜索。

我已经搜索过某种性能统计信息,但没有找到。

任何已经在 Hibernate Search 工作并面临类似情况的人都可以分享他们的想法吗?

谢谢您的帮助。

问候,

沙杜尔。

4

1 回答 1

0

它可能工作正常,但没有基线很难猜测。我每天进行更多搜索的经验,并且经过一些微调后效果很好,但是如果不尝试就不可能知道这是否适用于您的场景。如果正常调优失败并且 NRT 不能足够快地证明,您总是可以对索引进行分片,使用多主配置并插入分布式二级缓存,例如 Infinispan:所有组合架构都可以实现线性可扩展性,前提是您有设置它的时间和合理的硬件。

很难说您需要什么样的硬件,但可以肯定的是,它会比原生 SQL 解决方案更高效。我建议做一个 POC,看看你在单个节点上能走多远;如果您的查询类型非常适合 Lucene,您可能只需要一台服务器。请注意,Lucene 在查询中比在更新中快得多,因此,由于您估计您将拥有相同数量的写入和搜索,因此问题不太可能在于每秒搜索量,而是每秒写入(更新)和总数据(索引)大小。最新的 Hibernate Search 引入了 NRT 索引管理器,它非常适合此类用例。

于 2012-06-09T22:00:50.540 回答