我有一组 100 个 Rss 链接,我每 5/30/45 分钟解析一次。 因此,大多数时候收到的记录可能是相同的,但肯定可能会添加一些额外的记录,因此它可能会有所不同。
数据库中的记录不应重复(无重复记录)。 如果该记录已存在,则检查该记录是否相同,如果不同则更新,否则拒绝,如果不存在则退出。
可能的方式:
- 从循环中的node.js 中不断检查并插入,这确实会杀死应用程序,因为有更多记录。
- 编写一个存储过程。
- 批处理。
我对批处理一无所知,所以如果有人可以分享有关mysql中批处理的信息。如何使用一些示例代码上传批量数据,这将非常有帮助。
最佳答案
如果像常规 RSS 源一样,您的源仅添加新记录而不更改现有记录,我认为直接的解决方案是:
从 MySQL 数据库检索此 Feed 的最新存储记录
浏览 RSS 源中的记录,从最近的记录开始,然后向后移动
将提要中的记录与您从 MySQL 数据库检索到的记录进行匹配。如果匹配,则停止浏览提要并将比该记录更新的记录添加到数据库中。
根据更新频率,这不会让您的应用在每个 Feed 中长时间忙碌。
另一方面,如果您想考虑现有记录中的编辑,您可以:
在加载数据时使用流立即解析和异步处理数据。
如果提要的大小不是很大,您可以将记录解析为数组,然后使用队列逐一处理它们。不过,如果您的 Feed 相对较大,那么内存可能是一个问题。
关于mysql - MySql 和 Node.js 中的批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32865548/