来自SQL背景,我理解NoSQL的高级概念,但仍试图翻译一些基本的使用场景。我希望有人可以提供帮助。
我的应用程序只记录一天中每一秒的位置,时间戳和特征。所以我们最终得到3个基本列:
1)位置 2)时间戳 3)和温度
(所有字段均为数字,我将时间戳存储为 纪元 ,以便进行简单的范围查询)
我设置了dynamodb,其中location为主键,timestamp为sortkey,temp为属性。这导致位置和时间戳上的复合键,允许每个位置具有其自己的唯一时间戳,但不允许任何单个位置具有多个相同的时间戳。
现在出现了现实问题:
那你将如何解释第二种情况?这是我被挂断了...这是我们进入二级索引和类似的事情吗?对于那些比我聪明的人,你会怎么处理这个?
先谢谢你的帮助! -D
答案 0 :(得分:1)
您无法查询dynamodb中的值范围。您可以查询属于某个值(散列键)
的一系列值(范围键)如果这是表键,本地二级索引键或全局二级索引(二级索引为您提供另一个查询选项,则无关紧要。)
回到你的场景:
如果时间戳以秒为单位并且您希望获得2个时间戳之间的所有记录,那么您可以添加另一个字段' min_timestamp'。 此字段可以是您的全局辅助哈希键,时间戳将是您的全局辅助范围键。
现在您可以获取在某一分钟内记录的所有记录。 如果你想要一个分钟范围,那么你需要执行X查询(如果X是分钟范围)
您还可以添加其他字段' hour_timestamp' (该哈希键包含特定小时内的所有记录)并继续... - 但这种方法非常危险 - 您将在同一时间点使用相同的哈希键更新许多记录,并且您可以获得许多吞吐量错误...