SQL DynamoDB 中的触发器替代方案
SQL Triggers alternative in DynamoDB
我在 table 中有一个列表属性,它是一个移动的 window。我希望在 DynamoDb 中创建一个触发器,这样每当将某些内容附加到列表时,它就会移动一个,删除最早的值。如果我使用 SQL,我会选择 create trigger
,但是 DynamoDb 呢?
AWS 在 this document. Basically you write a Lambda function to do what you want. However, in your example you would have to be careful not to create an infinite loop where DynamoDB is updated, Lambda is called and updates DynamoDB and then your Lambda is called again. But this post 中将其称为触发器,实际上将此设计模式称为数据库触发器。
Dynamo DB 没有 SQL 的“更新前”触发器。
DDB 的 Stream 功能,虽然经常被称为“更新后”触发器,但与真正的 RDMS SQL 触发器完全不同。
如果您真的必须使用 DDB,那么您只能使用自己的 API 实现所需逻辑的前端 DDB。
我想按照另一个答案的建议,您可能会仔细实施 DDB“触发器”lambda。但是请注意,您将为每次更新支付 2 次写入费用,而不仅仅是 1 次。此外,假设您希望列出最近的 10 个项目。您的应用有时必须准备好看到 11、12 或 13。由于“触发器”与实际的数据库写入是异步的。
我在 table 中有一个列表属性,它是一个移动的 window。我希望在 DynamoDb 中创建一个触发器,这样每当将某些内容附加到列表时,它就会移动一个,删除最早的值。如果我使用 SQL,我会选择 create trigger
,但是 DynamoDb 呢?
AWS 在 this document. Basically you write a Lambda function to do what you want. However, in your example you would have to be careful not to create an infinite loop where DynamoDB is updated, Lambda is called and updates DynamoDB and then your Lambda is called again. But this post 中将其称为触发器,实际上将此设计模式称为数据库触发器。
Dynamo DB 没有 SQL 的“更新前”触发器。
DDB 的 Stream 功能,虽然经常被称为“更新后”触发器,但与真正的 RDMS SQL 触发器完全不同。
如果您真的必须使用 DDB,那么您只能使用自己的 API 实现所需逻辑的前端 DDB。
我想按照另一个答案的建议,您可能会仔细实施 DDB“触发器”lambda。但是请注意,您将为每次更新支付 2 次写入费用,而不仅仅是 1 次。此外,假设您希望列出最近的 10 个项目。您的应用有时必须准备好看到 11、12 或 13。由于“触发器”与实际的数据库写入是异步的。