我正在着手一个新项目,并将使用DynamoDB作为主数据源。它所做的许多事情都完美地满足了需求,但有几个例外。
这些都是UI的排序和分页需求。用户可以按8-10个不同列的任意位置对数据进行排序,20-30k+行的结果集应该被分页。
根据我对DynamoDB的了解,按所有这些列进行排序的唯一方法是通过各种额外的索引公开那么多排序关键字,而这似乎是对这些概念的滥用。如果我不打算使用DynamoDb查询对数据进行排序,我也不能在那里进行分页。
所以我的问题是,一旦我有了要分页和排序的数据,最快的方法是什么?我是否应该将结果集移动到Aurora中,然后使用SQL进行排序和分页?我曾经考虑过导出到S3,然后利用像雅典娜这样的东西来进行分页和排序,但这个工具似乎真的适用于比这更大的数据集。还有其他选择吗?
发布于 2020-02-07 10:54:37
一种选择是复制数据并为每个排序选项存储一次数据,每个版本的记录在排序关键字中具有不同的数据。如果您对最终的一致性没有意见,那么您可以通过使用一个lambda来实现这一点,该lambda读取DynamoDB流,并在插入/更新/删除主记录时插入/更新/删除排序的记录。
发布于 2020-02-07 23:05:00
排序、分页和返回20-30K的记录不是Dynamo的强项……
为什么不一开始就把数据存储在Aurora中呢?
根据数据的不同,Elasticsearch可能是更好的选择。甚至可以看看红移。
编辑
如果你以前没见过这个..。

https://stackoverflow.com/questions/60106419
复制相似问题