1

我的 Postgres DB 具有以下格式的每日增加数据(每天添加约 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行

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

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

select * from allcsvdata where timestamp between Ts1 and Ts2

到目前为止我发现的相关内容:

  1. AWS Athena -> 读取 csv 并查询然后返回结果 [每次扫描 10MB 的最低费用 :(]
  2. AWS Gateway -> AWS Lambda fn -> 从 S3 读取文件并返回结果

对于这种情况有什么更好的方法。70% 的查询需要多天的数据[读取多个 csv 文件]。

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

或者我应该得到一个带有 presto 的 EC2 吗?

或者任何其他适合这种需求的架构?

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

4

1 回答 1

2

如果您可以使用 Amazon Athena,那么它肯定是最简单的服务——没有服务器,空闲时不收费,除了 Amazon S3 中已有的内容外,不收取存储费用。

不用担心 10MB 的最低费用。以 5 美元/TB 和 10MB 的最低费用计算,查询的最低成本低于 0.00005 美元。我不会抱怨的!

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

于 2017-05-18T16:57:14.100 回答