Amazon Athena的用例

问题描述

我们正在构建一个Web应用程序,以允许客户基于当前流到ElasticSearch中的事件来洞察其活动。客户是向人们发送消息的组织。

有人担心,在使用Elasticsearch的情况下,托管此数据三年的需求会导致大量存储和高昂的实施成本。

另一种方法是将每天的数据处理为存储在S3中的报告CSV,并使用Amazon Athena之类的东西执行查询。 Athena是我们的应用程序可以响应网络浏览器请求发送的临时查询吗?不可能一直都产生大量请求,但我不确定延迟会是什么样。

解决方法

雅典娜是无服务器的。您可以快速查询数据,而无需设置和管理任何服务器或数据仓库。只需在Amazon S3中指向您的数据,定义架构,然后使用内置查询编辑器开始查询。

Amazon Athena自动并行执行查询,因此大多数结果在几秒钟/分钟之内返回。

,

是的,Athena将是该用例的一种可能的解决方案-正确地做它也可能相当便宜。

Athena不是低延迟查询引擎,但出于报告目的,它通常已经足够好了。在不知道更多信息的情况下无法确定地说什么,但是做对了,我们说的是低个位数秒。

您可以用不同的方法来处理此问题,或者按照您说的做,每天生成一个CSV,将它们存储所需的时间,并根据需要对它们进行查询。从您的描述来看,这些CSV听起来已经很合算,我认为每个客户每天的CSV都大大少于1兆字节。如果按客户和月份划分,则应该能够在几秒钟内的任意时间段内运行查询。

另一种方法是将所有数据存储在S3上,然后对整个数据集运行查询。当您将数据流传输到ElasticSearch时,也将其流传输到S3。根据您的操作方式,您可能需要一些Lambda函数形式的ETL,该ETL将每个客户和时间(天或月,具体取决于数量)对数据进行分区。然后,您可以对完整的历史数据集运行Athena查询。不利之处在于查询速度较慢(大多数查询为两位数秒,但我不知道您的数据量),但不利之处在于可以灵活查询所有内容。

有关用例细节的更多详细信息,我可以为您提供详细信息。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...