Mongodb 每小时更新DB(mongo)的最佳方法?

Mongodb 每小时更新DB(mongo)的最佳方法?,mongodb,node.js,express,socket.io,Mongodb,Node.js,Express,Socket.io,我正在准备一个小应用程序,它将聚合我网站上用户的数据(通过socket.io)。我想每小时将所有数据插入我的monogDB 最好的方法是什么?setInterval(60000)似乎有点蹩脚:)例如,您可以使用它作为计划作业运行node.js应用程序 编辑: 在程序必须连续运行的情况下,setTimeout可能是少数几种可能的选择之一(实现起来非常简单)。否则,您可以将数据卸载到某些临时存储系统,例如redis,然后定期运行其他node.js程序来移动数据,但这可能会引入对其他DB系统的新依赖,

我正在准备一个小应用程序,它将聚合我网站上用户的数据(通过socket.io)。我想每小时将所有数据插入我的monogDB

最好的方法是什么?setInterval(60000)似乎有点蹩脚:)

例如,您可以使用它作为计划作业运行node.js应用程序

编辑:

在程序必须连续运行的情况下,setTimeout可能是少数几种可能的选择之一(实现起来非常简单)。否则,您可以将数据卸载到某些临时存储系统,例如redis,然后定期运行其他node.js程序来移动数据,但这可能会引入对其他DB系统的新依赖,并根据您的场景增加复杂性。在这种情况下,Redis还可以作为某种故障保护解决方案,以防您的主node.js应用程序意外终止并丢失部分或全部数据批。

例如,您可以使用它作为计划作业运行node.js应用程序

编辑:


在程序必须连续运行的情况下,setTimeout可能是少数几种可能的选择之一(实现起来非常简单)。否则,您可以将数据卸载到某些临时存储系统,例如redis,然后定期运行其他node.js程序来移动数据,但这可能会引入对其他DB系统的新依赖,并根据您的场景增加复杂性。在这种情况下,Redis也可以作为某种故障保护解决方案,以防您的main node.js应用程序意外终止并丢失部分或全部数据批处理。

为什么不直接用触发数据库写入的
curl
请求点击服务器?您可以将该命令放在每小时一次的cron作业上,并在本地端口上侦听。

为什么不直接用触发数据库写入的
curl
请求点击服务器呢?您可以将命令放在每小时一次的cron作业上,并在本地端口上侦听。

您应该实时聚合,而不是每小时聚合一次

我想看看BuddyMedia的这个演示,看看他们是如何进行实时聚合的。我正在为我的实时指标使用这种方法的改进版本,它工作得非常好


您应该实时聚合,而不是每小时聚合一次

我想看看BuddyMedia的这个演示,看看他们是如何进行实时聚合的。我正在为我的实时指标使用这种方法的改进版本,它工作得非常好


您可以让mongo存储上次复制数据的时间,每次收到请求时,您都可以查看上次复制数据的时间

或者您可以尝试设置间隔(checkRestore,60000),每分钟检查一次。checkRestore()将查询服务器,查看上次更新的时间是否超过一小时。有几种方法可以做到这一点

存储日期的一种简单方法是将其存储为date.now()的值(https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date)然后检查类似db.logs.find({lastUpdate:{$lt:Date.now()-6000000})的内容


我想我混淆了一些不同的解决方案,但希望类似的方法能奏效

您可以让mongo存储上次复制数据的时间,每次收到请求时,您都可以查看上次复制数据的时间

或者您可以尝试设置间隔(checkRestore,60000),每分钟检查一次。checkRestore()将查询服务器,查看上次更新的时间是否超过一小时。有几种方法可以做到这一点

存储日期的一种简单方法是将其存储为date.now()的值(https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date)然后检查类似db.logs.find({lastUpdate:{$lt:Date.now()-6000000})的内容


我想我混淆了一些不同的解决方案,但希望类似的方法能奏效

如果您使用的是Node,那么可以使用类似CRON的工具。它使用相同的CRON模式来处理重复的作业。

如果您使用的是Node,那么可以使用一个类似CRON的工具。它使用相同的CRON模式来处理重复的作业。

如果可以,将其设置为CRON作业可能是最简单的。如果可以,将其设置为CRON作业可能是最简单的。问题是,我的应用程序应该连续运行,因为它将聚合实时数据。所以我必须弄清楚如何写入前一个小时收集的数据。问题是我的应用程序应该持续运行,因为它会聚合实时数据。所以我必须弄清楚如何写入前一个小时收集的数据。