【问题标题】:How to improve R Shiny dashboard slowed by sql queries and big data processing [closed]如何改进因 sql 查询和大数据处理而减慢的 R Shiny 仪表板 [关闭]
【发布时间】:2018-12-16 16:38:04
【问题描述】:

我正在为我工​​作的公司构建一个闪亮的仪表板,用于显示公司的关键指标。仪表板当前加载速度非常快,但随着时间的推移,仪表板变得越来越慢,因为我正在查询的数据库中的表(我为此使用 RMySQL)变得越来越大(它随着时间的推移收集更多数据)。

我已尽最大努力使 SQL 查询运行得更快(利用索引列、重新分区等),但仅此而已。查询数据后,仪表板需要处理该数据,随着时间的推移,由于数据量的增加,处理速度也会变慢。

有没有办法解决这个问题?我一起工作的一位工程师建议在 R 中使用 Ajax 函数,这将允许仪表板一开始只加载一部分数据(即过去 2 个月),足以填充仪表板的图表,并且在后台将继续加载其余数据(在单独的过程中?我不确定)。但是,我不知道如何从这里开始。 (使用什么库,如何调用查询并在ajax函数中运行后续数据处理代码等)

对此的任何想法将不胜感激。

(旁注:我的查询将花费足够长的时间,以至于当我尝试从 AWS EC2 实例启动闪亮仪表板时,它会导致闪亮的仪表板“与服务器断开连接”。我通过在“reactivePoll”中调用查询来解决这个问题我确信这可能不是最好的方法。)

编辑 1:仪表板还从 API 端点获取一些数据,我不确定这会如何影响使用任何类似 ajax 的操作或函数来改进我的仪表板。

【问题讨论】:

标签: sql r shiny rmysql


【解决方案1】:

一种选择是使用 fst 包并以 fst 文件格式存储 sql 数据。然后前端应用程序将继续从 fst 文件中提取数据,而不是访问 sql server。

【讨论】:

  • 谢谢。因此,为了澄清起见,您建议首先从数据库中查询所有数据(例如,自 2017 年 1 月以来),将其存储为 fst 文件格式,然后在预处理之前从 fst 文件中提取数据?但是,例如查询 2017 年 1 月的所有数据是仪表板持续变慢的主要原因,所以我需要避免这种情况。
【解决方案2】:

其实我不久前也遇到过同样的问题。根据仪表板的复杂性,可以通过在一夜之间计算所有数据聚合并将其存储在 Shiny 从中选择的临时表中来克服仪表板速度慢的问题。 您不必每次都进行计算,而是使用 R 或 Python 手动创建所有可能的聚合,然后使用 crontab 每天/每小时将结果上传到临时数据库。 这样,R Shiny 仪表板就变成了可视化数据的工具。

同样,这取决于仪表板的复杂性以及您是否有一个可以存储聚合的临时数据库/表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 2010-10-22
    • 2017-09-27
    • 2021-01-04
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多