Amazon dynamodb 如何在dynamodb中为时间序列数据设置一个有效的模式,从中检索始终最新的变量

Amazon dynamodb 如何在dynamodb中为时间序列数据设置一个有效的模式,从中检索始终最新的变量,amazon-dynamodb,boto3,Amazon Dynamodb,Boto3,首先,我是DyanmoDB的新手,希望将其用于一个小的辅助项目来熟悉它。我开始阅读一些在线文档和博客。然而,有些东西我还不完全清楚 用例:我只想在DynamoDB中存储两个(目前)时间序列。一个是通货膨胀率,一个是利率。我将有一个lambda函数,它不断地从web获取这些数据,并将每个数据的新值存储到DynamoDB。然后,我的应用程序始终使用此费率的最新可用值。它们的来源频率相当缓慢,不比每周多 为此,我想使用以下模式(serverless.yml) 这是一个合理的模式/设置选择。我不太确定的

首先,我是DyanmoDB的新手,希望将其用于一个小的辅助项目来熟悉它。我开始阅读一些在线文档和博客。然而,有些东西我还不完全清楚

用例:我只想在DynamoDB中存储两个(目前)时间序列。一个是通货膨胀率,一个是利率。我将有一个lambda函数,它不断地从web获取这些数据,并将每个数据的新值存储到DynamoDB。然后,我的应用程序始终使用此费率的最新可用值。它们的来源频率相当缓慢,不比每周多

为此,我想使用以下模式(serverless.yml)

这是一个合理的模式/设置选择。我不太确定的是
SourcedOn
属性使用什么。键入的
Date
是否正确,还是应使用
20190101
格式的整数?。最后一个问题也是在使用python进行查询时提出的,我总是而且只对读取每个
RateType


有没有办法用boto检索(不知道确切日期)最后一次来源的费率?这样的查询会是什么样子?

这是一个合理的模式

我建议使用日期或时间戳字符串作为
SourcedOn
属性(例如
2019-10-22
2019-10-22T12:35:00Z
),因为这是一种标准格式,而且如果您决定将频率更改为每小时,例如,您所需要做的就是从日期切换到时间戳,它不会打乱你的任何疑问。字符串对于日期也是有利的,因为使用查询查找给定年份或月份的所有值非常容易。最后,已经有一些库可以处理转换,因此您不必编写代码将日期序列化为整数或字符串

要检索最新日期,查询的KeyConditionExpression应该只有哈希键值。在查询请求中,还应设置
ScanIndexForward=false
Limit=1

 resources: # CloudFormation template syntax from here on.
      Resources:
        usersTable: 
          Type: AWS::DynamoDB::Table
          Properties:
            TableName: RatesTable
            AttributeDefinitions:
              - AttributeName: RateType
                AttributeType: S
              - AttributeName: SourcedOn
                AttributeType: Date
              - AttributeName: Tenor
                AttributeType: S
              - AttributeName: Rate
                AttributeType: N
             KeySchema:
               - AttributeName: RateType
                 KeyType: HASH
               - AttributeName: SourcedOn
                 KeyType: RANGE