我应该使用哪些AWS服务进行多个小型CSV文件数据查询(具有成本效益的方式)

时间:2017-05-18 08:59:54

标签: postgresql amazon-s3 aws-lambda aws-sdk amazon-athena

我的Postgres数据库每日增加数据(每天增加约500行),格式如下

Timestamp,Val1, Val2, Val3, Val4, Val5
--------------------------------------------
1494410340000,1360,1362,1359.2,1354.2,28453
1494410340000,1360,1362,1359.2,1354.2,28453
1494410340000,1360,1362,1359.2,1354.2,28453

每一天结束,我都可以将这些数据作为CSV文件写入AWS S3 每个CSV文件包含当天上述格式的数据。 10May.csv,11May.csv 12May.csv等等。

这些文件各不为25 KB。

我想在AWS中存储上述数据,并允许客户端直接过滤N行

例如:客户可以在 10月10日上午 11月3日下午3点之间请求数据

基本上我需要在多个CSV文件上模仿这个查询:

select * from allcsvdata where timestamp between Ts1 and Ts2

到目前为止我发现的相关事项:

  1. AWS Athena - >读取csv并查询然后返回结果[min charge for 每次扫描10MB :(]
  2. AWS Gateway - > AWS Lambda fn - >从S3读取文件 并返回结果
  3. 对这种情况有什么好办法。 70%的查询需要多天数据[读取多个csv文件]。

    那么我应该将所有数据附加到单个文件中并使用Athena吗?

    或者我应该获得带有presto的EC2?

    或其他适合此需求的架构?

    我愿意接受建议,如果需要任何其他细节,请告诉我?

1 个答案:

答案 0 :(得分:2)

如果您可以使用亚马逊雅典娜,那么它肯定是最简单的服务 - 没有服务器,闲置时不收费,除了已经存在于Amazon S3中的产品外,不收取任何费用。

不要担心10MB的最低费用。价格为5美元/ TB,最低费用为10MB,查询的最低费用低于0.00005美元。我不会抱怨这个!

Athena不需要将您的数据放在一个文件中 - 它可以读取给定路径中的所有文件。如果您的数据大小增加,您可以将其存储在更高存储效率的格式(例如gzip)中,因为Athena会对从磁盘读取的数据量收费,因此压缩数据会更便宜。