生成有关AWS数据量的高效快速报告

时间:2014-03-07 12:34:09

标签: amazon-web-services amazon-dynamodb amazon-redshift amazon-rds

我真的很困惑我的案例中使用的AWS服务的方式或内容。

我有一个存储用户交互事件的Web应用程序。目前,这些事件存储在RDS表中。每个事件包含大约6个字段,如时间戳,事件类型,用户ID,页面ID等。目前,我在每个帐户架构上有数百万个事件记录。当我尝试从这些原始数据生成报告时 - 报告非常慢,因为我在很长一段时间内进行复杂的聚合查询。在RDS上生成30天的报告可能需要4分钟。

有没有办法让这些报告运行得更快?我正在考虑将事件存储在DynamoDB上,但我不能对数据运行这样复杂的查询,也不能进行任何基于属性的排序。

是否有良好的服务组合来实现这一目标?也许使用RedShift,EMP,Kinesis?

2 个答案:

答案 0 :(得分:2)

我认为Redshift是您的解决方案。

我正在使用每天生成大约2.000.000个新行的数据集,并且我对它进行了非常复杂的操作。您可以提前使用Redshift排序键,并按日期订购数据。

此外,如果您执行复杂的聚合函数,我建议对所有信息进行非规范化,并将其仅插入一个包含所有数据的表中。 Redshift使用非常高效且自动的列压缩,您不会遇到数据集大小的问题。

答案 1 :(得分:1)

我对此类问题的通常解决方案是将一组例程汇总并将汇总结果存储到其他RDS表中的各个级别。您存储的此交易信息一旦记录就不会发生变化,因此,例如,如果您发现自己每天/每周/每月汇总各种数据片段,请运行查询并存储这些结果,而不一定是您将需要的最终级别,但其级别会显着减少进入这些最终汇总的行数。例如,有一个每日表,每天总结一次eventtype,userid和pageId,而不是每个事件一行(或每小时一行而不是一天) - 你需要找出最合理的汇总到make,但你明白了 - 目标是在可以减少原始数据量的级别上进行预先总结,但仍然可以为报告提供足够的灵活性。

只要您保留它,您就可以随时返回到粒度/事务数据,但每次要使用数据时不断计算相同的结果都无法获得。