高层次的需求:从dynamoDB列表中的数据类型删除前几个条目
- 有可能是数以百万计的用户
- 任何用户可能喜欢的其他用户
- 用户的位置跟踪数据需要存储的。最多100个最近的数据点必须被存储。
我想用Dynamo DB来实现它,通过以下列格式存储数据(使用NOSQL的动机是检索会很快,因为在一个得到我会得到整个数据):
{
"userID" : 2323423,
"favs" : [
userIDA,
userIDB,
...
],
"lt" : [
{"timestamp1" : "coordinate1"},
{"timestamp2" : "coordinate2"},
...
]
}
userID是主键。
查询要求
- 加入收藏夹删除的应该是可能的。
- 一束新的时间戳的< => GPS位置对能来,这是我需要送入该用户的“LT”的数据。由于有100个LT数据点的限制,我还需要删除最老的数据点。
我很确定(1)使用列表数据类型上的添加/删除API直接转发。 如何解决查询(2)?如果UPDATE查询本身以某种方式遍历所有对象并删除旧对象,那将是最好的。我读过Dynamo DB理解的列表中的索引是整数格式的,那么我们可以利用它吗?列表中的元素是否始终从0到N编制索引?如果是这样,我可以从数组的开头删除适当数量的元素。有什么办法可以做到吗?
我打开使用不同的数据模式,但请让我知道整个推理和如何可以得到解决。
感谢。另一个查询是否有可能从“lt”列表中删除旧条目,如果其中的每个条目都是Map with Key值对的时间戳和坐标? { “时间戳”:23423432434, “坐标”:“2.34435,0.3342343” } 因此,通过扫描表中,“LT”,其中时间戳比一些旧的价值里面那些列表条目删除? – Ouroboros
它绝对有帮助。你能否让我知道它是否可以在没有条件表达式的情况下将元素添加到列表中,并且一次删除使用条件表达式列表中的陈旧条目?我不害怕,只是想确认。我不想最终编写一个执行扫描的cron,并删除陈旧的条目(不会太多)。我可以保留100个数据点左右的位置跟踪。希望你能帮忙。 – Ouroboros
只是为了添加到我以前的评论,我可以运行一个查询来追加另一个坐标条目到我的位置跟踪“lt”列表。有没有办法让我可以删除与条件表达式匹配的列表中的所有条目?它可以,如果我不得不单独运行此查询。我的动机是删除时间戳已过期(超过2天)或其他类似内容的“lt”列表的陈旧条目。 – Ouroboros