Time DynamoDB设计,可储存时间和小时数

Time DynamoDB设计,可储存时间和小时数,time,range,amazon-dynamodb,Time,Range,Amazon Dynamodb,我有一个存储时间范围的要求。例如,我想知道是否每天在开始时间和结束时间之间触发事件。假设用户在早上6点到10点和下午4点到晚上8点之间登录。我计划使用以下json作为一个新属性来存储这个范围 "duration-timestamp": [ { "start_time" : "360" "end_time" : "600" }, { "start_time" : "960" "end_ti

我有一个存储时间范围的要求。例如,我想知道是否每天在开始时间和结束时间之间触发事件。假设用户在早上6点到10点和下午4点到晚上8点之间登录。我计划使用以下json作为一个新属性来存储这个范围

"duration-timestamp": [
      {
         "start_time" : "360"
         "end_time" : "600"
      }, 
      {
         "start_time" : "960"
         "end_time" : "1200"
      }
   ]
虽然我的代码可以处理这个问题,但不确定这是否是一种优雅的处理方式

注意:我无法为开始时间和结束时间创建新项目,因为我希望为单个项目捕获此时间数组

编辑1:

  • 我可以有多个类似上面提到的事件。可能是看谁只在周六和周日登录
  • 我不是在寻找质疑的方法。将添加一个gsi来实现这一点
  • 360转为早上6点。它以分钟表示
  • 逻辑将围绕此编写,因此尝试了解这是否是正确的存储方式
  • 是的,计划使用地图

我不确定360到600如何对应早上6点到10点,但除此之外——AWS在1月份发布了一个新工具——他们的AWS EC2实例调度器工具

它们所做的一件事是提供一个dynamodb表,该表允许您指定实例打开和关闭的开始和结束时间计划

它们使用稍微不同的格式,例如:

{
  "description": {
    "S": "Office hours"
  },
  "begintime": {
    "S": "14:00"
  },
  "endtime": {
    "S": "18:00"
  },
  "name": {
    "S": "office-hours"
  },
  "type": {
    "S": "period"
  },
  "weekdays": {
    "SS": [
      "mon-fri"
    ]
  }
}
并不是说AWS对所有用例都是正确的,但这里有一个内部团队研究类似于您的问题的示例,以及他们是如何解决的

也许查看他们关于此特定工具的文档将有助于您设计解决方案:


您需要更清楚地了解这些问题。您只是在寻找存储数据的方法,还是需要为这些数据编写查询,以及查询这些数据的频率。为了将其存储在DynamoDB级别,您可以使用映射列表,即持续时间时间戳的字段和内部字段(开始时间和结束时间)的映射,或者您可以将JSON字符串化并将其存储在DynamoDB中。这很有帮助。非常感谢。