按顺序将 SQS 队列中的数据插入 DynamoDB
Insert data inside SQS queue in order into DynamoDB
我们可以在一条 sqs 消息中有多行并插入它们以便 dynamodb 吗?例如,如果我按部门和内部队列有多个 sqs 队列,我有员工列表,这些员工具有员工 ID、部门 ID、名字、姓氏等属性,我应该按员工 ID 的升序迭代队列的内容并插入员工id, dept id, first name, last name 到 dynamodb table.
据我了解,您似乎希望员工数据在 Dynamodb 中按 ID 排序。
首先,SQS 不会对您的 demand/customization 进行排序。它确实提供了基于您插入消息的顺序的 FIFO(先进先出)队列。
即使 SQS 确实具有您想要的功能并且您可以按您喜欢的顺序将 message/data 插入 dynamodb,它也不能保证您在 dynamodb 中对数据进行排序并在查询结果中进行排序。
为了在 DynamoDB table 中对数据进行排序并反映在您的查询结果中,您需要使用排序键(范围属性)。
以下是您可以在 DynamoDB table 设计上尝试的几个选项。
- 部门 ID 作为分区键 + 员工 ID 作为排序键
使用此设置,您可以在查询时在一个部门内对员工数据进行排序。
- 创建一个名为“everyone”的attribute/column,插入记录时将值设置为1。然后就可以创建GSI(Global Secondary Index),Everyone作为partition key,employeeId作为sort key。
使用此设置,您的所有员工数据都按员工 ID 排序,而不考虑部门 ID。如果您的 GSI 大小低于几 GB,它应该可以正常工作。
此外,您可以将选项 1 和选项 2 组合在一起,以在公司级别和部门级别归档分类员工。
我们可以在一条 sqs 消息中有多行并插入它们以便 dynamodb 吗?例如,如果我按部门和内部队列有多个 sqs 队列,我有员工列表,这些员工具有员工 ID、部门 ID、名字、姓氏等属性,我应该按员工 ID 的升序迭代队列的内容并插入员工id, dept id, first name, last name 到 dynamodb table.
据我了解,您似乎希望员工数据在 Dynamodb 中按 ID 排序。
首先,SQS 不会对您的 demand/customization 进行排序。它确实提供了基于您插入消息的顺序的 FIFO(先进先出)队列。
即使 SQS 确实具有您想要的功能并且您可以按您喜欢的顺序将 message/data 插入 dynamodb,它也不能保证您在 dynamodb 中对数据进行排序并在查询结果中进行排序。
为了在 DynamoDB table 中对数据进行排序并反映在您的查询结果中,您需要使用排序键(范围属性)。
以下是您可以在 DynamoDB table 设计上尝试的几个选项。
- 部门 ID 作为分区键 + 员工 ID 作为排序键
使用此设置,您可以在查询时在一个部门内对员工数据进行排序。
- 创建一个名为“everyone”的attribute/column,插入记录时将值设置为1。然后就可以创建GSI(Global Secondary Index),Everyone作为partition key,employeeId作为sort key。
使用此设置,您的所有员工数据都按员工 ID 排序,而不考虑部门 ID。如果您的 GSI 大小低于几 GB,它应该可以正常工作。
此外,您可以将选项 1 和选项 2 组合在一起,以在公司级别和部门级别归档分类员工。