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