Amazon dynamodb DynamoDB每个分区的顶级项

Amazon dynamodb DynamoDB每个分区的顶级项,amazon-dynamodb,Amazon Dynamodb,我们对DynamoDB还不熟悉,正在努力完成一项看似简单的任务 它实际上与股票无关(它是关于记录机器随时间变化的结果),但股票例子是我能想到的最简单的例子,它说明了我们面临的目标和问题 两种查询场景是: 给定股票符号的所有历史价值在我看来,有一种方法相当简单 与其使用GSI,不如使用(几乎)完全相同模式的两个表。两者的哈希键都应该是symbol。它们都应该具有力矩和值。选择一个表作为股票当前,另一个表作为股票历史库存当前没有范围键股票历史使用时刻作为范围键 无论何时编写项目,都要将其写入两个表

我们对DynamoDB还不熟悉,正在努力完成一项看似简单的任务

它实际上与股票无关(它是关于记录机器随时间变化的结果),但股票例子是我能想到的最简单的例子,它说明了我们面临的目标和问题

两种查询场景是:


  • 给定股票符号的所有历史价值在我看来,有一种方法相当简单

    与其使用GSI,不如使用(几乎)完全相同模式的两个表。两者的哈希键都应该是
    symbol
    。它们都应该具有
    力矩
    。选择一个表作为
    股票当前
    ,另一个表作为
    股票历史
    <代码>库存当前没有范围键<代码>股票历史使用
    时刻
    作为范围键

    无论何时编写项目,都要将其写入两个表。如果需要两个表之间的强一致性,请使用TransactionWriteItems api

    如果您的数据可能出现无序,您可以添加一个ConditionExpression,以防止
    stocks current
    中的较新数据被无序数据覆盖


    读取操作非常简单,但我还是要说明它们。要获取所有内容的最新值,请扫描
    stocks current
    表。要获取股票的历史数据,请查询没有范围键条件的
    stocks historical

    谢谢,;我们最终写了两个代表历史值和当前值的表。它让我想起了即使它不完全一样。我们在这里的需求在所有细节上都是超级基本的,所以我们可以在从SQS获取它们之后在Lambda中使用write-to-two-tables操作,但它不适合更健壮的东西。我应该在这里更新,但不认为这是一个很好的解决方案。不管怎样,我来看看TransactionWriteItems。再次感谢。