Amazon web services 在AWS上生成关于数据量的高效快速报告

Amazon web services 在AWS上生成关于数据量的高效快速报告,amazon-web-services,amazon-dynamodb,amazon-redshift,amazon-rds,Amazon Web Services,Amazon Dynamodb,Amazon Redshift,Amazon Rds,我真的很困惑如何或什么AWS服务用于我的案例 我有一个存储用户交互事件的web应用程序。目前,这些事件存储在RDS表中。每个事件包含大约6个字段,如时间戳、事件类型、用户ID、页面ID等。目前,我在每个帐户模式上有数百万条事件记录。当我试图用这些原始数据生成报告时,报告速度非常慢,因为我在很长一段时间内进行复杂的聚合查询。在RDS上生成30天时间段的报告可能需要4分钟 有没有办法让这些报告运行得更快?我曾考虑将事件存储在DynamoDB上,但我无法对数据运行如此复杂的查询,也无法执行任何基于属性

我真的很困惑如何或什么AWS服务用于我的案例

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

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


是否有良好的服务组合来实现这一点?可能使用红移、EMP、Kinesis?

我通常的解决方案是使用一组例程,将聚合结果汇总并存储到其他RDS表中的不同级别。您存储的这些事务性信息在记录后不太可能更改,因此,例如,如果您发现自己每天/每周/每月运行各种数据片段的汇总,请运行查询并存储这些结果,而不一定是您需要的最终级别,但在一个显著减少最终汇总的行数的级别上。例如,有一个每天汇总一行eventtype、userid和pageId的daily表,而不是每天汇总一行event或每小时汇总一行—您需要找出最符合逻辑的汇总,但您明白了—目标是在减少原始数据量的级别上预汇总,但仍然为您提供了足够的灵活性来提供报告


只要你一直保持粒度/事务性数据不变,你就可以回到粒度/事务性数据,但是每次你想使用这些数据时,不断地计算相同的结果并不能获得多少好处。

我认为红移是你的解决方案

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


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

是的,存储中间结果以加速最终结果是一种方法!谢谢E.J的详细回答。我担心在我的情况下,保存聚合将更具挑战性。让我描述一下这个案例。我的应用程序允许客户管理在线商店。我的一些客户在他们的帐户上有大约百万注册产品,以及数以吨计的用户交互,大约每月5000万次!如果我为每个产品的每个帐户保存每日聚合,如果报告是在选定日期之间生成的,我必须这样做,那么对于大帐户,我每天会有100万条新记录!这将立即阻塞我的RDS实例!包括您正在RS?上尝试的一些示例查询可能也很有用。我正在做类似的事情,发现在我的示例中,我以前的DBs MySQL查询运行得相当慢,直到重新写入并重新分区数据。对我来说,超过100万行的聚合在我们的集群上大约需要10秒。也许你不需要离开。我正在一个聚合上运行一个聚合。例如,每个交互记录都包含以下字段:会话、类型、时间戳、产品。首先,我选择type=N且时间戳介于T1和T2之间的所有记录,然后按会话和产品进行聚合和分组。然后我将结果再次汇总为具体的比较条件。问题很重,谢谢你的回答。我读了一些关于Amazon RedShift的文章,我注意到这是一个非常有效的工具,用于对大量数据进行复杂查询。问题在于定价。我每天在DynamoDB上收集大约100万个新数据项。每天都在一张新桌子上。若我每天执行一个附加到红移表中的操作,我会在红移表上得到大量的数据,这是非常昂贵的。如果我是你,我就试试看。将所有数据加载到它,看看它有多大。你会感到惊讶,因为如果你的数据中有很多类似信息的列,比如事件,那么压缩是非常糟糕的。0.5Gb csv统计文件只能使用30或50mb的存储空间。你只需花一两个小时的红移时间就可以测试它。谢谢你!建议在插入红移之前对数据进行非规范化处理;这是常见的吗?我本以为,因为红移非常有效,我们可以在红移内部运行复杂的连接查询来进行非规范化。我试图弄清楚在代表关系的CSV上执行转换步骤是否很常见 在这些CSV被加载到Redshift之前的DB表,您的评论表明这是复杂关系的常见做法。谢谢