Database 如何设计OLAP系统来支持每小时(甚至更细粒度)API使用统计的仪表板

Database 如何设计OLAP系统来支持每小时(甚至更细粒度)API使用统计的仪表板,database,amazon-web-services,amazon-redshift,etl,data-warehouse,Database,Amazon Web Services,Amazon Redshift,Etl,Data Warehouse,在后台,我收集应用程序的API使用日志(请求、响应、延迟、用户ID等)。典型的一天将积累2-3亿条记录。这些数据目前以拼花格式存储在s3上,我使用AWS Athena进行特别查询。我想构建一个基于web的仪表板,显示每个客户的指标;一个示例查询是过去6小时内按小时按客户列出的请求量。我只需要前30天的详细使用数据 理想情况下,我将继续利用AWS生态系统来实现此解决方案。我想确定的是一个大致的方向。Redshift能否在1秒左右的时间内对原始日志数据有效地计算这些类型的查询,从而使其在web上可用

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

理想情况下,我将继续利用AWS生态系统来实现此解决方案。我想确定的是一个大致的方向。Redshift能否在1秒左右的时间内对原始日志数据有效地计算这些类型的查询,从而使其在web上可用?有更好的工具吗?或者我应该考虑运行ETL和汇总类型的操作来生成这些度量,填充不同的表(可能是红移),然后使用它来服务于仪表板


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

对于这类问题,您可以采取很多方法,我将根据您的上述问题,尝试详细介绍一些您可以使用的产品

  • 对任何你能做的事情进行预处理,而不是动态计算。例如,在关键值存储中总结您的每小时指标,而不是跨大量指标进行计算。您可以有效地将这些度量存储在中并检索
  • 可以根据您的模式定义(分布键、排序键)快速返回数据,但若您正在编写单个事务,则写入的效率将不如以前。您将希望在一段时间内执行此批量操作。它需要作为一个近乎实时的解决方案来解决
  • 可以生成需要大量计算但不需要实时(即每小时或每日统计)的常用仪表板,并将其存储在中,因此速度很快,但不需要每次用户访问时都从数据库中读取
  • 用于查询数据湖,如果您将其用于大部分近实时数据,则将无法高效地向您获取数据结果。如果您使用红移,您可以使用从数据湖加入查询