【问题标题】:Get the Max Date / Get the last added item in DynamoDB获取最大日期/获取 DynamoDB 中最后添加的项目
【发布时间】:2013-12-17 01:15:42
【问题描述】:

嗨,这是我的表架构

联系人表:

"KeySchema": [{
    "AttributeName": "DateTimeRetrieved",
    "KeyType": "HASH"
},{
    "AttributeName": "Id",
    "KeyType": "RANGE"
}]

我的主键将 DateTimeRetrieved 作为主键。我想检索输入到表中的最新日期时间。它也等于最后添加的项目日期时间。

有没有办法查询这个? .谢谢!

【问题讨论】:

    标签: c#-4.0 nosql amazon-dynamodb


    【解决方案1】:

    不建议这样做:如果你的表很小,你可以随时Select所有数据并在应用程序级别对其进行排序。

    尝试在哈希键中查找顺序有点滥用。排序是在范围和二级索引上完成的。要有效地使用 DynamoDB,您应该将数据建模为“桶”(哈希键)并在第二级使用 Query 提问。

    在不知道您实际建模的内容的情况下很难提供帮助,但值得一读的是Local Secondary Indexes,它甚至可以让您对属性进行查询。 使用 range / LSI,您可以对行进行排序并查询“最后一个”。

    【讨论】:

    • 感谢您的洞察力。我正在编写一个查询外部数据库并根据 DynamoDB 保存项目的批处理过程。我必须将 pimarykey 创建为 LastDateTimeRetrieved,因为批处理过程每隔一定小时数就会运行一次,并将整个内容保存在 datetimehash 键中。下次批处理运行时,它应该从 Dynamodb 获取上次保存的日期时间/最大日期时间,以查询外部数据库。我认为每次将项目放入 dynamodb 时仅将 lastdatetime 保存在单独的表中可能是最好的选择.. ??
    • 是的,我相信将它保存在别处而不是尝试使用 dynamodb api 调用来计算它是一种更好的方法。
    【解决方案2】:

    我会将日期放在范围内,以便使用“startsWith”参数执行查询。

    例如:

    键:YYYY-MM 中的日期 范围键:DD + Id中的日期

    因此,您可以发出类似“给我 2013-12 年以“0”开头的所有项目的查询(这将为您提供从 2013 年 12 月 01 日到 -09 日的所有项目)。

    然后在应用层面,就可以解析ID了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      相关资源
      最近更新 更多