【问题标题】:What is the correct way to propogate changes in connected DynamoDB tables在连接的 DynamoDB 表中传播更改的正确方法是什么
【发布时间】:2020-08-03 22:55:48
【问题描述】:

我是 Serverless 和 dynamoDB 的初学者。我的用例由两张表 Trips 和 Routes 组成。 Trips 表由这些参数{id, Route, Cost, Distance, Time} 组成。 Routes 表由这些参数 {quantity, Rate, From, To } 组成。

行程表中的成本参数由路线表中的quantity * Rate 参数计算。每次创建/编辑行程时,我都会从表中获取值并将新值存储为行程表的Cost 参数。

当有人更改 Routes 表中的 quantityrate 参数时会出现问题,我如何将此更改传播到 Trips 表?目前我每次有人更新Routes时都会更新Cost参数,有没有更有效的方法?

【问题讨论】:

  • DynamoDB 是NoSQL,它可以在Trips 表中存储json 类型,这也将节省DynamoDB 的使用成本。因此,您可以将路线的完整信息存储在Trips 表的Route 字段中。然后可以动态计算成本。
  • 另外请注意aws 建议使用尽可能少的表格。
  • @Perfect 可以创建不同种类的路线,用户也可以 CRUD 新路线,因此可以使用不同的表。此外,即使我将路线的整个字段值(来自 Routes 表)存储在 trips 的 route 字段中,这将如何传播从 Routes 表到 Trips 表中的 route 字段的路线更改?

标签: javascript node.js amazon-web-services amazon-dynamodb serverless


【解决方案1】:

您可以使用 dynamodb 流。路由表中的任何更改都可以在这些流中捕获并进行处理以更新 Trips 表中的相应对象。不幸的是,DynamoDB 不支持聚合,否则在查询对象时可能会计算成本字段,这会容易得多。

【讨论】:

    猜你喜欢
    • 2019-11-09
    • 2016-03-01
    • 1970-01-01
    • 2021-05-24
    • 2014-05-08
    • 2014-07-04
    • 2013-03-06
    • 2015-09-10
    • 1970-01-01
    相关资源
    最近更新 更多