2012-05-18 103 views
0

我正在开发一个应用程序,每天迎合约10万次搜索。我们可以安全地假设每天数据库中的更新/插入/删除数量相同。当前的应用程序使用本机SQL,我们打算将其迁移到Hibernate并使用Hibernate Search。休眠搜索自动索引

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

由于更改记录中的更改一旦发生更改就必须可用于搜索,因此不可能有预定的批量索引。

我搜索了一些性能统计数据,但没有找到。

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

感谢您的帮助。

Regards,

Shardul。

回答

0

它可能正常工作,但没有基线很难猜测。我有更多的搜索/日常经验,经过一些微调,效果很好,但不可能知道这是否适用于您的场景,而无需尝试。 如果正常调整失败并且NRT不能够快速证明,您可以总是对索引进行分片,使用多主配置并插入分布式二级缓存,如Infinispan:所有组合的体系结构都可以实现线性可伸缩性,只要您有时间来设置它和合理的硬件。

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