gpt4 book ai didi

javascript - 链表 : or how to store a live qued-list properly

转载 作者:行者123 更新时间:2023-11-29 15:23:51 25 4
gpt4 key购买 nike

我正在为我们的内部生产开发调度程序。这个问题的故事是这样的:我们有传入的“作业”,被发送到各个站点的“机器”。我们将作业列表存储在 mysql 数据库中。我想为生产协调员创建一个界面:负责将作业转移到正确的机器上的人员 - 这将包含传入作业的列表以及代表该机器作业队列的每台机器的列表。

我们需要采取的一些行动:- 重新排序列表,无需大量写入 SQL 数据库 - 例如将作业放置在队列顶部而不是队列末尾的机器上,正确更新队列的其余部分(级联重新编号就是这样的)我试图避免)。

我担心的是可扩展性,如果我们获得 100000 个工作,或者如果我们大量增加机器数量。

我们已经考虑过并且仍在争论的一些事情:创建具有以下结构的表:jobkey、machineid、status、queposition。就 machineid 而言,询问的约束是唯一的。这对于任何数量的机器都有好处,但快速更新 que 将需要搜索每个机器 ID 的所有数据库,并且重新排序会不太干净。另一个想法是有一个 prekey 和 postkey 字段来模拟链接列表,其中 prekey 是最后一个队列条目的表键,而 post 将指向下一个。这可以解决一些问题,但可以把麻烦归结为显示队列。

这些似乎都不能完全解决问题。

这似乎是一个足够普遍的问题,我确信有一个很好的解决方案 - 并修改所述列表的顺序而不会发生冲突。使用 javascript、php 和 mysql。

最佳答案

拥有“队列位置”列的想法对我来说很有意义。 (继续并结合 machine-id 对该列建立索引。)然后,在查询数据库时,ORDER BY ... DESC 此队列位置列和其他一些列 这是有道理的......比如时间戳。

队列位置值不必是连续的,也不必是唯一的,一个简单的 select.. MAX() 查询可以告诉您当前的最高值(对于特定机器) )。只需更新您想要移至顶部的一行即可。

如果您确实预计会有少量的重新排序,则另一个简单的技巧是借鉴旧的 BASIC 编程时代并使用递增的队列位置值,例如 10 。这为您提供了未使用的值,如果您希望定位相当准确,则可以使用这些值。 (正如我所说,这些值不必是连续的,也不必是唯一的。)

关于javascript - 链表 : or how to store a live qued-list properly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59180074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com