我有一个MySQL表,所有用户可以插入到。表格中的一个字段是该行匹配的solr文档的总数,称之为total results
。MySQL和Solr的一致性,插入到任一
在插入的REST api代码中,我使用solr客户端来查找新行匹配的文档的总数。我更新该字段,然后返回已完成的资源。很简单,虽然我宁愿以某种方式通过MySQL自动触发此更新。
更大的问题是,在向solr插入新文档或删除旧文档时,现在没有比执行与REST api代码具有相同逻辑的shell脚本更好的计划,并且运行total results
更新每一行。
我的选择,在我看来,是这些:
1)更新data_import
毕竟行SOLR,一个接一个。这个表格大约有150万行,所以需要一段时间。
2.)总共放弃数据库中的字段,并且每次检索资源时从solr获取每个单独的总和。 (在我的情况下,这是一个非常坏的主意,因为用户在以GET/api/resource作为列表登录时从该表检索20k行)
3.)找到一种方法来确定哪些特定的MySQL表行有新solr文档会影响并限制对这些行的更新。这基本上涉及逆转搜索过程。
解决方案1和3基本上要求我编写一个脚本来管理solr data_import
以及将MySQL行'total results
字段更新为单个进程。我可以做到这一点,但我现在可以利用一些见解来了解如何最好地管理这些问题。
那么,你会如何保持一致性?
查看Alfresco如何处理问题,“最终”和“事务性”的一致性,也许它会帮助你。 – Lista