Amazon dynamodb 带DynamoDB的有序任务列表
我正在考虑在上面写一个排队系统 发电机B。这与SQS或后台处理不同。信息技术 是员工需要处理的事情的有序列表。有两个名字 包含较大系统中其他对象ID的队列。这 系统的一部分仅表示队列方面 商业模式是这样运作的。一个对象进入系统 并将其添加到给定队列中。一个雇员偷东西 排队。将给定项移动到工作集中的 指定时间。如果员工在指定时间之前创建任务 任务已完成并从系统中删除。如果不是的话 从工作集中删除并添加回主队列。 有多名员工同时从队列中取出物品。 这是真实的人类时间。该系统还需要支持 执行大小操作。这样可以显示总作业数 在UI中 我在考虑DynamoDB,因为这是最关键的过程 在公司里。DynamoDB具有保证的性能和可扩展性。 我们现在有一个基础设施问题,因为独立的系统 没有建立在满足其需求的基础设施之上。所以我 到了这里 我以前玩过DyanmoDB,但只玩过玩具。这是 真正的交易。我不知道该如何采取这种商业模式 并映射到DynamoDB。天真的做法是采用一份文件 像这样:Amazon dynamodb 带DynamoDB的有序任务列表,amazon-dynamodb,was,Amazon Dynamodb,Was,我正在考虑在上面写一个排队系统 发电机B。这与SQS或后台处理不同。信息技术 是员工需要处理的事情的有序列表。有两个名字 包含较大系统中其他对象ID的队列。这 系统的一部分仅表示队列方面 商业模式是这样运作的。一个对象进入系统 并将其添加到给定队列中。一个雇员偷东西 排队。将给定项移动到工作集中的 指定时间。如果员工在指定时间之前创建任务 任务已完成并从系统中删除。如果不是的话 从工作集中删除并添加回主队列。 有多名员工同时从队列中取出物品。 这是真实的人类时间。该系统还需要支持 执行大小操作。
{
"queue": "high",
"jobs": [1,2,3,4,5,6]
}
Hash Range Job Task
high 1 55 328
low 2 15 23871
medium 1 12 38173
只需将其保存在jobs表中即可。我说天真是因为这会
正在浪费DynamoDB的性能能力,因为
吞吐量只需通过几个键(有~3个队列
实际上)用于所有读写操作。不幸的是我不能来
拿出一个完整的解决方案
我的想法是使用一个复合哈希键和一个表来存储
所有排队的任务。队列将包含哈希和作业位置
用于范围键。比如说:
{
"queue": "high",
"jobs": [1,2,3,4,5,6]
}
Hash Range Job Task
high 1 55 328
low 2 15 23871
medium 1 12 38173
等等。这将在整个表中分配读取。得到
队列中的第一项是对queue
进行查询,然后
按范围排序
然后拉出第一项。他在一家公司工作
类似的方式
我认为,除了散列,工作集将以类似的方式工作
将是类似于队列.job
的作业。通过这种方式,一个get
请求
可以在表格中选择单个项目。作业
表实际上可能有相同的要求
我关心的是保持工作表中的一切有序。插入
新项目将使用范围键的count+1
。我不确定
这在实践中是如何起作用的。我认为问题在于队列大小
波动。工作在开始时必须是可重新获得的
也如果他们没有及时从工作组中删除,他们必须
走到一般队列的前面。这可以通过使用0
射程
有人在DynamoDB上实现过类似的东西吗
我的主意是彻底洗猪?如果是,请告诉我。我有机会
更新业务关键型系统并希望实现这一目标
因为我们现在有很多问题,所以非常稳定和快速。当您需要更改作业顺序时(比如想将最后一个任务移动到第二个位置),您当前的方法会导致需要更改许多项的问题
另一种可能是有两个表-一个用于作业详细信息,另一个用于订单
作业详细信息:哈希(作业ID/UUID)、作业详细信息(其他属性)
作业队列:散列(员工/所有者id),散列(“高/低”),{jobid1,jobid2…}(这是一个字符串JSON)
您不能将集合用于工单,因为它再次是未排序的。表2是否与我所说的关于在少量密钥上创建大吞吐量的内容相反?另外,如何使用您的模型获取指定队列中的所有任务?编辑:不需要重新排序。在我的模型中插入position0
就足够了。因为第二个表的哈希键是employee id,所以访问权限是分布式的。如果不需要重新排序,可以考虑使用负值键。从零开始,如果在此之前需要插入-1,-2,然后继续。为什么要使用员工/所有者id?你加了什么?我不需要为给定的人检索任务,只需要检索给定队列中的任务——或者这是我工作集思想的实现吗?是的,这是工作集部分。最终一个任务被分配给一个人,所以我将它与那个人的id保持关联。