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