我们计划在项目中使用Hibernate Search和Lucene,最终必须替换当前正在运行的应用程序。 Hibernate搜索本身运行得很好,但我对索引有一些疑问。我们的数据库中有很多遗留数据,数据库工作者在后台更改和添加数据,以及计划与新应用程序并行运行一段时间的旧应用程序。如果它只是关于遗留数据,我可以在程序的第一次启动时运行一次索引,但是为了获得旧应用程序和数据库工作程序执行的更改,我需要有一个后台帮助程序来更新索引定期。有没有办法以令人满意的表现来实现这一目标?
答案 0 :(得分:0)
我自己也有类似的情况,我们的解决方案是安排一个夜间工作,这将完成索引重建。
我不得不花一些时间确保重建过程足够快,这可能需要一些研究,并在一些热门实体和关键关系上启用Hibernate的二级缓存。
当然,这种方法只有在您的应用程序能够容忍在夜间降临之前处理稍微不同步的索引时才有效。
其他人一直在使用JMS上的主/从配置,因此一个节点(主服务器)将每天重建索引的频率高于一天:您可以指定哪些实体需要重建索引,以便您可能能够限制关键表格上的此类操作,或仅限于遗留应用程序实际触及的那些操作。
通常,这样的“主”节点将仅重建索引并为从属服务器提供索引刷新,而Web服务器将由从属服务器提供服务,从而可以限制主服务器上的开销,而不会对Web服务器性能产生影响。不要忘记调整主节点上的并行性和连接池,以免它对数据库造成太大负担:在这种情况下,不要将其调整为尽快完成,您更愿意它工作得更慢。