在后端Node.js上安排大量任务
假设我有一个数据库(在后端Node.js上安排大量任务,node.js,neo4j,cron,scheduling,backend,Node.js,Neo4j,Cron,Scheduling,Backend,假设我有一个数据库(Neo4j,具体来说是Node.js后端),里面满是有开店和关门时间的商店(数以百万计)。我需要在适当的时间将每个数据库存储条目更新为打开或关闭。那么,以稳定和可扩展的方式构建这样一个系统的最佳/通常做法是什么 设置数百万个cron作业? 是否检查要在固定时间间隔内更改的条目? 第三方服务能否在特定时间呼叫我的后端进行更改 您要问的是如何权衡将信息写入数据库(可能有数百万个对象)以在将来进行查询时提高性能。这是一个由来已久的权衡,没有一个固定的答案适用于所有情况。这里的一切都
Neo4j
,具体来说是Node.js
后端),里面满是有开店和关门时间的商店(数以百万计)。我需要在适当的时间将每个数据库存储条目更新为打开或关闭。那么,以稳定和可扩展的方式构建这样一个系统的最佳/通常做法是什么
设置数百万个cron作业?是否检查要在固定时间间隔内更改的条目?
第三方服务能否在特定时间呼叫我的后端进行更改 您要问的是如何权衡将信息写入数据库(可能有数百万个对象)以在将来进行查询时提高性能。这是一个由来已久的权衡,没有一个固定的答案适用于所有情况。这里的一切都是权衡 一方面,应该不惜一切代价避免数以百万计的数据库写入,因为这是对数据库服务器所能做的最昂贵的事情 另一方面,必须进行大量效率非常低的查询,这两种情况都很难达到最佳状态 所以,它实际上归结为评估在折衷空间中你应该在哪里设置东西 以下是您会问自己的问题,以确定权衡的方向:
我不太清楚你所说的第三方服务到底是什么意思。无论您在做什么,您都可能不希望数据库优化代码在作为应用服务器的主node.js进程中运行。它应该是一个独立的应用程序/进程,可以使用与主node.js服务器不同的CPU。如果没有一些额外的信息,很难想出一个好的解决方案,尤其是neo4J、nodeJS或其他任何东西。为什么数据库以需要如此密集更新的方式表示打开/关闭?为什么不让每家商店以声明的方式,即周一至周五上午9点至下午5点,来保持营业时间?可以添加例外情况。(有趣的是,就在几年前,这是一个有趣的问题:)因为大多数商店都是在一小时或半小时内开店或关门的,所以您建议的解决方案将有一个数据库,除了每小时几秒钟之外,没有写活动,而此时数据库的大部分需要更新
考虑以更有效的方式进行预计算。或者按需计算任何给定的存储并缓存答案。如果存储打开/关闭时间提前知道,为什么每次打开或关闭时都必须将其写入数据库?为什么不能从数据库中获取存储时间并进行计算以确定它当前是打开的还是关闭的?然后,你不必更新数据库,除非计划的存储时间发生变化。完全同意@jfriend00,只有当我被要求确定检索时的信息时,我才会将flag
open=bool
完全设置为true。这实际上取决于您的用例。你能说得更具体一点吗,这有什么用?@TomHert我的例子似乎不是最好的,让我们假设在某个时候,我们应该将这个Store
对象从Store
转换为可供出租的物业,这就是我想要安排的。i、 e我将把neo4j节点的标签从Store
更改为Property
。我为什么要这么做?要在存储
搜索中保留空的属性
。但现在我在想梅