我们计划在项目中使用带有Lucene的Hibernate Search,最终将不得不替换当前正在运行的应用程序。Hibernate搜索本身工作得很好,但是我对索引有一些疑问。我们的数据库中有许多旧数据,数据库工作人员在后台更改和添加数据,还有旧应用程序,该应用程序计划与新应用程序并行运行一段时间。如果只是旧数据,我可以在程序的第一次启动时运行一次索引,但是要同时获得旧应用程序和数据库工作者执行的更改,我需要有一个后台助手来更新索引定期地。有没有办法以令人满意的性能实现这一目标?
我本人也遇到过类似的情况,我们的解决方案是安排一个每晚的工作来运行索引重建。
我必须花一些时间来确保重建过程足够快,这可能需要进行一些研究,并在某些热实体和关键关系上启用Hibernate的二级缓存。
当然,这种方法仅在您的应用程序可以容忍稍微不同步的索引上工作到晚上下降时才有效。
其他人一直在通过JMS使用主/从配置,因此一个节点(主节点)每天重建索引的次数将超过一次:您可以指定需要重建索引的实体,从而可以限制在关键表上执行此类操作,或仅在旧版应用程序中实际执行过的操作。
通常,这样的“主”节点将仅重建索引并为从属服务器提供索引刷新,而Web请求将由从属服务器提供,因此可以限制主服务器上的开销,而不会影响Web服务器的性能。不要忘记在主节点上同时调整并行性和连接池,以免对数据库造成过多的负载:在这种情况下,您宁愿不对其进行调整以尽快完成,它的工作速度较慢。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句