我们正在开发一个在postgres中存储时间序列数据的应用程序。我们的ETL将数据移动到每天进行红移(大约10亿条记录)。我们的分析仪表板服务器从redshift查询这些数据,并在仪表板中呈现条形图(仅管理员看到仪表板而不是最终用户)。
现在,我们也希望使条形图也可供应用程序用户使用。有10000多个用户,他们应该可以随时在应用中查看条形图。
在这种情况下,我们可以使用redshift吗? Redshift可以处理大量并发查询吗?
答案 0 :(得分:2)
对于大量并发查询,Amazon Redshift不是明智的选择。
如果您有许多潜在的并发用户想要查看此数据,建议您运行常规作业,以查询此信息并将结果缓存在某个地方。然后,超过1万名用户可以检索缓存的结果。
常规过程可能每分钟或每小时运行一次,或者您希望数据多久更新一次。
缓存的结果可以存储在缓存服务器中,也可以存储在处理请求的服务器中的RAM中。或者,只需生成条形图并将其存储在S3中,然后让客户直接从S3请求条形图。这提供了一个规模极小的解决方案,几乎不需要基础架构。如果您希望应用程序生成图表,则只需将查询的原始结果存储在S3中,然后让应用程序下载即可。
答案 1 :(得分:0)
由于您的问题很广泛,您将获得基于意见的答案。 我认为您应该遵循以下步骤。
在每个数据库/应用程序中,一切都带有限制,例如Amazon-Redshift
。
以下是有关这些限制的官方文档。 https://aws.amazon.com/premiumsupport/knowledge-center/manage-connection-limits-redshift/ https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html
在Redshift
中,可以与集群建立的并发用户连接数为500
。达到限制后,后续的连接尝试将失败,并显示错误“非引导用户超出了连接限制500”。 此限制不能提高/提高。
为获得最佳性能,建议进行15个并发查询。
因此,最好使用第三方缓存引擎来存储结果并从那里显示仪表板,而不是直接从Redshift
显示仪表板。
更新:- 根据@JonScott的评论突出显示一些其他指针。
可以根据应用程序的特定需求及时实施缓存,并且您可以在某个地方使用已存储的结果(缓存引擎/其他表可能只是将数据分组等)
希望这会给您一些想法。