我们正在构建一个web应用程序,让客户能够根据当前流入ElasticSearch的事件来洞察他们的活动。客户是向人们发送消息的组织。
有人担心,如果要求托管这些数据三年,就会产生非常大的存储量,并且在使用Elasticsearch的情况下实现成本很高。
另一种方法是将每天的数据处理成存储在S3中的report CSV,并使用Amazon Athena之类的工具执行查询。我们的应用程序是否可以向Athena发送即席查询,以响应web浏览器请求?这不太可能一直产生大量的请求,但我不确定延迟会是什么样子。
发布于 2020-08-12 00:57:40
雅典娜没有服务器。您可以快速查询数据,而无需设置和管理任何服务器或数据仓库。只需指向亚马逊S3中的数据,定义模式,然后使用内置的查询编辑器开始查询。
Amazon Athena会自动并行执行查询,因此大多数结果都会在几秒/分钟内返回。
发布于 2020-08-12 17:03:52
是的,雅典娜将是这个用例的一个可能的解决方案-如果做得好,它也可以相当便宜。
Athena不是一个低延迟的查询引擎,但对于报告而言,它通常已经足够好了。在不了解更多信息的情况下无法确定,但如果做对了,我们讨论的是低个位数的秒数。
您可以通过不同的方式来实现这一点,要么按您说的做,每天生成一个CSV,根据需要存储这些CSV,然后根据需要对它们运行查询。从您的描述来看,这些CSV听起来已经是聚合了,我假设它们将大大少于每个客户每天1兆字节。如果您按客户和月份进行分区,您应该能够以秒为单位运行任意时间段的查询。
另一种方法是将所有数据存储在S3上,并对整个数据集运行查询。当您将数据流式传输到ElasticSearch时,也会将其流式传输到S3。根据您如何做到这一点,您可能需要一些Lambda函数形式的ETL,用于按客户和时间(日或月,取决于卷)对数据进行分区。然后,您可以对整个历史数据集运行Athena查询。缺点是查询速度较慢(大多数查询是两位数秒,但我不知道您的数据量),但优点是您可以查询的内容具有完全的灵活性。
有了关于用例细节的更多详细信息,我可以帮助您了解细节。
https://stackoverflow.com/questions/63362699
复制相似问题