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