首页 > 解决方案 > 在 DynamoDB 中保存新行,然后列出所有具有最终读取一致性的项目?

问题描述

所以想象一下,我们有一个 Web 前端和 API Gateway/Lambda/DynamoDB 后端。

用户导航到“添加项目”页面,在其中键入新项目的名称并单击“保存”,然后导航到项目列表(其中应该包括他们刚刚添加的项目)。

因为 DynamoDB 中的读取默认是最终的,所以用户可能会单击保存,然后在下一页上看不到他们的新项目 - 这可能会导致混淆,如果他们输入了很多信息会有点恐慌。

让后端接受一个额外的参数来在“getProjects”调用中说“强烈一致的读取”是一个很好的模式吗?或者还有其他方法可以解决这个问题吗?

标签: amazon-web-servicesamazon-dynamodbserverless

解决方案


在插入或更新项目后执行一致读取实际上是一种很好的模式。在描述CRUD 操作时,可以在 DynamoDB 文档中看到一个示例

我过去在使用 Web 应用程序时所做的一个常见模式是通过重定向到 GET 来结束任何 POST/PUT 请求,在该 GET 中我启用了强一致性。这在插入后立即为列表提供了强一致性。在大多数情况下,用户在插入后什么都不做,导航到应用程序的不同部分,或者单击查看项目的详细信息。

假设用户单击列表中的项目以查看详细信息。从理论上讲,它可能还没有传播(尽管很有可能会传播,因为 DynamoDB 复制往往非常快)。我过去使用的另一种模式是我发出最终请求的详细信息页面,但如果我没有得到任何结果,而不是直接将未找到的返回给最终用户,我会在读取后重试一致性。如果它没有返回任何结果,那么我会返回 not found,但如果这只是一个传播问题,那么你很高兴。


推荐阅读