【问题标题】:how do you design an OLAP system to power a dashboard of hourly (or even more granular) API usage stats您如何设计一个 OLAP 系统来支持每小时(或更精细)API 使用统计信息的仪表板
【发布时间】:2020-06-20 11:35:11
【问题描述】:

在后台,我收集应用程序的 API 使用日志(请求、响应、延迟、用户 ID 等)。典型的一天将积累 200-3 亿条记录。这些数据目前以 parquet 格式存储在 s3 上,我使用 AWS Athena 进行临时查询。我想构建一个基于 Web 的仪表板,显示每个客户的指标;一个示例查询是过去 6 小时内按小时按客户的请求量。我只需要过去 30 天的那种详细使用数据。

理想情况下,我会继续将 AWS 生态系统用于此解决方案。我试图确定的是一个大方向。 Redshift 能否在 1 秒左右的时间内针对原始日志数据有效地计算这些类型的查询,以使其在 Web 上可用?有没有更好的工具?或者我应该查看运行 ETL 和汇总类型操作以生成这些指标,填充不同的表(可能在 redshift 中),然后使用它来为仪表板提供服务?

欢迎提出任何想法,甚至建议阅读 - 谢谢。

【问题讨论】:

    标签: database amazon-web-services amazon-redshift etl data-warehouse


    【解决方案1】:

    您可以针对此类问题采取一些方法,我将根据您的上述问题尝试详细说明您可以使用的一些产品。

    • 预处理任何你能做的事情,而不是即时计算。总结您的每小时指标,例如在键值存储中,而不是跨大量指标进行计算。您可以有效地将这些指标存储在 DynamoDB 中并进行检索。
    • Redshift 可以根据您的架构定义(分布键、排序键)快速返回数据,但是如果您正在编写单个事务,则写入效率将不高。您将希望在一段时间内执行此批量操作。它需要作为近乎实时的解决方案来解决。
    • 需要大量计算但不需要实时的常用仪表板(即每小时或每天的统计数据)可以生成并存储在S3,因此它会很快但不需要每次都从数据库中读取用户。
    • Athena 用于查询数据湖,如果您将其用于大部分近实时数据,则将数据结果提供给您的效率不会那么高。如果您使用 Redshift,您可以使用 Redshift Spectrum 加入来自数据湖的查询。

    【讨论】:

      猜你喜欢
      • 2014-01-25
      • 2015-02-28
      • 2011-04-25
      • 1970-01-01
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      相关资源
      最近更新 更多