在将数据返回给用户之前,是否可以在scanning
DynamoDB表中订购结果?
在SQL
中,可以运行SELECT * FROM posts ORDER BY creationDate DESC
之类的查询。是否可以使用scan
(或使用query
执行此操作,但我认为这不会起作用,因为我不知道哈希键值{{1} }?
虽然可以从数据库中获取所有结果,然后然后对它们进行排序,但我希望有很多帖子。如果有很多帖子,则需要花费很多时间,因为我只想加载一定数量的帖子,直到用户决定加载更多帖子。
有没有办法按AWS DynamoDB
或range key
对结果进行排序?
我试图找到一个 hack 来解决这样一个事实:似乎无法订购结果,而不是寻找这样的事情:
local or global secondary index
除非它存在,尽管从我所看到的情况来看似乎不可能。
默认情况下,结果按哈希键排序,因此,我想将哈希键设置为项目创建日期,并使用范围键的UID,但AWS DynamoDB documentation 似乎警告不要这样做:
将哈希键设置为创建日期:
AWSDynamoDBScanInput.order = NSSortDescriptor(key: "creationDate", ascending: true)
和随机UID的范围键可以对帖子进行排序吗?
是否可以在scanning
DynamoDB表时订购结果?将创建日期(作为var creationDate: Int = Int(NSDate().timeIntervalSince1970)
)设置为哈希键,将随机UID设置为范围键吗?是否有(更好的) hacks 可用于解决Int
没有排序功能的事实?
答案 0 :(得分:1)
唯一的方法是查询索引。您可能不得不将全局二级索引添加到" hack"你正在尝试做什么,但这可能不是一个好的设计。它需要成为索引的原因是Dynamo按照范围的顺序存储哈希中的每个项目。因此,如果你有一个你知道的哈希(可能为每个具有相同值的文档添加一个属性并使其成为哈希键),那么它将按范围排序(你可以使你感兴趣的时间戳)。然后它将是有序的。你可能会遇到这方面的问题,但如果像你说的那样,你正在寻找一个 hack ,这应该可行。