使用NoSQL进行数据建模(DynamoDB)

时间:2016-04-13 13:46:39

标签: amazon-dynamodb data-modeling nosql

来自SQL背景,我理解NoSQL的高级概念,但仍试图翻译一些基本的使用场景。我希望有人可以提供帮助。

我的应用程序只记录一天中每一秒的位置,时间戳和特征。所以我们最终得到3个基本列:

  

1)位置       2)时间戳       3)和温度

(所有字段均为数字,我将时间戳存储为 纪元 ,以便进行简单的范围查询)

我设置了dynamodb,其中location为主键,timestamp为sortkey,temp为属性。这导致位置和时间戳上的复合键,允许每个位置具有其自己的唯一时间戳,但不允许任何单个位置具有多个相同的时间戳。

现在出现了现实问题:

  1. 查询每个网站的时间范围 (工作正常)
  2. 查询任何特定时间范围会返回所有位置的所有临时值 (赢得工作)
  3. 那你将如何解释第二种情况?这是我被挂断了...这是我们进入二级索引和类似的事情吗?对于那些比我聪明的人,你会怎么处理这个?

    先谢谢你的帮助! -D

1 个答案:

答案 0 :(得分:1)

您无法查询dynamodb中的值范围。您可以查询属于某个值(散列键)

的一系列值(范围键)

如果这是表键,本地二级索引键或全局二级索引(二级索引为您提供另一个查询选项,则无关紧要。)

回到你的场景:

如果时间戳以秒为单位并且您希望获得2个时间戳之间的所有记录,那么您可以添加另一个字段' min_timestamp'。 此字段可以是您的全局辅助哈希键,时间戳将是您的全局辅助范围键。

现在您可以获取在某一分钟内记录的所有记录。 如果你想要一个分钟范围,那么你需要执行X查询(如果X是分钟范围)

您还可以添加其他字段' hour_timestamp' (该哈希键包含特定小时内的所有记录)并继续... - 但这种方法非常危险 - 您将在同一时间点使用相同的哈希键更新许多记录,并且您可以获得许多吞吐量错误...