当前位置 : 主页 > 网页制作 > Nodejs >

node.js – 何时将数据库用于作业队列是有意义的?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我正在设计一个内部公司网站,用户可以在其中提交作业进行计算.我的设计中的一个重要因素是将作业保留在队列中直到完成,即使系统出现故障. 互联网似乎反对这个想法,因为它“不是
我正在设计一个内部公司网站,用户可以在其中提交作业进行计算.我的设计中的一个重要因素是将作业保留在队列中直到完成,即使系统出现故障.

互联网似乎反对这个想法,因为它“不是真正的数据库的目的”,更适合像Redis这样的键/值存储(或者使用Redis的作业队列,比如Kue for Node.js).我想我得到的是,这个设计的目的是不会像在作业队列中找到的那样,通过对相当瞬态数据的读/写来使数据库负担过重.在我的用例中虽然数据库使用率很低,但数据库提供的数据持久性似乎是我在这里寻找的关键功能.

在我的阅读中,我发现一些键/值存储(如Redis)具有持久性功能,但它并不是真正构建的,以确保在系统出现故障时所有数据都是可恢复的.

我在这里遗漏了什么或者这听起来是对的吗?

In my reading I’ve found that some key/value stores, like Redis, have
a persist function but it’s not really built to make sure all data is
recoverable in case the system goes down.

在Redis中,使用后台线程将数据从内存持久保存到磁盘.实际上,系统关闭不会损坏您的数据库,但问题是系统可能会在快照到磁盘之前或期间关闭,并且您将丢失在上次成功快照之后创建的所有数据.

如果您可以确定您的Redis服务器将在99.9%的时间内启动并运行,这不是一个大问题,但无论如何,问题仍然存在.

在一天结束时,我最好的建议是你应该使用正确的工具来完成工作:一个通用数据库,无论是NoSQL还是SQL,都不是为了排队工作.使用它已经像RabbitMQ这样做的现有工具.

网友评论