我正在使用DynamoDB将我的设备事件(采用JSON格式)存储到表中以进行进一步分析,并使用扫描API在UI上显示结果集,这需要
以上情况让我想到了其他一些没有SQL数据库的解决方案,请协助我解决上述问题。
答案 0 :(得分:5)
考虑DynamoDB的正确方法是作为支持索引的键值存储。
" Amazon DynamoDB支持键值数据结构。每个项目(行)都是一个键值对,其中主键是表中项目唯一必需的属性,并唯一标识每个项目。 DynamoDB是无架构的。每个项目可以包含任意数量的属性(列)。除了查询主键外,还可以使用全局二级索引和本地二级索引查询非主键属性。" https://aws.amazon.com/dynamodb/details/
表格可以有2 types of keys:
您为设备事件表设置了哪种主键?我建议您对数据进行非规范化(即从json中提取特定属性)并在这些属性上构建其他索引你要排序和聚合的日期:日期,序列号等。如果我知道你在桌面上设置了什么样的主键,我可以指出你正确的方向来建立这些索引,这样你就可以得到什么你需要通过query method。 scan method对您来说效率低下,因为它会读取表格中的每一行。
最后,关于你的"限制偏移"问题,我认为您正在寻找ExclusiveStartKey,这将由DynamoDB在您的查询回复中返回。
答案 1 :(得分:2)
ExclusiveStartKey将帮助您进行分页。没有必要依赖响应中的LastEvaluatedKey。只有当您获得的MB数据超过MB时,您才能获得LastEvaluatedKey。如果LIMIT页面大小使得返回的总数据大小小于1 MB,则您将无法返回LastEvaluatedKey。但这并不能阻止您使用ExclusiveStartKey作为偏移量。