我看到DynamoDB基本上限于three data types:String,Number和Binary . 这似乎留下了两个存储日期或时间戳的选项:
809 String 的8601日期/时间格式或Unix时间戳
999 Number 的Unix时间戳
我需要使用此日期/时间戳作为范围键并使用scanIndexForward来“排序”结果 . 是否可以说哪种方法更有效?
我看到DynamoDB基本上限于three data types:String,Number和Binary . 这似乎留下了两个存储日期或时间戳的选项:
809 String 的8601日期/时间格式或Unix时间戳
999 Number 的Unix时间戳
我需要使用此日期/时间戳作为范围键并使用scanIndexForward来“排序”结果 . 是否可以说哪种方法更有效?
2 回答
我不一定更有效率,但是使用Unix时间戳作为范围键我们取得了很大的成功 . 对于查询来说速度很快(在20ms的延迟下,有时不到10ms),我们可以使用
scanIndexForward
标志对"earliest to latest"或"latest to earliest"进行排序 .缺点是,在查看原始表时,很难一目了然地比较两个时间戳,但很容易将时间戳转换为您选择的语言的日期类型 .
我刚刚在我的一个DynamoDB表上做了一个DescribeTable,并注意到DynamoDB本身将表的CreationDateTime存储为UNIX时间戳浮点数 . 我猜他们这样做是有原因的 .