Java 使用DynamoDB处理具有可视化目标的时间序列数据

Java 使用DynamoDB处理具有可视化目标的时间序列数据,java,amazon-web-services,time-series,data-visualization,amazon-dynamodb,Java,Amazon Web Services,Time Series,Data Visualization,Amazon Dynamodb,有人建议我研究DynamoDB来存储timeseries数据,但鉴于我的最终目标是数据可视化,所以我不太确定 我有传感器,每10分钟发送一次数据,我想在一些图表中显示数据,默认情况下每周查看一次(每周1008个数据点(日期时间/值))。假设我提供10000次读取/秒(AWS“默认”最大值),并假设1条记录可以容纳1个容量单位(1kb) 除了东西越来越贵,这是否意味着我甚至不能同时支持10个客户?是我错了还是DynamoDB不是这项工作的合适工具?DynamoDB非常适合存储即将到来的事件数据,但

有人建议我研究DynamoDB来存储timeseries数据,但鉴于我的最终目标是数据可视化,所以我不太确定

我有传感器,每10分钟发送一次数据,我想在一些图表中显示数据,默认情况下每周查看一次(每周1008个数据点(日期时间/值))。假设我提供10000次读取/秒(AWS“默认”最大值),并假设1条记录可以容纳1个容量单位(1kb)


除了东西越来越贵,这是否意味着我甚至不能同时支持10个客户?是我错了还是DynamoDB不是这项工作的合适工具?

DynamoDB非常适合存储即将到来的事件数据,但它不应该是您使用的唯一工具。您可以将DynamoDB与其他工具集成:

  • 在DynamoDB前面放置一个缓存(例如ElasticCache),以允许从它而不是DynamoDB为您的重复查询提供服务
  • 在DynamoDB前面放置一个缓冲队列(例如SQS),允许传感器以不同速率发送报告,同时保持较低的均衡写入速率
根据您的访问模式,您还可以在DynamoDB中拥有多种格式的数据。例如,您可以有一条记录保存每个传感器一周的数据点,并且您可以每10分钟更新一次该记录,而不是仅在每个报告中添加新的记录数据。每个传感器的每周记录,可以是每日记录,也可以是每月记录,视情况而定。不过,每次读写操作只需读取1或7条或任何其他少量记录


更新了DynamoDB文档中关于DynamoDB表格设计的更多链接:

好东西!我喜欢根据我的访问模式更新记录的想法,我也可以在以后做一些其他的聚合。你有进一步阅读的参考资料吗?关于前面的队列,我需要一个持久化的队列,但是两次持久化数据(首先是队列,然后是dynamo)不是太过分了吗?我已经更新了DynamoDB关于访问模式和表设计的文档链接。关于队列“开销”,这是一个非常小的增加,有很大的好处——拥有松散耦合的系统对于良好的系统架构非常重要。它将为您节省资金(较低的DynamoDB配置吞吐量)并增加灵活性(多个读取器、模式更改…),也许可以检查一下这一点,以便了解为时间序列设计Dynamo模式的方法。