indexing - 如何使用 BatchGetItem 每次为 DynamoDB 中的多个键获取 10 条记录?
问题描述
用例:我收到来自不同客户的多个请求。因此,我需要将这些请求存储在数据库(最好是 DynamoDB)中,按照传入时间的顺序对它们进行排序,并同时为所有客户端获取 10 个集合。
例如:如果有 5 个客户端:C1、C2、C3、C4、C5 并且都在一个时间点发送 50 个请求,我将它们及其时间戳存储在数据库中。现在我只需要按时间戳顺序从所有客户端获取 10 个请求对象,而不是全部获取。所以,先进来的请求,需要先处理。
如何使用 DynamoDB GSI 和 BatchGetItem API 来实现这一点?还是有其他方法可以实现这一点?
解决方案
这是 SQS FIFO 队列的完美用例。这似乎是您最好的选择。
如果您真的必须使用您不会使用的 DynamoDB BatchGetItem
,那么您将使用Query
. 当您知道所需记录的键时,BatchGetItem
用于在一个请求中检索多个项目。使用查询,您可以指定分区键和可选的排序键,或排序键的函数。使用 DynamoDB 时遇到的最大问题是您需要确保只获取一次记录,因此您必须采取措施删除记录或以不被查询的方式更新记录再次。这一切都是可行的,但同样,SQS 更适合于此。
推荐阅读
- visual-studio - 禁用 Visual Studio 代码样式建议
- gnuplot - 删除 Gnu 图中的线点
- javascript - 垂直方向的图表仅显示 amCharts V4 中所有数据项的单个工具提示
- c# - 我想让应用程序启动时剪贴板有数字时按钮可见(xamarin)
- c# - 无法从 C# 中的 Active Directory 读取图像
- javascript - onCall firebase 函数上 firebase V9 中的 CORS 策略错误
- r - 按频率排序 facet_wrap 级别
- azure - Microsoft Graph API 添加“将组作为成员添加到其他组时出错”
- .net - 在 Visual Studio 2017 Mac 上安装扩展
- msbuild - 如果引用了特定项目或库,我可以强制 MSBuild 引发错误吗?