mysql - MySql 和 Node.js 中的批处理

标签 mysql database node.js batch-processing

我有一组 100 个 Rss 链接,我每 5/30/45 分钟解析一次。 因此,大多数时候收到的记录可能是相同的,但肯定可能会添加一些额外的记录,因此它可能会有所不同。

数据库中的记录不应重复(无重复记录)。 如果该记录已存在,则检查该记录是否相同,如果不同则更新,否则拒​​绝,如果不存在则退出。

可能的方式:

  1. 从循环中的node.js 中不断检查并插入,这确实会杀死应用程序,因为有更多记录。
  2. 编写一个存储过程。
  3. 批处理。

我对批处理一无所知,所以如果有人可以分享有关mysql中批处理的信息。如何使用一些示例代码上传批量数据,这将非常有帮助。

最佳答案

如果像常规 RSS 源一样,您的源仅添加新记录而不更改现有记录,我认为直接的解决方案是:

  1. 从 MySQL 数据库检索此 Feed 的最新存储记录

  2. 浏览 RSS 源中的记录,从最近的记录开始,然后向后移动

  3. 将提要中的记录与您从 MySQL 数据库检索到的记录进行匹配。如果匹配,则停止浏览提要并将比该记录更新的记录添加到数据库中。

根据更新频率,这不会让您的应用在每个 Feed 中长时间忙碌。

另一方面,如果您想考虑现有记录中的编辑,您可以:

  • 在加载数据时使用流立即解析和异步处理数据。

  • 如果提要的大小不是很大,您可以将记录解析为数组,然后使用队列逐一处理它们。不过,如果您的 Feed 相对较大,那么内存可能是一个问题。

关于mysql - MySql 和 Node.js 中的批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32865548/

相关文章:

node.js - set/add方法不是sequelize Node js的函数

php - 显示来自两个表的信息 php?

php - 从第一个表搜索和从第二个表搜索

mysql - 小复杂的 Mysql 更新

c# - 无法填充 DataSet 但 MySqlCommand 工作正常

javascript - 使用 connect.query() 在 nodejs 中查询 url

node.js - 对于服务器端 meteor ,为什么没有定义 "module"?

mysql - Laravel Eloquent 地使用数据透视表连接两个表

数据库卡在恢复状态

mysql - 如何查找状态更改 MySQL 的时间差