我试图找出在 sql 数据库中实现处理队列机制的最有效和可扩展的方法。简而言之,我有一堆带有相关“反向链接”统计信息的“域”对象。我想有效地弄清楚哪些域需要处理其反向链接。
域表:id、domainName
反向链接表:id、domainId、count、checkedTime
Backlinks 表有许多记录(以保留历史记录)到一个域记录。我需要有效地选择要处理其反向链接的域。这可能意味着最近 checkTime 的 Backlinks 记录在过去已经足够远,或者域记录根本没有 Backlinks 记录。域需要按多种因素进行排序,包括按最旧的checkedTime 排序。
有多个“阅读器”处理域。如果同一个域被处理两次,这不是什么大不了的事,但这是对 CPU 周期的浪费。
工作人员花费不确定的时间来处理域。我宁愿有一些备份,因为结帐会“过期”,而不是要求工作进程在完成时明确“检查”记录,以防工作人员因某种原因失败。
这里的大问题是扩展。从一开始,我就可以轻松拥有大约 200 万个域,而且这个数字每天都在增长。这意味着我的反向链接历史也会快速增长,因为我希望在某些情况下每天处理,而在其他情况下每周处理每个域。问题变成了,找到需要反向链接处理的域的最有效方法是什么?
谢谢你的帮助!